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++

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: