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