[[Перенаправление в bash]]

Перенаправление в bash

Перенаправление потоков вывода в bash и sh:

$ cmd 1> file          # перенаправление стандартного потока (stdout) в file (файл будет перезаписан)
$ cmd > file           # тоже самое что и выше (файл будет перезаписан)
$ cmd 2> file          # перенаправление стандартного потока ошибок (stderr) в file
$ cmd >> file          # перенаправление stdout в file в режиме добавления (добавление сток в конец без перезаписи)
$ cmd &> file          # перенаправление stdout и stderr в file
 
$ cmd > file 2>&1      # перенаправление stderr в stdout и затем в файл file
$ cmd >> file 2>&1     # перенаправление stderr в stdout и затем в конец файла file не затирая его  
                       # !такая конструкция пригодится для логирования
 
$ cmd 2>&1 > /dev/null # перенаправление stdout в >/dev/null, а stderr в stdout
                       # таким образом мы видим только ошибки приложения
 
$ cmd 2> /dev/null     # перенаправление stderr в >/dev/null
                       # таким образом мы скрываем вывод ошибок
 
$ cmd1 | cmd2          # перенаправление вывода stdout команды cmd1 на вход команды cmd2
$ cmd1 2>&1 | cmd2     # перенаправление вывода stdout и stderr команды cmd1 на вход команды cmd2


По умолчанию Unix-шеллы связывают файловый дескриптор 0 со стандартным вводом процесса (терминал), файловый дескриптор 1 — со стандартным выводом (терминал), и файловый дескриптор 2 — со стандартной ошибкой (то есть то куда выводятся сообщения об ошибках). Это соглашение соблюдается многими Unix-шеллами и многими приложениями — и ни в коем случае не является составной частью ядра.

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
72 -2 = ?
 
doc/bash/redirectes.txt · Последние изменения: 2013/06/14 16:31 — lexa
Gentoo Linux Driven by DokuWiki