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

При использовании окна UNIX на ПК или рабочей станции UNIX клавиатура является стандартным средством для ввода команд в оболочке, а терминал — стандартным местом для их вывода. Любые появляющиеся в результате их выполнения ошибки называются стандартными ошибками и обычно отображаются на экране.


На заметку! Для обозначения стандартных мест ввода и вывода в оболочке UNIX принято использовать понятия стандартный ввод, стандартный вывод и стандартная ошибка


Однако при желании в качестве ввода можно также использовать и записанный ранее файл, а также заставлять UNIX отправлять вывод не на экран, а в файл. Такой процесс маршрутизации ввода и вывода через файлы называется перенаправлением ввода и вывода.

Если нужно избавиться от вывода, его можно перенаправить в специальное место под названием /dev/null. В случае указания /dev/null в качестве места вывода все сообщения, выдаваемые во время выполнения программы, просто отбрасываются и не фиксируются нигде в файловой системе. Приведенный ниже пример показывает, как перенаправление вывода файла в /dev/null приводит к исчезновению его содержимого:

 
$ cat testfile1
$ This is the first line of testfile1
$ cat testfile1 > /dev/null
$ cat /dev/null

В этом примере первая команда cat отображает вывод файла testfile1. Однако после перенаправления вывода команды cat в /dev/null, этот вывод исчезает.


На заметку! Кажется, что перенаправление вывода команды cat сводит на нет смысл первого выполнения этой команды, но бывают ситуации, вроде тех, когда выполняется какой-то сценарий и не нужно видеть вывод всех команд.


В таблице ниже вкратце перечислены основные операции перенаправления, поддерживаемые в большинстве версий UNIX.

Операция перенаправления Описание
< Перенаправление стандартного ввода для команды
> Перенаправление стандартного вывода в файл
>> Дописывание стандартного вывода к файлу
<< Дописывание стандартного ввода к файлу
2 > Перенаправление стандартных ошибок

В следующем примере вывод команды date сохраняется в файле file1 и затем из этого файла передается в качестве ввода файлу file2:

$ date > file1
$ file1 < file2 

Такого же результата можно добиться и применением поддерживаемой в UNIX команды конвейеризации (|): 

 
$ date | file2

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

Вас заинтересует / Intresting for you:

Ввод команд SQL*Plus
Ввод команд SQL*Plus 7462 просмотров Александров Попков Tue, 21 Nov 2017, 13:33:37
Ввод блоков PL/SQL
Ввод блоков PL/SQL 6322 просмотров Александров Попков Tue, 21 Nov 2017, 13:33:37
Ввод SQL-инструкций в SQL*Plus
Ввод SQL-инструкций в SQL*Plus 7757 просмотров Александров Попков Wed, 14 Mar 2018, 05:39:02
Управление выводом команд в Un...
Управление выводом команд в Un... 1123 просмотров Алексей Вятский Tue, 21 Nov 2017, 13:19:25
Войдите чтобы комментировать