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 делает, что является печатью.

Другие вопросы по тегам