Команда tee в Linux

Опубликовано admin - сб, 09/17/2022 - 13:32

В Linux команда tee читает стандартный ввод (stdin) и записывает его как в стандартный вывод (stdout), так и в один или несколько файлов.

Использование команды tee в Linux

Команда tee обычно является частью конвейера, и любое количество команд может предшествовать или следовать за ней.

Содержание

Синтаксис

$ tee [опции] [файл]

Опции

-a, --append
Дописать в заданные ФАЙЛЫ, не перезаписывать
-i, --ignore-interrupts
Игнорировать сигналы прерывания
-p
Обнаруживать ошибки записи не в каналы
  --output-error[=РЕЖИМ]
Задать поведение при ошибке

Описание режимов

Режим определяет поведение при ошибках записи на выходах:

warn
Диагностировать ошибки записи на любой выход
warn-nopipe
Диагностировать ошибки записи на любой выход, а не на канал
exit
Выйти при ошибке записи на любой выход
exit-nopipe
Выйти при ошибке записи на любой выход, а не на канал

РЕЖИМ по умолчанию для параметра -pwarn-nopipe.

Операция по умолчанию, когда --output-error не указан, заключается в немедленном выходе при записи ошибки в канал и диагностике ошибок записи в выходы, не относящиеся к каналу.

Примеры использования команды tee в Linux

Список файлов каталога

В Linux вы можете не только показать список файлов текущего каталога командой ls -la, но и сохранить вывод в файл, в данном случае output.txt, используя команду tee. Файл будет создан командой:

oleg@mobile:~/Directory:$ ls -la | tee output.txt
итого 28
drwxrwxrwx  2 oleg users  4096 сен 17 12:47 ./
drwx--x--x 66 oleg   100 12288 сен 17 12:38 ../
-rw-r--r--  1 oleg users     0 сен 17 12:47 output.txt
-rw-r--r--  1 oleg users   806 сен 10 11:55 usa-capitals.txt
-rw-r--r--  1 oleg users  1706 сен 10 11:50 usa-states-capitals.txt
-rw-r--r--  1 oleg users  1136 сен 10 11:45 usa-states.txt
oleg@mobile:~/Directory:$ 

Проверяем содержимое файла output.txt:

oleg@mobile:~/Directory:$ cat output.txt 
итого 28
drwxrwxrwx  2 oleg users  4096 сен 17 12:47 ./
drwx--x--x 66 oleg   100 12288 сен 17 12:38 ../
-rw-r--r--  1 oleg users     0 сен 17 12:47 output.txt
-rw-r--r--  1 oleg users   806 сен 10 11:55 usa-capitals.txt
-rw-r--r--  1 oleg users  1706 сен 10 11:50 usa-states-capitals.txt
-rw-r--r--  1 oleg users  1136 сен 10 11:45 usa-states.txt
oleg@mobile:~/Directory:$

Вывод любой команды в файл

Вывод любой команды с помощью tee с опцией -a, содержимое файла при этом не будет перезаписано. В данном случае мы записываем в конец файла output.txt вывод команды pwd

oleg@mobile:~/Directory:$ pwd | tee -a output.txt
/home/oleg/Directory
oleg@mobile:~/Directory:$ 

Проверяем содержимое файла output.txt:

oleg@mobile:~/Directory:$ cat output.txt 
итого 28
drwxrwxrwx  2 oleg users  4096 сен 17 12:47 ./
drwx--x--x 66 oleg   100 12288 сен 17 12:38 ../
-rw-r--r--  1 oleg users     0 сен 17 12:47 output.txt
-rw-r--r--  1 oleg users   806 сен 10 11:55 usa-capitals.txt
-rw-r--r--  1 oleg users  1706 сен 10 11:50 usa-states-capitals.txt
-rw-r--r--  1 oleg users  1136 сен 10 11:45 usa-states.txt
/home/oleg/Directory
oleg@mobile:~/Directory:$

Вывод числа строк файла 

Подсчёт количества строк в файле usa-states.txt и сохранения вывода в новый текстовый файл output2.txt:

oleg@mobile:~/Directory:$ wc -l usa-states.txt | tee output2.txt
50 usa-states.txt
oleg@mobile:~/Directory:$

Проверяем: 

oleg@mobile:~/Directory:$ cat output2.txt 
50 usa-states.txt
oleg@mobile:~/Directory:$ 

Заключение

Здесь были показаны лишь основные примеры использования в Linux команды tee. Из них следует, что вы можете сохранять в файл вывод любой команды, что в ряде случае бывает очень полезно.

Поделиться с друзьями