Простая и удобная шпаргалка по перенаправлению потока вывода в Linux.
Поток вывода перенаправлен в файл, в терминале его не видно. Если файл существует, он будет перезаписан.
command > file.txt
Поток вывода перенаправлен в файл, в терминале его не видно. Если файл существует, то новые данные добавятся в конец файла.
command >> file.txt
Поток ошибок перенаправлен в файл, в терминале его видно. Если файл существует, он будет перезаписан.
command 2> file.txt
Поток ошибок перенаправлен в файл, в терминале его не видно. Если файл существует, то новые данные будут добавлены в конец файла.
command 2>> file.txt
Поток вывода и поток ошибок перенаправлены в файл, в терминале их не видно. Если файл уже существует, то он будет перезаписан.
command &> file.txt
Поток вывода и поток ошибок перенаправлены в файл, в терминале их не видно. Если файл уже существует, то новые данные будут добавлены в конец файла.
command &>> file.txt
Поток вывода скопирован в файл, он виден в терминале. Если файл уже существует, то он перезапишется.
command | tee file.txt
Команда tee в Linux считывает стандартный ввод и записывает его одновременно в стандартный вывод и в один или несколько подготовленных файлов.
Поток вывода скопирован в файл, он виден в терминале. Если файл уже существует, то новые данные будут добавлены в конец файла.
command | tee -a file.txt
В Bash нет сокращенного синтаксиса, позволяющего передавать только StdErr второй команде, что было бы необходимо в данном случае в сочетании с tee для завершения операции.
(*)
В файл скопированы потоки вывода и ошибки, они видны в терминале. Если файл уже существует, то он перезапишется.
command |& tee file.txt
Потоки вывода и ошибки скопированы в файл, в терминале их видно. Если файл уже существует, то новые данные будут добавлены в конец файла.
command |& tee -a file
В комментариях ребята дали более расширенную таблицу.
Подсмотрено в канале Bash Days.
Источник: https://www.kobzarev.com/linux/perenapravlenie-potoka-vyvoda-v-linux/