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 — удобная утилита для установки скриптов. Ее удобно использовать вместо >
для перенаправления вывода.