Дополнительно
Какова цель 'тройник'?
Все обычаи тройник
я видел были такие:
do_something | tee -a logfile
Или:
do_something_else | tee logfile
Это тройник
придумана для тех, что Дон'т знаю, что вы можете сделать то же самое с трубой перенаправления консоли? Такие как:
do_something >> logfile
Или:
do_something_else > logfile
Это'ы практически одинаковы, и это занимает меньше просмотров клавиатуры ввести. Какие скрытые возможности я не вижу в тройник
?
91
10
То, что вы Don'т видите, что
выполнить_действие | тройник -лог
ставит выход вжурнале
и в stdout, а выполнить_действие >> журнал` ставит его только в лог-файл.Цель
футболка
- создать один вход, несколько сценариев выхода - так же, как в 'Т' пересечения.Редактировать
Там были комментарии, как
тройник
дает возможность более качественного использованиясудо
. Это не относится к делу:кошка
,ДД
или лучшебуфер
предоставить такую возможность с более высокой производительностью, если вы не'т нужно несколько выходов. Используйтетройник
для чего он предназначен, а не для того, что ее "также могу сделать и"Тройник
не бесполезноМожет быть, вы знали об этом? Если нет, читайте дальше! Или если вы знаете как это работает, но разве'т знаете почему он существует, пропустить до конца, чтобы увидеть, как она вписывается в с философия Unix.
Что это цель
тройник
?В своей простейшей форме, она принимает данные со стандартного ввода и пишет на стандартный вывод и один (или более) файлов. Оно было приравнено к сантехника тройник шт в том, как она разделяет один вход на два выхода (два направления).
Примеры
Позвольте'возьмем Ваш первый пример:
Это имеет выход
выполнить_действие
и добавляет его к файлу журнала, а также отображать его пользователю. В самом деле, страница Википедии отройник
это как второй пример:Следующий пример имеет еще одно применение: эскалация разрешения:
Или возможно вы хотите взять вывода одной команды, пишут, что где-то, а также использовать его в качестве ввода для другой команды?
и GT; $ кронтаб -л | тройник crontab-backup.txt | СЭД 'ы/Старый/Новый/' | кронтаб –
(кредит тройник примеры использования команды)
Тройник
работает с философия Unix:(Кредит основы философия Unix)
тройник
подходит ко всем из них:Это не одно и то же...
Как представляется, следующие несколько эквивалентны, но они'повторно не:
в
в
Критическое различие в том, что бывший написал данные только по имени файла, а второй написал "привет" к терминалу (
стандартный вывод
) и в имени файла, как показано ниже:тройник
позволяет записать данные в файл и использовать его в трубопровод и далее, что позволяет вам делать полезные вещи - все равно, что держать данные на полпути через трубопровод:Или, вы можете записать в файл с более высоким уровнем привилегий, не давая всей трубопроводной повышенными привилегиями (здесь " Эхо " работает как пользователь, а
тройник
записывает в файл как пользовательroot
):С
тройник
, вы можете написать много файлов (поток stdout и``):Это's также можно использовать
метод exec
стройник
для записи всех сценарий'ы выходной файл, в то время как все еще позволяя наблюдателя (стандартный вывод
) для просмотра данных:Это тройник:
Т-образный патрубок. Он имеет на входе, и две отдельные розетки. Другими словами, он разбивает одну трубу в два; подобно развилке на дороге.
Аналогично,
тройник
труба (|
), которая позволяет перенаправить стандартный поток ввода двух отдельных выходов.Пример Скажем, например, вы вводите команды
ls /
. Вы'll получить выходной сигнал, который выглядит примерно так:Перенаправить вывод в текстовый файл, команды `ls / > ls.txt и никакой вывод не отображается в консоли, только в результирующий текстовый файл.
Хотите увидеть результат, и передать его в текстовый файл одновременно? Добавить
тройник
в вашу трубу (|
), т. е.:ЛС / | тройник ls.txt
Сравните две:
Нет. Вы случайно не упомянуть один из немногих примеров, когда вы действительно могли бы перенаправить в файл, используя в
>
и>>
операторов.Но тройник может сделать гораздо больше. Потому что ты трубы к нему, можно передать что-то еще.
Хороший пример указан на странице Википедии:
В принципе, можно трубу тройник, чтобы можно было потом трубка от тройника к чему-то еще. Если все вы хотите сделать, это написать файл журнала, да, тогда вы не'т действительно нужен тройник.
футболка
далек от бесполезных. Я использую его все время, и я рад, что он существует. Это's очень полезный инструмент, если у вас есть трубопровод, который вы хотите разделить. Самый простой пример заключается в том, что у вас есть какой-нибудь каталог$д
, Что вы хотите tar и вы также хотите, чтобы обсудить это, потому что вы'вновь параноик (как я) и Дон'т доверять носитель для хранения данных надежно. Вы можете писать его на диск сначала, а потом обсудим это, но, что'd неудачной, если архив будет поврежден, прежде чем она'с хэшированными. Кроме того, вы'd должны прочитать его и, если вы работаете с файлами, которые несколько сотен Гб много, вы будете знать, что вы действительно Дон'т хотите, чтобы прочитать их снова, если это не'т должны быть.Так что я сделать это просто так:
Это создает смолы мяч и трубы его на тройник, который передает его на два суб-снарядов, в одном из которых он'ы хэшируется и в другой из которого она's написано на диске.
Это's также отличный, если вы хотите выполнить несколько операций на большой файл:
Один раз считывает файл, хэширует его (так можно проверить, есть ли's по-прежнему, как это должно быть), извлекает его, и копирует его в другое место. Не нужно читать его три раза за это.
Придираться на @bertieb'ы ответьте, что говорит Этот пример показывает, тройник используется, чтобы обойти ограничение в команду sudo. судо не в состоянии передать стандартный вывод в файл.
Нет никаких ограничение, только непонимание того, как команда обрабатывается.
Пример:
судо Эхо 0 > /труды/системы/нетто/протоколов IPv4/ip_forward
В текущей оболочки разбирает командную строку. Он находит перенаправление вывода и выполняет это. Затем он выполняет команду, которая является `
судо
и обеспечивает оставшееся командной строки в качестве аргументов выполняемой команде. Если текущая оболочка не имеет прав суперпользователя, то перенаправление вывода не удастся.Эхо 0 | судо тройник /труды/системы/нетто/протоколов IPv4/ip_forward
Это работает, потому что перенаправление вывода откладывается в команду
тройник`, который в этот момент не работает, потому что он был казнен через
судо``.судо Баш-с "Эхо 0 > /труды/системы/нетто/протоколов IPv4/ip_forward-то"
Это работает, потому что оболочка делает перенаправление суперпользователя.
Как другие люди упомянули, выходной трубопроводы
тройник
команда пишет, что вывод в файл и на stdout.Я часто использую
тройник
, когда я хочу, чтобы захватить выход из команды, которая занимает много времени для запуска, а также желая осмотреть выход, как команда делает его доступным. Таким образом, я не'т придется ждать команды, чтобы закончить бег, прежде чем я проверить выходной.То, что не'т, кажется, еще не упоминалось (если я не пропустил), что тройник команды также можно писать в несколько файлов одновременно. Например:
буду писать все
*.ПНГ файлы в текущей директории в два разных файла (
a.txt и b.txt`) одновременно.На самом деле, вы можете ввести текст в несколько разных файлов одновременно с
тройник
такой:Наиболее часто используется тройник, чтобы увидеть текст на терминале, в то же время вы посылаете его в файл (или файлы). Формулировка вашего вопроса предполагает, что вы только когда-нибудь написать текст в лог-файл. У меня есть скрипты, которые пишут списки имен файлов и имен каталогов для запуска файлов (будут обработаны другие скрипты асинхронно) и я использую тройник туда же отправить содержимое в stdout. Все стандартный вывод направляется в журналы. Так что у меня есть мой текст, где я хочу и у меня есть запись в журнале записи, что я сделал это, все в одном 'Эхо' заявление
тройник-это также лучший способ в Unix для изготовления нескольких идентичных файлов. Я использую его иногда для принятия несколько пустых файлов, как это ...
Представьте, вы хотите записать вывод команды в лог-файл и печатать в stdout. Когда вам нужно сделать это одновременно, тогда вам нужно
тройник
.В случае использования для построения сценариев, которые пишут все построить в stdout (например, Дженкинс), но важных вещах, в то же время в отдельном файле журнала (для кратких сообщений).
Вы'МР-настоящему заскучать
тройник
когда вы должны скриптов в Windows. Неттройник
, и это действительно раздражает.