Команда tee Linux

Иногда нам нужно сохранить вывод команды в файл, чтобы в последствии использовать вывод для других целей. Команда 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

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

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

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

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

cat вывод.txt

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

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

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

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

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

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

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 строчек.

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

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

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

ls

cat вывод4.txt

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

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 выводит соответствующий результат.

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

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

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

cat вывод5.txt

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

Итоги

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

6 комментариев

  1. and Ноябрь 22, 2019 Ответить
    • admin Ноябрь 22, 2019 Ответить
    • Макс Ноябрь 24, 2019 Ответить
  2. archer Ноябрь 22, 2019 Ответить
  3. Dimitri Ноябрь 24, 2019 Ответить
  4. Georg Ноябрь 25, 2019 Ответить

Ответить

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: