Командный интерпретатор (по-другому - оболочка, shell) в операционных системах семейства UNIX предназначен для выполнения в основном следующих функций:
· предоставление пользователю интерактивного интерфейса для общения с системой (другими словами: обработка и выполнение пользовательских команд)
· выполнение файлов, содержащих команды интерпретатора (командные файлы);
В системах UNIX (и во FreeBSD естественно) имеются несколько различных командных интерпретаторов. Наиболее популярные из них:
· sh - Bourne shell.
· csh - С-shell.
· ksh - Korn-shell.
· bash - Bourne Again shell.
Как правило, все shell находятся в каталоге /bin. Но это не обязательно. Вы помните, что когда мы рассматривали вопросы установки packages, то установили интерпретатор bash в каталог /usr/local/bin. Все установленные в системе оболочки перечислены в файле /etc/shells.
Наберите команду cat /etc/shells, и вы увидите примерно следующее:
/bin/sh
/bin/csh
/usr/local/bin/bash
Если строка в файле, в котором записаны команды интерпретатора, начинается на # , то эта строка - комментарий. Это не относится к самой первой строке файла. Она должна содержать запись, типа #!/bin/sh. Это указывает, что для выполнения команд будет вызван интерпретатор /bin/sh.
Далее рассмотрим возможности и языки командных интерпретаторов.
Базовые возможности командных интерпретаторов
Для определенности, в данной главе будем рассматривать интерпретатор bash. Если вам больше нравится работать и программировать в другой оболочке, можете в принципе пропустить изучение этой главы курса. Но замечу, что базовые возможности разных оболочек примерно одинаковые.
Переменные и подстановка значений
Все переменные в языке shell - текстовые. Их имена должны начинаться с буквы и могут состоять из латинских букв, цифр и знака подчеркивания (_). Bash поддерживает как простые переменные, так и массивы. Для установки переменной используется оператор =:
Для простых переменных
<имя>=<значение>
Для массивов
<имя>[индекс]=<значение>, либо
<имя>=(<значение1> <значение2> : <значениеN>), либо
Чтобы воспользоваться значением переменной, надо перед ней поставить символ $. Можно также заключить переменную в фигурные скобки {}.
Например:
# hour=14
# echo $hour
14
# hourth=24
# echo $hourth
24
# echo ${hour}th
14th
Двойные кавычки ( " ), одиночные кавычки ( ' ), обратные кавычки ( )
Кавычки могут использоваться для создания строк. Например:
"Hello, world!"
'Good bye'
Кроме того, кавычки могут отменять действие следующих специальных символов:
~ ! # $ % ^ & * ( ) - + = \ | ; ' " , . < > ?
Значения этих специальных символов в строках, заключенных в одиночные кавычки '<строка>' отменяются. В строках, заключенных в двойные кавычки "<строка>" также отменяются значения специальных символов, за исключением ! $ \ {. Обратная наклонная черта \ также отменяет действие специальных символов.
Не путайте одиночные и обратные кавычки. Пример:
# dat=date (здесь стоят обратные кавычки)
# echo $dat
Mon Jun 05 14:17:20 2000
# dat='date' (здесь стоят одиночные кавычки)
# echo $dat
date
Конвейеры и списки
Несколько команд могут быть объединены с помощью символов канала |. В этом случае они образуют конвейер.
<команда1> | <команда2> | <команда3> :
Символ канала | соединяет стандартный вывод команды <команда1> со стандартным вводом команды <команда2> и т.д.
Каждая команда выполняется в отдельном процессе, а состояние выхода последней команды будет являться состоянием выхода конвейера.
Примеры:
# ps -ax | more
# ls -l | grep "profile"
Кроме конвейеров, команды могут объединяться в списки. Даже сами конвейеры могут быть объединены в списки. Это делается с помощью команд ; && ||.
Команда ; просто последовательно выполняет оду команду или конвейер за другой (другим):
# make depend ; make ; make install
# cat /etc/passwd | grep root ; echo "User root"
Для того, чтобы управлять выполнением следующей команды в списке в зависимости от состояния выхода предыдущей, используются команды && (логическое И) и || (логическое ИЛИ).
Примеры:
# mkdir mydir && cd mydir
В этом случае команда cd mydir будет выполнена только в том случае, если успешно (состояние выхода равно 0) завершится команда mkdir mydir.
В этом случае либо на экран будет выведено содержимое файла /home/bob/.profile, либо сообщение о том, что такого файла нет.
Перенаправление ввода-вывода
Команды и списки могут содержать операторы < и > - перенаправления стандартного ввода и стандартного вывода соответственно.
Например:
# ps -ax > /etc/proc
выводит текущее состояние процессов не на экран, а в файл /etc/proc. Если к этому моменту такого файла не было, то он будет создан. Если он существовал, то его старое содержимое будет уничтожено новой информацией.
Для то, чтобы не уничтожать содержимое файла, а добавить новую информацию (в конец файла), нужно использовать оператор >>:
# ps -ax >> /etc/proc
Кроме того, существует стандартный вывод ошибок. Он имеет дескриптор 2. Т.е. если мы не хотим получать сообщения об ошибках на стандартный вывод, то можно использовать перенаправление таким образом:
# cat /etc/proc 2>err.log (ошибки, если возникнут, будут выведены в файл err.log) либо
# cat /etc/proc 2>/dev/null (ошибки будут выведены <никуда>, их посмотреть будет невозможно).
Ввод перенаправляется аналогичным образом. Например, команда
# mail bob@com.com < /home/mail.txt
отправит содержимое файла /home/mail.txt по адресу bob@com.com.
Оператор << означает, что ввод для данной команды находится <ЗДЕСЬ>. Пример:
# mail bob@com.com << end
Hello, Bob!
end
По этой команде в тело письма войдет все, что встретится до указанного нами ограничителя ввода end.
Дистанционное
образование в Великобритании по Интернету
на Русском языке.
Создавая сайт "Дистанционное обучение в
Великобритании по Интернету" мы ставили
перед собой несколько задач. Прежде всего
сделать западное образование доступным. Во-вторых,
упор мы сделали на преодоление самого
главного барьера для русскоговорящих -
языкового. Мы финансировали перевод
учебных пособий на русский язык. В-третьих,
посредством Интернета мы можем обеспечить
высококачественную поддержку учебного
процесса. Не секрет, что в провинции найти
опытного квалифицированного преподавателя
сложно. А Интернет дает возможность общения
студента и преподавателя безотносительно
от их места жительства.
Все курсы, которые мы предлагаем
сертифицированы британскими учебными или
профессиональными заведениями. Например,
после каждого экзамена в ИБАМ вы получаете
Сертификат, после сдачи пяти экзаменов, вы
получаете Диплом или Диплом с отличием. Подробнее
здесь.
Предложение к преподавателям и специалистам в разных областях науки и техники.
Если вы имеете знания и можете поделиться ими с другими, напишите нам письмо. У нас разработана программа поддержки и спонсирования любых обучающих проектов от игры на гитаре до тренировок управления пилотируемым спутником. Подробнее
здесь.
Предложение к владельцам сайтов.
Сервер дистанционного образования "Anri education systems" приглашает все сайты имеющие отношение к любым видам обучения к объединению. Вместе мы сможем добиться гораздо больших результатов. Об этом говорит вся история человечества. Посмотрите на нее - когда люди объединялись для достижения определенных целей, то они добивались их и создавали великие империи. У нас есть средства (как физические, так и материальные), у Вас есть знания и информация. Так давайте объединимся и создадим империю образования! Мы считаем, что надо больше делать, чем говорить, по этому - к делу. Подробнее
здесь.
Дизайн, программирование.
Мы можем создать именно то, что Вы хотите, более того, обладая высоко квалифицированным персоналом и современным оборудованием, опираясь на самые передовые технологии, мы создадим для Вас по настоящему интерактивный и автоматизированный сайт. Мы занимаемся разработкой и созданием Web-страниц и Web-серверов разных стилей и содержания. Мы можем выработать концепцию и создать для Вас Web-сайт - Ваше представительство или виртуальный офис в Интернет. Мы предоставляем весь спектр услуг, связанный с созданием, размещением, рекламой и дальнейшей поддержкой, созданного WEB-сайта.
Узнать больше можно здесь.