tee

Что делает команда tee в Linux

Команда tee в Linux используется для одновременного вывода данных в терминал и записи их в один или несколько файлов. Это удобный инструмент, когда нужно просматривать результаты команды и сохранять их для последующего анализа.

Она считывает стандартный ввод (stdin) и направляет его одновременно в стандартный вывод (stdout) и в указанный файл. Благодаря этому команда tee в Linux часто применяется в пайпах (|) для логирования, отладки и автоматизации скриптов.

Пример базового использования:

Bash
echo "Hello, world!" | tee output.txt

В этом примере текст отобразится на экране и будет записан в файл output.txt.

Основные параметры команды tee в Linux

-a или —append

Флаг -a позволяет добавить новые данные в конец существующего файла, не перезаписывая его. Это особенно полезно при ведении логов.

Пример:

Bash
echo "New log entry" | tee -a logfile.txt

Файл logfile.txt сохранит старые данные, а новая строка будет добавлена в конец.

Совет:
При работе с логами всегда используйте -a, чтобы не потерять предыдущие записи.

-i или —ignore-interrupts

Опция -i позволяет команде tee в Linux игнорировать сигналы прерывания (например, Ctrl+C). Это удобно, если нужно сохранить вывод даже при непредвиденной остановке процесса.

Пример:

Bash
some_long_process | tee -i output.log

Если процесс будет прерван, всё, что успело записаться до момента остановки, останется в файле.

Работа с несколькими файлами

Команда может записывать данные одновременно в несколько файлов, просто указав их через пробел.

Пример:

Bash
ls -l | tee file1.txt file2.txt

Результат команды ls -l будет выведен на экран и сохранён в оба файла.

Совет:
Это полезно, если вы хотите вести несколько версий логов — например, один для архива, другой для анализа в реальном времени.

Использование команды tee в пайпах

Одно из ключевых преимуществ команды tee в Linux — возможность работы в конвейерах (пайпах). Она позволяет сохранять промежуточные результаты без прерывания цепочки команд.

Пример:

Bash
cat data.txt | grep "error" | tee errors.log | sort

В этом случае:

  1. cat data.txt передаёт содержимое файла;
  2. grep "error" фильтрует строки с ошибками;
  3. tee errors.log записывает найденные ошибки в файл и передаёт их дальше;
  4. sort сортирует результаты для отображения в терминале.

Такой подход делает анализ логов и диагностику процессов значительно удобнее.

Примеры использования команды tee в Linux на практике

1. Логирование вывода скриптов

Bash
./backup.sh | tee -a backup.log

Вы сможете следить за процессом резервного копирования в терминале и параллельно сохранять лог в файл. Это особенно важно для автоматизированных задач, где нужно просматривать историю выполнения.

2. Сохранение вывода sudo-команд

При использовании sudo, часто требуется сохранять логи без потери прав доступа.

Пример:

Bash
sudo dmesg | tee kernel.log

Вывод системных сообщений ядра будет записан в файл kernel.log и показан на экране.

3. Тестирование сетевых соединений

Bash
ping -c 5 google.com | tee ping_results.txt

Так можно быстро собрать информацию о состоянии сети и сохранить её для дальнейшего анализа.

Полезные сочетания с другими командами

tee и awk

Можно совместить команду tee в Linux с awk для фильтрации данных перед записью.

Bash
cat access.log | awk '/404/' | tee errors404.txt

Этот пример сохраняет только строки с кодом ответа 404.

tee и sudo

Если нужно записать вывод команды в файл, к которому нет прав доступа, используйте комбинацию sudo tee:

Bash
echo "127.0.0.1 myapp.local" | sudo tee -a /etc/hosts

Так можно безопасно обновить системные файлы без ошибок прав доступа.

Совет:
Не используйте sudo echo "..." > файл, потому что перенаправление выполняется оболочкой от имени обычного пользователя. sudo tee решает эту проблему корректно.

Когда использовать команду tee в Linux

Используйте команду tee в Linux, когда:

  • нужно записывать вывод команд в файл без потери отображения в терминале;
  • требуется сохранять промежуточные результаты в пайпах;
  • необходимо вести параллельные логи нескольких процессов;
  • вы хотите анализировать работу скриптов и системных сервисов.

Эта команда делает отладку, мониторинг и логирование в Linux более прозрачными и гибкими.

Заключительные советы по работе с tee

  1. Используйте перенаправление ошибок. Если нужно сохранить не только стандартный вывод, но и ошибки: some_command 2>&1 | tee output_with_errors.log Так вы получите полную картину выполнения команды.
  2. Создавайте временные отчёты. С помощью tee можно сохранять результаты диагностики систем в один файл и пересылать его для анализа.
  3. Комбинируйте с cron. Используя tee в скриптах, выполняемых через планировщик cron, вы сохраняете прозрачную историю выполнения задач.

Команда tee в Linux — это мощный инструмент для одновременного вывода и записи данных. Она упрощает ведение логов, анализ ошибок и автоматизацию процессов, делая вашу работу в терминале более продуктивной и безопасной.