
- •Оглавление
- •Общие сведения
- •Современные версии ос unix
- •Основные характеристики
- •Архитектура ос unix
- •Системное программное обеспечение
- •Терминал и командная строка
- •Терминал
- •2.1.1. Управляющие символы
- •2.1.2. Одновременный доступ к системе
- •Командная строка
- •2.2.1. Командная оболочка
- •2.2.2. Приглашение
- •2.2.3. Команды
- •2.2.4. Шаблоны
- •2.2.5. Перенаправление ввода и вывода
- •2.2.6. Служебные символы
- •2.2.7. Основные группы служебных символов командной оболочки:
- •2.2.8. Процесс выполнения команды
- •Список использованной литературы
2.2.5. Перенаправление ввода и вывода
По умолчанию, ввод и вывод каждой команды, выполняемой в командной строке, связан с терминалом, за которым работает пользователь. Однако командная оболочка предусматривает средства перенаправления ввода и вывода команд. Один из самых важных случаев — перенаправление ввода/вывода в файл и из файла. Для этого в командной строке используются специальные символы >, >> и <. Символы перенаправления указываются в командной строке после всех параметров команды, за символом перенаправления должно следовать имя файла, в который или из которого следует передать данные.
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, предусматривают также специальные символы для особых случаев перенаправления, в частности, >> служит для недеструктивного перенаправления в файл (данные не заместят содержимое файла, а будут дописаны в конец) или &> для направления в один файл двух потоков: стандартного ввода и стандартного вывода ошибок.
2.2.6. Служебные символы
Из предыдущих разделов видно, что некоторые символы используются в качестве команд самой командной оболочке, например, символы перенаправления ввода/вывода — служебные символы. Поскольку служебные символы адресованы самой командной оболочке, то при обработке командной строки они из нее «изымаются» и не передаются выполняющейся команде. Чтобы передать команде параметр, содержащий служебные символы, необходимо их тем или иным способом экранировать. С одним из способов экранирования — заключением параметра в одинарные или двойные кавычки — мы уже сталкивались раньше, когда говорили о параметрах, содержащих символы-разделители. Другой распространённый способ — постановка символа обратной косой черты (\) непосредственно перед служебным символом.
2.2.7. Основные группы служебных символов командной оболочки:
Символы-разделители
Используются для отделения частей команды или нескольких команд. К ним относятся: пробел, табуляция. По умолчанию команды разделяются символом перевода строки.
Символы пути
Используются для разделения элементов пути. Сюда можно отнести символ корня («/») и символ домашней директории («~») — в командной строке он автоматически заменяется на полный путь к домашней директории.
Символы команд
Применяются в аргументах команд, для отделения нескольких команд, для запуска процессов на заднем фоне и т.п. К таким символам можно отнести: «*», «&», «<», «>», «;», «(», «)», «|», «"».
Символы управления переменными
Используются для задания («=») и подстановки («$») значений переменных среды. При этих символах в именах файлов, необходимо предварять их знаком обратной косой («\»).
ESC-символы
Для использования перечисленных выше специальных символов в именах файлов, необходимо перед ними использовать знак обратной косой: «\&», «\;» и т. п. К этой же группе относятся специальные ASCII-символы, зарезервированные для команд вывода текста, например, символ возврата каретки или табуляции («\n» и «\t» соответственно).