Команда tee в Linux: как сохранить вывод и продолжить работу

Команда tee в Linux: как сохранить вывод и продолжить работу

Представьте, что вы запускаете в терминале сложную команду, и ее результат нужен вам не только на экране, но и в файле. Перезапускать все заново? Нет, есть способ проще и элегантнее!

Команда tee — это ваш надежный помощник, который действует как тройник в сантехнике. Она берет поток данных из одного источника и направляет его одновременно в несколько «русл». Вы получаете мгновенный вывод на экран и одновременно сохраняете его в один или даже несколько файлов.

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

Хотите добавлять новую информацию в старый файл, а не перезаписывать его целиком? Легко. Нужно записать вывод сразу в три разных места? И это не проблема. А что, если требуется спрятать «шумный» вывод от команды, тихо сохранив его в файл? И с этим команда tee справится на ура.

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

Готовы превратить вашу работу в терминале в более эффективный и организованный процесс? Тогда погружайтесь в статью, где вас ждут наглядные примеры и готовые рецепты для применения.


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

Суть ее работы можно описать заглавной буквой T — команда tee linux принимает данные из одного источника и может сохранять их на выходе в нескольких местах. То, как она может использоваться в Linux, хорошо видно на нескольких примерах, которые приведены ниже.


Содержание статьи

Синтаксис команды tee

Синтаксис команды достаточно простой:

$ tee опции файл

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

  • -a или -append - Используется для записи вывода в конец существующего файла.
  •  -i или -ignore-interrupts - Используется, чтобы игнорировать прерывающие сигналы.
  • -help - Используется для показа всех возможных операций.
  • -version - Используется для показа текущей версии этой команды.

Для сохранения вывода команды можно передать один или несколько файлов.

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

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

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

ls -la | tee вывод.txt

cat вывод.txt

Здесь первая команда показала вывод списка файлов в текущем каталоге в терминал и записала полученные данные в файл вывод.txt

Команда tee в Linux: как сохранить вывод и продолжить работу

Вторая команда показала содержимое файла вывод.txt

Команда tee в Linux: как сохранить вывод и продолжить работу

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

Если вывод любой команды записать в существующий файл с применением команды tee и операции -a, содержимое файла не будет перезаписано. Здесь вывод команды pwd будет добавлен в конец файла вывод.txt Запустите следующие команды с помощью терминала:

pwd | tee -a вывод.txt

cat вывод.txt

Здесь первая команда отображает вывод pwd в терминал и записывает вывод в конец файла вывод.txt Вторая команда используется для выделения вывода файла. Показано, что файл вывод.txt содержит оба результата: из предыдущего примера и из этого.

Команда tee в Linux: как сохранить вывод и продолжить работу

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

Команда tee может использоваться для вывода любой команды сразу в несколько файлов. Для этого необходимо указать имена файлов, разделив их пробелом. Используйте следующие команды для сохранения вывода date в два файла: вывод1.txt и вывод2.txt

date | tee вывод1.txt вывод2.txt

cat вывод1.txt вывод2.txt

Здесь первая команда выводит текущее системное время и сохраняет полученные результаты в два файла вывод1.txt и вывод2.txt Вторая команда показывает идентичное содержимое обоих файлов.

Команда tee в Linux: как сохранить вывод и продолжить работу

4. Игнорируем прерывание сигнала

Команда tee linux с опцией -i используется в этом примере, чтобы игнорировать любые прерывания во время ее выполнения. Таким образом, команда будет выполнена правильно, даже если пользователь нажимает CTRL+C. Выполните следующие команды в терминале.

wc -l вывод.txt | tee -i вывод3.txt

cat вывод.txt

cat вывод3.txt

Здесь первая команда считает количество строчек в файле вывод.txt и сохраняет полученный результат в файл вывод3.txt Вторая команда показывает содержимое файла вывод.txt, который содержит 37 строчек. Третья команда показывает содержимое файла вывод3.txt, в котором указано, что он действительно содержит 37 строчек.

Команда tee в Linux: как сохранить вывод и продолжить работу

5. Перенос вывода команды tee в другую команду

Вывод команды tee может быть перенесен в другую команду. В этом примере вывод из первой команды переносится в tee, а ее вывод — в другую команду. Запустите следующие команды в терминале:

ls | tee вывод4.txt | wc -lcw

ls

cat вывод4.txt

Здесь первая команда используется для записи вывода ls в файл вывод4.txt и подсчета общего числа строк, слов и символов в файле вывод4.txt Вторая команда используется для отображения вывода команды ls, а третья — для отображения содержимого файла вывод4.txt

Команда tee в Linux: как сохранить вывод и продолжить работу

6. Команда tee и скрипты

Команда tee также может использоваться для записи вывода bash-скрипта в файл. Создайте bash-файл с приведенным кодом, который возьмет два входных числа из аргументов командной строки и выведет сумму этих чисел. Команда tee используется в этом примере для записи вывода add.sh в файл результат.txt

add.sh

#!/bin/bash
a=$1
b=$2
((result=$a+$b))
echo "The addition of $a+$b=$result"

Запустите следующую команду в терминале для записи файла и отображения его содержимого.

bash add.sh 40 80 | tee результат.txt

cat результат.txt

Здесь числа 40 и 80 переносятся в качестве аргументов командной строки в скрипт add.sh и вывод записывается в файл результат.txt Команда cat выводит соответствующий результат.

Команда tee в Linux: как сохранить вывод и продолжить работу

7. Как скрыть вывод команды в терминале

Если вы хотите записать вывод прямо в файл и не показывать его в терминале, используйте /dev/null с командой tee. Для этого выполните следующие команды.

df | tee вывод5.txt > /dev/null

cat вывод5.txt

Здесь первая команда используется для записи вывода команды df в файл вывод5.txt, при этом вывод не показывается в терминале. Вторая команда показывает полученный результат.

Команда tee в Linux: как сохранить вывод и продолжить работу

Итоги

Вывод любой команды может использоваться для нескольких целей. Используя команду tee с разными опциями, можно сохранить вывод команды в нескольких файлах. Применение команды tee в наиболее распространенных случаях хорошо показано в этой инструкции с примерами. Надеемся, читателю будут полезны приведенные упражнения.

Оставить комментарий


Кликните на изображение чтобы обновить код, если он неразборчив