Введение
Команда tee
читает со стандартного ввода и записывает как на стандартный вывод, так и в один или несколько файлов одновременно. tee
в основном используется в сочетании с другими командами через конвейер.
В этом уроке мы рассмотрим основы использования команды tee
.
Синтаксис команды тройника
Синтаксис команды tee
следующий:
tee [OPTIONS] [FILE]
OPTIONS
:-a
(--append
) — не перезаписывать файлы, а добавлять их в файлы данных.-i
(--ignore-interrupts
) — игнорировать сигналы прерывания.- Используйте
tee --help
для просмотра всех доступных опций. FILE_NAMES
— один или несколько файлов. В каждый из которых записываются выходные данные.
Как использовать команду Тройник
Самое простое использование команды 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/nvme 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/nvme 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-interrupt
). Это полезно, когда вы останавливаете команду во время выполнения CTRL + C.
command | tee -i file.out
Скрыть вывод
Если вы не хотите, чтобы команда tee
выполняла запись в стандартный вывод, вы можете перенаправить ее в /dev/null
:
command | tee file.out >/dev/null
Использование тройников в сочетании с 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
читает стандартный ввод и записывает его в стандартный вывод и в один или несколько файлов.