Команда Tee в Linux с примерами

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

В этой статье мы рассмотрим основы использования команды tee .

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

Синтаксис команды tee следующий:

tee [OPTIONS] [FILE]
  • OPTIONS :
    • -a ( --append ) — не перезаписывать файлы вместо добавления к данным файлам.
    • -i ( --ignore-interrupts ) — игнорировать сигналы прерывания.
    • Используйте tee --help чтобы просмотреть все доступные параметры.
  • FILE_NAMES — один или несколько файлов. В каждый из которых записываются выходные данные.

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

В основном команда tee используется для отображения стандартного вывода ( stdout ) программы и записи его в файл.

В следующем примере мы используем команду df для получения информации об объеме доступного дискового пространства в файловой системе. Вывод передается по конвейеру команде tee , которая отображает вывод на терминал и записывает ту же информацию в файл disk_usage.txt .

df -h | tee disk_usage.txt
Filesystem      Size  Used Avail Use% Mounted on
dev             7.8G     0  7.8G   0% /dev
run             7.9G  1.8M  7.9G   1% /run
/dev/nvme0n1p3  212G  159G   43G  79% /
tmpfs           7.9G  357M  7.5G   5% /dev/shm
tmpfs           7.9G     0  7.9G   0% /sys/fs/cgroup
tmpfs           7.9G   15M  7.9G   1% /tmp
/dev/nvme0n1p1  511M  107M  405M  21% /boot
/dev/sda1       459G  165G  271G  38% /data
tmpfs           1.6G   16K  1.6G   1% /run/user/120

Вы можете просмотреть содержимое файла disk_usage.txt с помощью команды cat .

Запись в несколько файлов

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

command | tee file1.out file2.out file3.out

Добавить в файл

По умолчанию команда tee перезапишет указанный файл. Используйте параметр -a ( --append ), чтобы добавить вывод в файл :

command | tee -a file.out

Игнорировать прерывание

Чтобы игнорировать прерывания, используйте параметр -i ( --ignore-interrupts ). Это полезно, когда вы останавливаете команду во время выполнения с помощью CTRL+C и хотите, чтобы tee завершился корректно.

command | tee -i file.out

Скрыть вывод

Если вы не хотите, чтобы tee выводил данные на стандартный вывод, вы можете перенаправить его на /dev/null :

command | tee file.out >/dev/null

Использование tee в сочетании с sudo

Допустим, вы хотите записать в файл, который принадлежит пользователю root как пользователю sudo. Следующая команда завершится ошибкой, потому что перенаправление вывода не выполняется sudo. Перенаправление выполняется от имени непривилегированного пользователя.

sudo echo "newline" > /etc/file.conf

Результат будет выглядеть примерно так:

bash: /etc/file.conf: Permission denied

Просто добавьте sudo перед командой tee как показано ниже:

echo "newline" | sudo tee -a /etc/file.conf

tee получит вывод команды echo , повысит разрешения до sudo и запишет в файл.

Использование tee в сочетании с sudo позволяет записывать файлы, принадлежащие другим пользователям.

Выводы

Команда tee читает из стандартного ввода и записывает его в стандартный вывод и в один или несколько файлов.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

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