[[ Перенаправление в 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-шеллами и многими приложениями — и ни в коем случае не является составной частью ядра.
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






Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
21 +12 =
 
doc/bash/redirectes.txt · Последнее изменение: 2022/08/31 15:51 — lexa
Gentoo Linux Gentoo Linux Driven by DokuWiki