Linux/Debian - Что делает 'pee' в moreutils?
Недавно я обнаружил пакет 'moreutils' в Debian (и Ubuntu). Это коллекция удобных инструментов Unix.
Одна из команд - "Пи". На странице руководства написано:
моча, как чай, но для труб.
Однако это короткая справочная страница, я подал ошибку об этом. Кто-нибудь знает, что он делает, как его использовать, зачем его использовать?
2 ответа
Вот что вы можете сделать с мочой:
seq 5 -1 1 > file
cat file |pee 'sort -u > sorted' 'sort -R > unsorted'
Так что Пи работает с трубами оболочки вместо файлов.
bash не нуждается в pee, он может открывать команды оболочки в виде файлов:
cat file |tee >(sort -u > sorted) >(sort -R > unsorted)
Это, вероятно, легче понять, если вы использовали tee
первый. Этот полезный старый инструмент принимает стандартный ввод и записывает в несколько файлов, плюс стандартный вывод. Следующие:
echo "Hello world" | tee one two
Создадим два файла с именем one
а также two
оба содержат строку Hello world
, Он также будет распечатан на ваш терминал.
Сейчас pee
выполняет аналогичную функцию, но вместо перенаправления вывода на несколько файлов он перенаправляет на несколько вторичных команд, а именно конвейеры. Немного отличается от tee
в том смысле, что он не отправляет исходный stdin на stdout, потому что не имеет смысла объединять его с выводом вторичных команд. Следующий очень простой пример:
echo "Hello world" | pee cat cat
Выведет строку Hello world
на ваш терминал дважды. Это потому, что каждый из двух случаев cat
получает стандартный вывод и делает то, что cat
делает, что является печатью.