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