tee

https://www.hostinger.com.ua/rukovodstva/komanda-tee-linux-primery

Команда tee в Linux считывает стандартный ввод и записывает его одновременно в стандартный вывод и в один или несколько подготовленных файлов. При обычном перенаправлении потока вывода строки команды будут записаны в файл, но мы не сможем увидеть вывод одновременно. С помощью команды tee мы можем это сделать.

Эта команда часто используется в сценариях командной оболочки для отображения хода процесса при выводе одних и тех же записей в файлы журналов.

Синтаксис и использование команды tee в linux

Основной синтаксис команды:

wc -l file1.txt | tee file2.txt

Приведенная выше команда проверит количество строк в файле file1.txt, выведет результат в терминал и сохранит его в файле file2.txt.

Отправка вывода команды tee в linux другим командам

При использовании команды tee в Linux мы получаем вывод в терминале, который мы можем передать другой команде для обработки. Следующая команда выведет список файлов внутри папки и с помощью первого канала запишет вывод в файл test.txt. После этого передаст вывод третьей команде — grep для идентификации файлов, содержащих в себе строку py:

ls | tee test.txt | grep 'py'

Другие операции с командой tee в linux

tee --help

tee --version

По умолчанию команда tee перезаписывает файл с выводом исходной команды, что можно отменить, используя добавляемую опцию -a.

ls | tee –a file.txt

С помощью команды tee в Linux мы также можем сохранить вывод команды в нескольких файлах. Эта опция используется для многократной обработки вывода команды в сценарии оболочки:

ls | tee file1.txt file2.txt file3.txt

Как и в случае стандартных команд, к которым добавляется >, стандартный поток ошибок и стандартный поток вывода (stdout) в tee также обрабатываются по-разному. Обычный знак канала | сохранит в файл только стандартный вывод, но если нам нужны и стандартный поток вывода, и стандартный поток ошибок, следует использовать |& c Linux командой tee.

Нормальная копия стандартного вывода:

   
команда > file.txt Обычный способ перенаправления стандартного вывода
команда tee file.txt Использование tee с перезаписью
команда tee -a file.txt Использование tee с дописыванием в файл

Стандартный поток вывода и стандартный поток ошибки:

   
команда &> file.txt Обычный способ перенаправления стандартного вывода и ошибки
команда \|& tee file.txt Использование tee с перезаписью
команда \|& tee -a file.txt Использование tee с дописыванием в файл

Запись файлов с использованием повышенных привилегий в редакторе vim — это ещё одно преимущество команды tee. В среде с высокой степенью защиты обычные операции Linux выполняются с использованием непривилегированных пользователей. Для выполнения административных задач с правами администратора мы используем команду sudo.Стандартный поток вывода и стандартный поток ошибки:

Но иногда нам нужно отредактировать файлы, которые требуют прав администратора.

Отмена изменений и повторное открытие файла с использованием необходимых привилегий посредством sudo — один из вариантов, как это можно сделать. Но если мы используем команду tee, мы можем избежать этой ситуации, записав файл на самом начальном этапе, не отказываясь от изменений с помощью опции повышенных привилегий. При записи в редакторе vim синтаксис будет следующим:

  :w !sudo tee %

Выводы

Команда tee в Linux — удобная утилита для установки скриптов. Ее удобно использовать вместо > для перенаправления вывода.