Skip to content

Команда tee

Описание

Команда tee используется для чтения данных из стандартного ввода (stdin) и записи их одновременно в стандартный вывод (stdout) и один или несколько файлов. Это позволяет просматривать данные в терминале и сохранять их в файл.

Она особенно полезна при отладке, логировании и работе с конвейерами (pipes) в shell-скриптах.


Синтаксис

команда | tee [опции] файл(ы)

или

tee [опции] файл(ы)

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

1. Запись вывода команды в файл

ls -l | tee список_файлов.txt

Вывод команды ls -l будет показан на экране и записан в файл список_файлов.txt.

2. Добавление вывода к существующему файлу

echo "Новая запись" | tee -a журнал.log

Ключ -a указывает, что данные нужно добавить, а не перезаписать.

3. Запись вывода в несколько файлов

df -h | tee отчет1.txt отчет2.txt

Вывод будет записан в оба файла и отображён на экране.

4. Использование без пайпа

tee новый_файл.txt

После этого вы можете вводить текст вручную. Нажмите Ctrl+D, чтобы завершить ввод.


Опции команды tee

Опция Описание
-a, --append Добавляет вывод в конец файла вместо перезаписи
-i, --ignore-interrupts Игнорирует сигналы прерывания (например, Ctrl+C)
-p Пишет в каждый файл, игнорируя ошибки доступа (требует sudo)
--help Показывает справку
--version Показывает версию программы

Полезные заметки

  • tee часто используется в скриптах для логирования: bash #!/bin/bash echo "Старт скрипта..." | tee -a /var/log/мой_скрипт.log

  • Может использоваться совместно с sudo: bash echo "Тестовый текст" | sudo tee /etc/файл_только_для_root.txt

  • tee может помочь при отладке сложных команд: bash curl http://api.example.com/data | jq '.' | tee промежуточный_результат.json | grep "success"


Безопасность

  • Убедитесь, что у вас есть права на запись в указанные файлы.
  • При использовании sudo с tee — будьте внимательны, чтобы не повредить системные файлы.

Альтернативы

Метод Описание
> Перенаправление вывода с перезаписью
>> Перенаправление вывода с добавлением
script Записывает всё, что происходит в терминале
logger Отправляет сообщения в системный журнал

Пример работы

  1. Выполняем команду: bash echo "Привет, мир!" | tee привет.txt

  2. На экране: Привет, мир!

  3. В файле привет.txt: Привет, мир!