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 считывает данные со стандартного ввода и записывает их в стандартный вывод и один или несколько файлов.
Автор статьи: Андрей Олегович