
Команда 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 считывает данные из стандартного ввода и записывает их в стандартный вывод и один или несколько файлов.
Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии.
Связанные руководства