Команда tee читает из стандартного ввода и записывает как в стандартный вывод, в один или несколько файлов одновременно. Tee чаще всего используется в сочетании с другими командами через piping.
В этой статье мы рассмотрим основы использования команды 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
udev 1.5G 0 1.5G 0% /dev
tmpfs 301M 33M 269M 11% /run
/dev/vda2 59G 27G 30G 48% /
tmpfs 1.5G 0 1.5G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup
Вы можете проверить содержимое файла disk_usage.txt
с помощью команды cat.
Команда tee также может записывать в несколько файлов. Для этого просто укажите список файлов через пробел после команды 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
Допустим, вы хотите записать файл, который принадлежит пользователю root как пользователь sudo. Следующая команда завершится ошибкой, потому что sudo не выполняет перенаправление вывода, это произойдет как непривилегированный пользователь.
sudo echo "newline" > /etc/file.conf
Вывод будет выглядеть примерно так:
bash: /etc/file.conf: Permission denied
Вы можете использовать команду tee
вместе с sudo для записи в файлы, принадлежащие другим пользователям.
Просто добавьте sudo
перед командой tee
, как показано ниже:
echo "newline" | sudo tee -a /etc/file.conf
Tree получит вывод команды echo
, повысит права на sudo и запишет в файл.
К настоящему времени вы должны хорошо понимать, как использовать команду tee в Linux.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.