tee
Что делает команда tee в Linux
Команда tee в Linux используется для одновременного вывода данных в терминал и записи их в один или несколько файлов. Это удобный инструмент, когда нужно просматривать результаты команды и сохранять их для последующего анализа.
Она считывает стандартный ввод (stdin) и направляет его одновременно в стандартный вывод (stdout) и в указанный файл. Благодаря этому команда tee в Linux часто применяется в пайпах (|) для логирования, отладки и автоматизации скриптов.
Пример базового использования:
echo "Hello, world!" | tee output.txt
В этом примере текст отобразится на экране и будет записан в файл output.txt.
Основные параметры команды tee в Linux
-a или —append
Флаг -a позволяет добавить новые данные в конец существующего файла, не перезаписывая его. Это особенно полезно при ведении логов.
Пример:
echo "New log entry" | tee -a logfile.txt
Файл logfile.txt сохранит старые данные, а новая строка будет добавлена в конец.
При работе с логами всегда используйте
-a, чтобы не потерять предыдущие записи.-i или —ignore-interrupts
Опция -i позволяет команде tee в Linux игнорировать сигналы прерывания (например, Ctrl+C). Это удобно, если нужно сохранить вывод даже при непредвиденной остановке процесса.
Пример:
some_long_process | tee -i output.log
Если процесс будет прерван, всё, что успело записаться до момента остановки, останется в файле.
Работа с несколькими файлами
Команда может записывать данные одновременно в несколько файлов, просто указав их через пробел.
Пример:
ls -l | tee file1.txt file2.txt
Результат команды ls -l будет выведен на экран и сохранён в оба файла.
Это полезно, если вы хотите вести несколько версий логов — например, один для архива, другой для анализа в реальном времени.
Использование команды tee в пайпах
Одно из ключевых преимуществ команды tee в Linux — возможность работы в конвейерах (пайпах). Она позволяет сохранять промежуточные результаты без прерывания цепочки команд.
Пример:
cat data.txt | grep "error" | tee errors.log | sort
В этом случае:
cat data.txtпередаёт содержимое файла;grep "error"фильтрует строки с ошибками;tee errors.logзаписывает найденные ошибки в файл и передаёт их дальше;sortсортирует результаты для отображения в терминале.
Такой подход делает анализ логов и диагностику процессов значительно удобнее.
Примеры использования команды tee в Linux на практике
1. Логирование вывода скриптов
./backup.sh | tee -a backup.log
Вы сможете следить за процессом резервного копирования в терминале и параллельно сохранять лог в файл. Это особенно важно для автоматизированных задач, где нужно просматривать историю выполнения.
2. Сохранение вывода sudo-команд
При использовании sudo, часто требуется сохранять логи без потери прав доступа.
Пример:
sudo dmesg | tee kernel.log
Вывод системных сообщений ядра будет записан в файл kernel.log и показан на экране.
3. Тестирование сетевых соединений
ping -c 5 google.com | tee ping_results.txt
Так можно быстро собрать информацию о состоянии сети и сохранить её для дальнейшего анализа.
Полезные сочетания с другими командами
tee и awk
Можно совместить команду tee в Linux с awk для фильтрации данных перед записью.
cat access.log | awk '/404/' | tee errors404.txt
Этот пример сохраняет только строки с кодом ответа 404.
tee и sudo
Если нужно записать вывод команды в файл, к которому нет прав доступа, используйте комбинацию sudo tee:
echo "127.0.0.1 myapp.local" | sudo tee -a /etc/hosts
Так можно безопасно обновить системные файлы без ошибок прав доступа.
Не используйте
sudo echo "..." > файл, потому что перенаправление выполняется оболочкой от имени обычного пользователя. sudo tee решает эту проблему корректно.Когда использовать команду tee в Linux
Используйте команду tee в Linux, когда:
- нужно записывать вывод команд в файл без потери отображения в терминале;
- требуется сохранять промежуточные результаты в пайпах;
- необходимо вести параллельные логи нескольких процессов;
- вы хотите анализировать работу скриптов и системных сервисов.
Эта команда делает отладку, мониторинг и логирование в Linux более прозрачными и гибкими.
Заключительные советы по работе с tee
- Используйте перенаправление ошибок. Если нужно сохранить не только стандартный вывод, но и ошибки:
some_command 2>&1 | tee output_with_errors.logТак вы получите полную картину выполнения команды. - Создавайте временные отчёты. С помощью
teeможно сохранять результаты диагностики систем в один файл и пересылать его для анализа. - Комбинируйте с cron. Используя
teeв скриптах, выполняемых через планировщикcron, вы сохраняете прозрачную историю выполнения задач.
Команда tee в Linux — это мощный инструмент для одновременного вывода и записи данных. Она упрощает ведение логов, анализ ошибок и автоматизацию процессов, делая вашу работу в терминале более продуктивной и безопасной.