В этой статье мы рассмотрим основы использования команды 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
читает из стандартного ввода и записывает его в стандартный вывод и в один или несколько файлов.
Добавить комментарий