Команда 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 |
Отправляет сообщения в системный журнал |
Пример работы
-
Выполняем команду:
bash echo "Привет, мир!" | tee привет.txt -
На экране:
Привет, мир! -
В файле
привет.txt:Привет, мир!