Перенаправление в 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-шеллами и многими приложениями — и ни в коем случае не является составной частью ядра.
https://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D1%8B%D0%B9_%D0%B4%D0%B5%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D1%80
Обсуждение