Команда 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
:Привет, мир!