tee Linux

Содержание
Введение
Пример
Запись в несколько файлов
Добавить в файл
Игнорировать прерывание

Введение

Наиболее простое использование команды tee заключается в отображении стандартного вывода (stdout) программы и записи его в файл.

Пример

В следующем примере мы используем команду df для получения информации об объеме доступного дискового пространства в файловой системе .

Выходные данные передаются по каналу в команду tee, которая выводит выходные данные на терминал и записывает ту же информацию в файл disk_usage.txt .

df -h | tee disk_usage.txt

Filesystem Size Used Avail Use% Mounted on devtmpfs 903M 0 903M 0% /dev tmpfs 919M 0 919M 0% /dev/shm tmpfs 919M 9.1M 910M 1% /run tmpfs 919M 0 919M 0% /sys/fs/cgroup /dev/mapper/centos-root 14G 7.4G 6.0G 56% / /dev/sda1 1014M 384M 631M 38% /boot tmpfs 184M 0 184M 0% /run/user/1000

Вы можете просмотреть содержимое файла disk_usage.txt с помощью команды cat или команды less, или открыть в редакторе vim

cat disk_usage.txt

Запись в несколько файлов

Команда 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 "новая строка" > /etc/file.conf

Результат будет выглядеть примерно так:

bash: /etc/file.conf: Permission denied

Просто добавьте sudo перед командой tee, как показано ниже:

echo "новая строка" | sudo tee -a /etc/file.conf

tee получит вывод команды echo , повысит уровень разрешений sudo и выполнит запись в файл.

Использование tee в сочетании с sudo позволяет выполнять запись в файлы, принадлежащие другим пользователям.

Пример, с помощью которого я отключаю необходимость постоянно вводить пароль

echo "andrei ALL=(ALL:ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/andrei

Вывод

Команда tee считывает данные со стандартного ввода и записывает их в стандартный вывод и один или несколько файлов.

Похожие статьи
Linux
FAQ
Debian
Ubuntu
CentOS
Rocky
Bash
Настройка сети
Файлы, директории, ссылки…
Изучить свободное место на диске
Объединить .pdf файлы
diff: сравнение файлов
find: поиск файлов
wget: скачивание файлов
kill: завершить процесс
curl
make
signal: системные сигналы
env: переменные окружения
localectl: язык
systemctl: Список активных сервисов
Firewall
SCP: обмен файлами;
SSH: удалённый доступ
cron: задания по расписанию
sudo
Мониторинг ресурсов
C
C++