Linux. Команда tee
Команда tee
считывает стандартный ввод (stdin
), после чего записывает его в стандартный вывод (stdout
) и одновременно копирует его в подготовленный файл или переменную. Синтаксис различается в соответствии с местом использования команды.
$ tee [опции] файл
Используется для разделения выводимых программой данных, таким образом данные могут быть использованы для вывода на дисплей и сохранены в файл. Также команда может быть использована для получения промежуточных данных, до того как они будут изменены другой программой или командой.
Опции
-a
— дописать выходящие данные в конец файла, не перезаписывая его содержимого-i
— игнорировать ошибки
Пример использования:
$ ping yandex.ru | tee ping-yandex.txt
Чтобы дописать данные в существующий файл:
$ ping yandex.ru | tee -a ping-yandex.txt
Использование совместно с sudo
:
$ echo "Content of file..." | sudo tee root_owned_file > /dev/null
Здесь демонстрируется, как при помощи tee
обойти ограничения команды sudo
, за счёт которых она не может перенаправлять вывод (stdout
) в файл. А дальнейшее перенаправление в /dev/null
позволит избежать вывода текста на консоль.
Перенаправление stderr
:
$ ls ./ qwerty.txt 2>&1 | tee ls.log
По умолчанию команда tee
записывает в файл только данные от stdout
, поэтому, если файл qwerty.txt
отсутствует в текущем каталоге, в файле ls.log
будет перечень имеющихся файлов и каталогов и не будет записи о не найденном файле. На экране же будут отображаться выводы как stdout
, так и stderr
. Если в файл нужно включить так же и данные из stderr
, то необходимо, как в примере выше, перенаправить stderr
на stdout
.
Справка по команде
$ tee --help Использование: tee [ПАРАМЕТР]… [ФАЙЛ]… Копирует стандартный ввод в каждый ФАЙЛ, а также в стандартный вывод. -a, --append дописать в заданные ФАЙЛЫ, не перезаписывать -i, --ignore-interrupts игнорировать сигналы прерывания -p обнаруживать ошибки записи не в каналы --output-error[=РЕЖИМ] задать поведение при ошибке Описание РЕЖИМов далее --help показать эту справку и выйти --version показать информацию о версии и выйти В РЕЖИМе задаётся поведение при ошибках записи в выводы: «warn» диагностические ошибки записи в любой вывод «warn-nopipe» диагностические ошибки записи в любой вывод кроме канала «exit» завершать работу при ошибках записи в любой вывод «exit-nopipe» завершать работу при ошибках записи в любой вывод кроме канала По умолчанию значение РЕЖИМа для параметра -p равно «warn-nopipe». Если --output-error не указан, то по умолчанию выполняет немедленное прекращение работы при ошибке записи в канал, или диагностические ошибки записи в любой не канальный вывод.