Программное окружение

Перенаправление ввода и вывода

По умолчанию, ввод и вывод каждой команды, выполняемой в командной строке, связан с терминалом, за которым работает пользователь. Однако командная оболочка предусматривает средства перенаправления ввода и вывода команд. Один из самых важных случаев — перенаправление ввода/вывода в файл и из файла. Для этого в командной строке используются специальные символы >, >> и <. Символы перенаправления указываются в командной строке после всех параметров команды, за символом перенаправления должно следовать имя файла, в который или из которого следует передать данные.

Рисунок 2.8. Пример перенаправления ввода и вывода

user@desktop ~ $ date > /tmp/dateuser@desktop ~ $ cat < /tmp/dateВтр Окт 4 23:15:37 MSD 2005user@desktop ~ $

В данном примере вывод команды date перенаправляется в файл /tmp/date (при этом если такой файл существовал, то он будет уничтожен и создан заново с нуля), а затем команде cat перенаправляется на ввод содержимое этого файла. Обратите внимание, здесь команда cat выполняется без параметров, она получает содержимое файла /tmp/date непосредственно со стандартного ввода, как если бы пользователь ввел его прямо с терминала. Обращение к файлу и передачу данных выполняет в этом случае командная оболочка.

Современные оболочки, в том числе и bash, предусматривают также специальные символы для особых случаев перенаправления, в частности, >> служит для недеструктивного перенаправления в файл (данные не заместят содержимое файла, а будут дописаны в конец) или &> для направления в один файл двух потоков: стандартного ввода и стандартного вывода ошибок.

 

Рисунок 2.9. программное окружение

В командной оболочке можно просматривать и изменять переменные окружения, которые соответствуют процессу оболочки. Программы могут исполняться по-разному, в зависимости от значений переменных окружения:

user@desktop ~ $ dateПтн Ноя 5 16:20:16 MSK 2004user@desktop ~ $ LC_TIME=C dateFri Nov 5 16:20:23 MSK 2004

В последнем примере пользователь присвоил некоторое значение переменной окружения в командной строке перед именем команды. Командный интерпретатор, увидев «=» внутри первого слова командной строки, приходит к выводу, что это — операция присваивания, а не имя команды, и запоминает, как надо изменить окружение команды, которая последует далее. Переменная окружения LC_TIME предписывает использовать определенный язык при выводе даты и времени, а значение "C" соответствует стандартному системному языку (чаще всего — английскому).

Для получения значения переменной окружения необходимо воспользоваться символом «$»:

user@desktop ~ $ echo $PWD/home/user