Учебное пособие по командам Tee в Linux с примерами для начинающих
При работе с терминалом в Linux доступно множество утилит командной строки, которые облегчат вашу жизнь. Одной из таких утилит является Tee
. В этом кратком руководстве мы узнаем, что такое Tee и как использовать команду Tee в Linux, на практических примерах.
Знакомство с командой Tee
tee — это простая утилита командной строки, которая принимает входные данные и записывает выходные данные в файл и стандартный вывод (т. е. терминал). Команда Tee в основном будет использоваться в сценариях оболочки, когда вы хотите перенаправить вывод в несколько файлов и выполнить дальнейшую обработку вывода.
Команда Tee является частью GNU coreutils
, поэтому она предустановлена во всех дистрибутивах Linux.
Чтобы проверить, доступна ли команда tee в вашем дистрибутиве Linux, выполните следующую команду:
$ which tee
/usr/bin/tee
Чтобы проверить версию тройника, вы можете использовать флаг --version
.
$ tee --version
tee (GNU coreutils) 8.32
Отобразить справку по команде tee
Если вы никогда не использовали команду tee, рекомендуется начать с раздела справки по команде tee.
Вы можете получить доступ к странице руководства по команде tee, чтобы узнать больше об этой утилите.
man tee
Вы также можете передать аргумент --help
команде tee, чтобы отобразить справочное руководство.
tee --help
Синтаксис команды тройника
Типичный синтаксис команды Tee приведен ниже:
тройник [ОПЦИЯ]… [ФАЙЛ]…
Он принимает флаги и имя файла, куда будет перенаправлен вывод.
Есть два важных флага, которые вы чаще всего будете использовать с командой tee.
-a
,--append
флаг: добавить к файлам.- Флаг
-i
,-ignore-interrupts
: игнорировать сигналы прерываний.
Теперь позвольте мне показать вам несколько примеров команды tee в Linux.
Примеры команд Linux Tee для начинающих
Как уже говорилось, команда tee принимает входные данные и выводит выходные данные на терминал, а также файл, который передается в качестве аргумента.
В приведенном ниже примере команда tee принимает входные данные команды echo
и выводит выходные данные на терминал, а также в файл hello.txt
.
$ echo "Welcome to OSTechNix" | tee hello.txt
Welcome to OSTechNix
Давайте проверим содержимое файла hello.txt
:
$ cat hello.txt
Welcome to OSTechNix
Пример использования команды Tee в Linux
Используйте команду tee с оператором Pipe
Команда Tee предназначена не только для вывода стандартного ввода на терминал, но и для передачи его в другую программу для дальнейшей обработки.
В основном команда tee будет использоваться в сочетании с оператором pipe
(|) в сценариях оболочки.
Взгляните на приведенный ниже пример.
$ echo "Hello world" | tee hello.txt | rev
dlrow olleH
$ cat hello.txt
Hello world
Позвольте мне объяснить, что происходит, когда вы запускаете приведенную выше команду.
- Команда
echo
отправит свой вывод"Hello World"
в качестве входных данных для командыtee
через канал. - Команда
Tee
сохранит вывод в заданном файлеhello.txt
. - Вместо вывода вывода на терминал (что является поведением по умолчанию), команда
tee
передает строку"Hello World"
в качестве входных данных дляrev
команда, которая печатает строку в обратном порядке.
Вот еще один пример.
Следующая команда создает каталог с именем «ostechnix», подсчитывает количество символов в «ostechnix» и выводит «ostechnix» на терминал:
echo "ostechnix" | tee >(xargs mkdir) >(wc -c)
Внимание! Вам может потребоваться использовать sudo
с командой tee
, если вы создаете файлы в каталогах, к которым у вас нет доступа. обычный пользователь.
Передача нескольких файлов
Команда Tee также принимает несколько файлов в качестве аргументов и сохраняет выходные данные в каждом файле.
echo "Welcome to OSTechNix" | tee hello1.txt hello2.txt hello3.txt
Welcome to OSTechNix
Проверим содержимое каждого файла:
cat hello1.txt
Welcome to OSTechNix
cat hello2.txt
Welcome to OSTechNix
cat hello3.txt
Welcome to OSTechNix
Отправьте вывод в несколько файлов с помощью команды tee
Переопределить или добавить
По умолчанию команда tee
выполняет поиск, если файл уже доступен, и заменяет данные новыми. Если файл недоступен, он будет создан.
Если вы хотите добавить данные вместо переопределения, используйте флаг -a
или --append
.
$ cat hello1.txt
Welcome to OSTechNix
$ echo "I am using PoP_OS Cosmic Desktop" | tee -a hello1.txt
I am using PoP_OS Cosmic Desktop
$ cat hello1.txt
Welcome to OSTechNix
I am using PoP_OS Cosmic Desktop
Объединение Tee с оператором перенаправления
Если вы хотите не выводить выходные данные на терминал, а просто записывать их в файлы, вы можете объединить оператор перенаправления с командой tee.
Это идеальный случай, только если команда тройника идет последней в вашей цепочке каналов. Если выходные данные tee передаются по конвейеру другой команде, как
показано в первом примере, нет необходимости использовать оператор перенаправления.
echo "I am using PoP_OS Cosmic Desktop" | tee -a hello1.txt &> /dev/null
Сигналы прерывания
Команда Tee имеет возможность прервать SIGINT с помощью флага -i
или --ignore-interrupts
.
Значение: если вы нажмете CTRL + C
в своем терминале во время запуска команды tee с флагом -i
, команда tee прервет сигнал и выполнит корректный выход, прочитав EOF из ТРУБЫ.
{ echo Hello world;sleep 10; } | tee -i hello1.txt
Hello world
^C
cat hello1.txt
Hello world
Краткое содержание
Tee — простая программа, которую вы можете не использовать ежедневно. Однако знание команды tee пригодится при написании сценариев оболочки. Надеюсь это поможет.