ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Команда Tee в Linux

Команда tee читает из стандартного ввода и записывает как в стандартный вывод, в один или несколько файлов одновременно. Tee чаще всего используется в сочетании с другими командами через piping.

В этой статье мы рассмотрим основы использования команды tee.

Прежде чем перейти к использованию команды tee, давайте начнем с рассмотрения основного синтаксиса:

tee [OPTIONS] [FILE]

Основное использование команды tee – вывести стандартный вывод ( stdout) программы и записать его в файл.

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

df -h | tee disk_usage.txt
Filesystem      Size  Used Avail Use% Mounted on                                                                                                              
udev            1.5G     0  1.5G   0% /dev                                                                                                                    
tmpfs           301M   33M  269M  11% /run                                                                                                                    
/dev/vda2        59G   27G   30G  48% /                                                                                                                       
tmpfs           1.5G     0  1.5G   0% /dev/shm                                                                                                                
tmpfs           5.0M     0  5.0M   0% /run/lock                                                                                                               
tmpfs           1.5G     0  1.5G   0% /sys/fs/cgroup

 

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

 

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

Допустим, вы хотите записать файл, который принадлежит пользователю root как пользователь sudo. Следующая команда завершится ошибкой, потому что sudo не выполняет перенаправление вывода, это произойдет как непривилегированный пользователь.

sudo echo "newline" > /etc/file.conf

 

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

bash: /etc/file.conf: Permission denied

 

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

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

echo "newline" | sudo tee -a /etc/file.conf

 

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

К настоящему времени вы должны хорошо понимать, как использовать команду tee в Linux.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Exit mobile version