Как использовать команду tee в Linux

Если вы когда-либо использовали канал и перенаправляли через оболочка على Linux Иногда вам также может потребоваться помощь с помощью команды tee.

Как использовать команду tee в Linux

Что делает тройник?

заказать как

ls

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

заказать как

ls > file123

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

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

ls | tee file123

Зачем использовать Tee, если аналогичную команду можно запустить дважды?

В приведенном выше примере вам, очевидно, не нужно тройник Если вы можете выполнить команду в обычном режиме, выполните ее снова и перенаправьте вывод в какой-либо файл. Однако вы столкнетесь с ситуациями, когда вывод будет одиноким. Представьте себе сценарий, в котором вы пытаетесь диагностировать проблему. Вы можете запустить диагностику | тройник error.log. Ошибки, которые вы получаете, могут быть уникальными. Вы хотите отобразить это на экране, чтобы вы могли видеть, что происходит, когда вы что-то проверяете. Но вы также хотите сохранить эти ошибки в файл, чтобы вы могли просмотреть их позже или вставить результат в дискуссионный форум и спросить об этом людей.

Есть еще одна часто встречающаяся ситуация, в которой вам нужно будет тройник , то есть: вы хотите записать вывод команды в место, где только пользователь root может читать или писать. Так не пойдет.

/sbin/blkid > /root/somefile

Тогда вы можете подумать: «Ну, конечно, просто используйте Sudo! » И вы удивитесь, что это тоже не сработает:

sudo blkid > /root/somefile

Это потому, что после реализации sudo blkid Вы по-прежнему вошли в систему как обычный неосновной пользователь. и пытаюсь оболочка (Как правило колотить) написать в / корень / некоторый файл используя обычные учетные данные пользователя. Чтобы решить эту проблему, вы можете использовать тройник:

/sbin/blkid | sudo tee /root/somefile

Добавить текст и перенаправить ошибки

тройник Полезная, но простая команда; существенный | тройник какой-то файл В большинстве случаев достаточно. Однако есть два сценария, которые могут потребовать этих советов.

Первое, что нужно знать, это то, что тройник По умолчанию он перезаписывает файл. Если ты бежишь

ls | tee somefile

а потом

ls /tmp | tee somefile

Вторая команда перезапишет содержимое некоторых файлов, и вы увидите только содержимое последней выполненной команды. Чтобы изменить это поведение, вы можете сделать тройник Добавляет текст вместо ввода. Для этого просто используйте тумблер. -a.

ls | tee -a somefile

Второе, что нужно знать, это то, что не все выходные данные одинаковы. Сообщения об ошибках обрабатываются по-разному, и хотя они появляются на экране, они не рассматриваются. стандартный вывод , поэтому его не заметят тройник. (Считается STDERR.) Вот пример GREP.

grep -r L2TP /etc | tee somefile

Будет отображено что-то вроде следующего изображения.

Как использовать команду tee в Linux

Письма с отказом в разрешении на адрес STDERR. Единственное, что записывается в stdout, - это выделенный текст. По этой причине вы заметите, что содержимое «какой-нибудь файлЭто то, что показано на изображении ниже.

Как использовать команду tee в Linux

В этом случае, где используется. GREP Для текстового поиска полезно не пересылать сообщения об ошибках в файл. Это просто заполнение файла ненужными файлами. Вы просто хотите увидеть найденные результаты. Но когда вам нужны сообщения об ошибках, используйте 2> & 1 , который перенаправляет STDERR мне стандартный вывод.

grep -r L2TP /etc 2>&1 | tee somefile

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

Заключение

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

Перейти к верхней кнопке