В Linux команда tee
читает стандартный ввод (stdin) и записывает его как в стандартный вывод (stdout), так и в один или несколько файлов.
Команда tee
обычно является частью конвейера, и любое количество команд может предшествовать или следовать за ней.
Содержание
Синтаксис
$ tee [опции] [файл]
Опции
- -a, --append
- Дописать в заданные ФАЙЛЫ, не перезаписывать
- -i, --ignore-interrupts
- Игнорировать сигналы прерывания
- -p
- Обнаруживать ошибки записи не в каналы
- --output-error[=РЕЖИМ]
- Задать поведение при ошибке
Описание режимов
Режим определяет поведение при ошибках записи на выходах:
- warn
- Диагностировать ошибки записи на любой выход
- warn-nopipe
- Диагностировать ошибки записи на любой выход, а не на канал
- exit
- Выйти при ошибке записи на любой выход
- exit-nopipe
- Выйти при ошибке записи на любой выход, а не на канал
РЕЖИМ по умолчанию для параметра -p
— warn-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
. Из них следует, что вы можете сохранять в файл вывод любой команды, что в ряде случае бывает очень полезно.