В 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
Ссылки по теме