Параметры оболочки

Опубликовано mensh - вт, 11/22/2005 - 15:35

Командная оболочка предоставляет множество механизмов для создания индивидуальных условий работы. Оболочка — не только интерпретатор команд, но и мощный язык программирования.

Параметры командной оболочки Linux

Ниже даны отдельные способы использования развитых возможностей командной оболочки для облегчения работы в системе Linux.

Предполагается, что скрипты будут исполняться командной оболочкой bash (shell Борна).

Содержание

Скрипты командной оболочки

При необходимости выполнения некоторой последовательности команд можно сократить время их ввода, сгруппировав эти команды в одну. Например, для объединения файлов chapter1 и chapter2 в файл с именем book, выдачи количества строк и печати этого файла используется последовательность из трёх команд:

$ cat chapter1 chapter2 > book
$ wc -l
$ lp book

Вместо того, чтобы вводить эти три команды с клавиатуры, их можно объединить в скрипт командной оболочки (shell script):

 

cat > makebook
#!/bin/sh
# Этот скрипт мы используем для создания и печати книги
cat chapter1 chapter2 > book;
wc -l book;
lp book

Скрипты командной оболочки — обычные текстовые файлы, создавать которые можно любыми текстовыми редакторами.

Первая строка рассматриваемого скрипта #!/bin/sh идентифицирует этот файл как скрипт и сообщает командной оболочке, что файл следует передать на исполнение программе /bin/sh, то есть самой программной оболочке.

Вторая строка является комментарием (comment), который начинается символом # и продолжается до конца строки. Комментарии командная оболочка игнорирует.

Остальные строки скрипта являются обычными командами.

Делаем файл исполняемым, давая право на исполнение скрипта лишь владельцу:

$ chmod u+x makebook

Запускаем скрипт:

$ ./makebook
4 book
request id is Printer-182 (1 file(s))

После запуске скрипта makebook содержимое файлов chapter1 и chapter2 было объединено в файле book, на экране отображено количество строк (4), содержимое файла book выведено на печать.

Переменные оболочки и окружение

Командные оболочки позволяют создавать переменные (variables), являющиеся просто некоторыми данными, имеющими имя. Ссылаться на значение переменной можно, поставив перед именем переменной знак "$".

Можно создать или установить переменную оболочки, набрав сразу за именем переменной знак "=". Переменные чувствительны к регистру. По соглашению переменные, особенно экспортируемые переменные, пишутся в верхнем регистре, но это не обязательное требование.

История команд

Bash может хранить историю команд. По умолчанию история включена. С подробностями можно ознакомится в man-страницах bash.

Вот некоторые команды, которые можно использовать для работы с историей:

history
Отображает всю историю
historyN
Отображает последние N строк вашей истории
!!
Последняя введенная команда
!N
Nая команда истории

Пути

Переменная среды PATH

При использовании ряда команд без указания полного пути до исполняемых файлов shell самостоятельно находит соответствующий исполняемый файл, используя переменную среды PATH.

Например, переменная PATH может иметь значение:

$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/lib/java/bin:/usr/lib/java/jre/bin:/usr/lib/qt/bin:.

Это список каталогов (в которых shell будет искать команду), отделяемых друг от друга двоеточием ":". При использовании команды ls, например, shell прежде всего проверяет наличие /bin/ls, затем /usr/bin/ls и т.д.

Все это экономит вам массу времени, так как вместо того, чтобы писать полное имя команды (вроде /usr/bin/ls), достаточно указать в PATH перечень каталогов, которые shell будет просматривать автоматически.

Обратите внимание, что PATH содержит ".", что означает “текущий рабочий каталог”. Это позволяет создавать shell-сценарии или программы и выполнять их как команды из текущего каталога, без необходимости указывать это прямо (как в случае ./makebook). Если каталог не указан в PATH, то shell не будет его просматривать в поиске команд, это касается и текущего каталога.

Запуск других команд

Если программа не находится в переменной PATH, то можно запустить ее, указав полный путь к программе и саму программу. Существует два вида путей:

  • абсолютные пути, начинающиеся с /;
  • относительные пути эти пути относительно текущего рабочего каталога, имя которого можно получить с помощью команды pwd. Такие команды не начинаются с /, но по крайней мере содержат один символ /.

Можно использовать абсолютные пути в независимости от текущего рабочего каталога или относительные пути, когда команда находится недалеко от текущего каталога. Существует два специальных имени, которые можно использовать в указании пути; простая точка (.) ссылается на текущий каталог, и пара точек (..), которые ссылаются на родительский каталог текущего каталога. Можно использовать тильду (~) для ссылки на свой домашний каталог. Например пользователь oleg, находясь в своем домашнем каталоге, может использовать следующие пути к одному и тому же файлу:

$ /home/oleg/mokshadharma/cron.sh
$ mokshadharma/cron.sh
$ ~/mokshadharma/cron.sh
$ $HOME/mokshadharma/cron.sh

Поделиться с друзьями