В UNIX-системах имеется три файловых дескриптора-
stdin
, stdout
и stderr
(std
== standard).
Используя их вы можете:
- перенаправить
stdout
в файл; - перенаправить
stderr
в файл; - перенаправить
stdout
вstderr
; - перенаправить
stderr
вstdout
; - перенаправить
stderr
иstdout
в файл; - перенаправить
stderr
иstdout
вstdout
; - перенаправить
stderr
иstdout
вstderr
.
Для stdout
используется дескриптор 1, а для stderr
— 2.
Содержание
stdout в файл
Что бы перенаправить выходные данные программы в файл:
$ ls -l > ls-l.txt
Тут ls-l.txt
— это имя файла, который будет создан (если не существует, иначе — он будет перезаписан), и в который будут записаны данные, которые вы видите на экране, выполняя команду ls -l
.
stderr в файл
Что бы перенаправить стандартный поток ошибок в файл — используйте:
$ grep da * 2> grep-errors.txt
В результате будет создан файл grep-errors.txt
, который будет содержать в себе данные из stderr
после выполнения grep da *
.
stdout в stderr
Следующий пример перенаправит stdout
в stderr
:
$ grep da * 1>&2
stderr в stdout
И наоборот — что бы перенаправить stderr
в stdout
— используйте:
$ grep * 2>&1
stderr и stdout в file
Иногда требуется перенаправить все данные в файл. Это может пригодиться в cron
-задачах, что бы команда выполнялась в полной «тишине»:
$ rm -f $(find / -name core) &> /dev/null
Ссылки по теме