
- •Терминал и командная строка
- •Терминал
- •Управляющие символы
- •Одновременный доступ к системе
- •Пример 2.1. Пример выполнения команды
- •Команды
- •Шаблоны
- •Перенаправление ввода и вывода
- •Программное окружение
- •Стандартные переменные окружения
- •Служебные символы
- •Процесс выполнения команды
- •Справочная подсистема
- •Страницы руководства
- •Поиск по руководствам
- •Программа info
- •Документация, поставляемая с программой
- •Интегрированные системы документации
Перенаправление ввода и вывода
По умолчанию, ввод и вывод каждой команды, выполняемой в командной строке, связан с терминалом, за которым работает пользователь. Однако командная оболочка предусматривает средства перенаправления ввода и вывода команд. Один из самых важных случаев — перенаправление ввода/вывода в файл и из файла. Для этого в командной строке используются специальные символы >, >> и <. Символы перенаправления указываются в командной строке после всех параметров команды, за символом перенаправления должно следовать имя файла, в который или из которого следует передать данные.
user@desktop ~ $ date > /tmp/date
user@desktop ~ $ cat < /tmp/date
Втр Окт 4 23:15:37 MSD 2005
user@desktop ~ $
В данном примере вывод команды date перенаправляется в файл /tmp/date (при этом если такой файл существовал, то он будет уничтожен и создан заново с нуля), а затем команде cat перенаправляется на ввод содержимое этого файла. Обратите внимание, здесь команда cat выполняется без параметров, она получает содержимое файла /tmp/date непосредственно со стандартного ввода, как если бы пользователь ввел его прямо с терминала. Обращение к файлу и передачу данных выполняет в этом случае командная оболочка.
Современные оболочки, в том числе и bash, предусматривают также специальные символы для особых случаев перенаправления, в частности, >> служит для недеструктивного перенаправления в файл (данные не заместят содержимое файла, а будут дописаны в конец) или &> для направления в один файл двух потоков: стандартного ввода и стандартного вывода ошибок.
Программное окружение
Презентация 4-04: программное окружение
В командной оболочке можно просматривать и изменять переменные окружения, которые соответствуют процессу оболочки (о переменных окружениях уже было сказано в разделе «Переменные окружения»). Программы могут исполняться по-разному, в зависимости от значений переменных окружения:
user@desktop ~ $ date
Птн Ноя 5 16:20:16 MSK 2004
user@desktop ~ $ LC_TIME=C date
Fri Nov 5 16:20:23 MSK 2004
В последнем примере пользователь присвоил некоторое значение переменной окружения в командной строке перед именем команды. Командный интерпретатор, увидев «=» внутри первого слова командной строки, приходит к выводу, что это — операция присваивания, а не имя команды, и запоминает, как надо изменить окружение команды, которая последует далее. Переменная окружения LC_TIME предписывает использовать определенный язык при выводе даты и времени, а значение "C" соответствует стандартному системному языку (чаще всего — английскому).
Для получения значения переменной окружения необходимо воспользоваться символом «$»:
user@desktop ~ $ echo $PWD
/home/user
Стандартные переменные окружения
В большинстве UNIX-систем существует набор переменных окружения, сопровождающих все процессы системы. При старте командной оболочки, инициализируется это множество системных переменных. Их можно посмотреть с помощью команды env. Некоторые из них представляют особый интерес для пользователя системы:
DISPLAY
Переменная используется графической подсистемой X11 и указывает на адрес X-сервера и номер используемого экрана (подробнее об этом будет сказано в разделе Глава 9, Графическая подсистема UNIX).
EDITOR
Если какая-то утилита требует редактирования файла, то вместо написания и использования встроенного редактора, этот файл можно передать на редактирование программе, путь к которой хранится в переменной EDITOR.
HOME
Переменная содержит имя домашней директории текущего пользователя.
LANG и LC_...
Переменные, задающие язык интерфейса и другие параметры локализации программы.
PATH
Переменная окружения содержит список директорий, разделённый символом «:». Этот список просматривается при каждом запуске команды — в нём производится поиск исполняемых файлов с соответствующим команде именем. Примером значения переменной окружения может быть «/bin:/usr/bin:/usr/local/bin».
Как правило, значение этой переменной различается для простого пользователя и администратора — для того, чтобы разделить их рабочий инструментарий.
SHELL
Имя текущей программы оболочки.
TERM
Тип терминала, используемого в настоящий момент. Эта переменная анализируется программами для того, чтобы варьировать свой интерфейс в зависимости от возможностей терминала.
USER
Имя текущего пользователя.
_ (одиночный символ подчёркивания)
В точности последняя команда, выполненная в командной оболочке.