Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб.практикумСП.doc
Скачиваний:
39
Добавлен:
31.03.2015
Размер:
5.99 Mб
Скачать

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

Помимо стандартных ввода и вывода Linux позволяет перенаправлять ввод и вывод в файлы и программы. Для изменения направления ввода используется знак “<” (меньше). Так, при использовании команды rm необходимо задать параметр – имя файла, который должен быть удален. Перенаправление позволяет вместо ввода данных с клавиатуры использовать ввод из файла.

Пример. При использовании команды wc, предназначенной для подсчета количества слов и символов в тексте, следует ввести: $ wc < mine. Данная запись означает ввод данных для этой команды из файла mine. Пусть файл mine имеет следующее содержимое: студент хорошо учится. Тогда результат выполнения команды $ wc < mine следующий: 1 3 19 mine. Таким образом, в файле - 1 строка, 3 слова и 19 символов.

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

Перенаправление вывода позволяет вывести результаты выполнения команды не на экран, а в определенный файл. Это особенно удобно в том случае, если результаты команды не помещаются на одном экране. При выполнении вывода результатов команды в файл, их можно просмотреть позже в любом текстовом редакторе. Для перенаправления вывода используется символ “>” (больше).

Пример. $ ls > newfile. Результат выполнения команды ls, то есть список файлов будет сохранен в файле newfile.

При выполнении команд иногда происходят ошибки. Когда возникает ошибка, система выдает специальное сообщение. Как правило, такие сообщения отображаются на экране вместе со стандартным выводом. Linux, однако различает стандартный ввод и сообщения об ошибках. Для переадресации стандартного потока ошибок предусмотрена специальная возможность. Все стандартные байтовые потоки в операциях переадресации можно обозначать номерами. Номера 0, 1 и 2 обозначают соответственно стандартный ввод, вывод и поток ошибок. Чтобы перенаправить стандартный поток ошибок, нужно поставить перед оператором переадресации вывода цифру 2.

Например, $ cat nofile 2 > myerrors. Чтобы переадресовать и стандартный вывод и поток ошибок, нужны две операции переадресации и два файла: $ cat nofile 1 > myfile 2 > myerrors.

Если требуется сохранять сообщения об ошибках в том же файле, нужно переадресовать стандартный поток ошибок на стандартный вывод. В bash ссылаться на стандартный поток по его номеру со знаком “&”: &1 обозначает стандартный вывод. Операция переадресации 2>&1 переадресует стандартный поток ошибок на стандартный вывод. В результате стандартный вывод становится файлом назначения для стандартного потока ошибок.

Пример. $ cat nofile 1 > myfile 2 > &1. В данном примере стандартный вывод переназначается в файл myfile, туда же переназначается и стандартный поток ошибок. По умолчанию входным потоком операции >& является стандартный поток ошибок, а выходным потоком - стандартный вывод.

10.7. Конвейеры

Конвейер – это еще одно свойство shell, позволяющее связывать последовательность нескольких команд, введенных в одной строке, воедино. Другими словами конвейер – это механизм межпроцессорного взаимодействия, который позволяет двум или более процессам посылать информацию друг другу. Вывод первой команды используется в качестве ввода (входных данных) для второй команды и так далее, вывод последней команды в конвейере осуществляется на экран, либо перенаправляется в файл. Символом конвейера является “|”.

Пример. $ cat mine | wc. Результат выполнения команды следующий: 1 3 19 mine.