8 полезных команд tee в Linux

Почти все опытные пользователи предпочитают использовать интерфейс командной строки при взаимодействии с системами Linux. По умолчанию все команды Linux выводят вывод сюда же в терминал. Но иногда нам необходимо сохранить этот вывод в файлах для целей отладки.

Конечно, мы можем использовать оператор перенаправления для достижения этой цели. Однако, одно из небольших ограничений этого метода заключается в том, что он сохраняет вывод только в файле.

Чтобы преодолеть это ограничение, мы можем использовать команду tee, которая читает из стандартного потока ввода и записывает в стандартный поток вывода файла.

В этом практическом руководстве мы рассмотрим различные примеры использования команды tee. К концу этого руководства пользователи Linux смогут использовать команду tee для выполнения своих повседневных задач.

Синтаксис команды tee

Синтаксис команды tee аналогичен другим командам Linux. На высоком уровне он делится на две группы – OPTIONS и FILES:

tee [OPTIONS] [FILE1] [FILE2] [FILE3] ...

В приведенном выше синтаксисе и OPTIONS, и FILES являются необязательными параметрами.

1. Сохранение вывода в файл в Linux

Как обсуждалось ранее, команда tee отправляет вывод на стандартный вывод, а также в файл. Чтобы понять это, сначала воспользуемся командой echo для вывода текста в терминал:

echo "itshaman.onmypc.net"

Теперь воспользуемся командой tee для записи вывода в файл output.txt:

echo "itshaman.onmypc.net" | tee output.txt

И наконец, просмотрим содержимое файла output.txt с помощью команды cat.

cat output.txt

В приведенном выше выводе видно, что команда tee отправляет вывод в файл, а также в стандартный поток вывода.

2. Добавление вывода в файл в Linux

По умолчанию команда tee перезаписывает выходные файлы. Однако мы можем избежать этого, включив режим append, который добавляет вывод в конец файла:

echo "itshaman.onmypc.net" | tee -a output.txt 
cat output.txt

В этом примере мы использовали опцию -a, чтобы включить режим append.

3. Запись вывода в несколько файлов в Linux

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

echo "itshaman.onmypc.net" | tee file-1.txt file-2.txt file-3.txt

В этом примере мы указали несколько файлов в качестве аргументов командной строки. Теперь воспользуемся командой head, чтобы вывести содержимое файлов:

head -v file-1.txt file-2.txt file-3.txt

4. Передача вывода одной команды другой

Кроме того, мы также можем использовать команду tee с оператором pipe (|). Этот метод удобен, когда мы хотим сохранить вывод, а также передать его другой команде.

echo "itshaman.onmypc.net" | tee example.txt | wc -c
cat example.txt

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

5. Скрытие вывода файла в Linux

В предыдущих примерах мы использовали команду tee для отправки вывода в стандартный вывод. Однако в некоторых редких случаях мы хотим удалить вывод. В таких случаях мы можем перенаправить вывод на устройство /dev/null:

echo "itshaman.onmypc.net" | tee output.txt > /dev/null
cat output.txt

6. Запись вывода в привилегированный файл

Иногда нам нужно записать вывод в привилегированный файл. Однако мы не можем добиться этого, используя только команду tee. В таких случаях мы можем использовать комбинацию команд sudo и tee.

Сначала изменим права собственности на файл с помощью команды chown:

sudo chown root:root output.txt

Затем добавим текст в файл output.txt с помощью следующей команды:

echo "itshaman.onmypc.net" | sudo tee -a output.txt

И наконец, проверим, что файл был успешно обновлен.

7. Редактирование привилегированного файла в Linux

Подобным образом мы можем использовать комбинацию команд sudo и tee для редактирования привилегированного файла. Чтобы понять это, сначала откроем привилегированный файл в редакторе nano и добавим в него текст:

nano output.txt

Теперь воспользуемся следующей командой Vim для обновления файла:

:w !sudo tee %

8. Сигнал игнорирования прерываний (SIGINT)

В Linux мы используем комбинацию клавиш Ctrl + c, чтобы послать сигнал SIGINT. По умолчанию этот сигнал приводит к завершению процесса. Однако мы можем использовать опцию -i, чтобы игнорировать прерывание:

echo "itshaman.onmypc.net" | tee -i example.txt
cat example.txt

В этом руководстве мы познакомились с командой tee на некоторых практических примерах. Пользователи могут обращаться к этому руководству при работе с системами Linux из интерфейса командной строки.

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен www.tecmint.com

Похожие статьи

Комментарии (0)