pipe stdout-to-file с wc

Я работаю над назначением лаборатории для класса, который иллюстрирует users | wc -w users | wc -w отображая количество пользователей, которые в настоящее время вошли в систему. Инструктор попросил написать данные о выходе users в файл ( users > file ), все еще отображая счет. Моя первоначальная мысль заключалась в том, чтобы изменить исходный пример, чтобы просто прочитать users > file | wc -w users > file | wc -w , но я получаю сообщение об ошибке:

 ambiguous output redirect 

Наша лаборатория Unix в нашем колледже работает по умолчанию в tcsh , и я знаю, что команды могут отличаться между оболочками. Есть ли команда, которая может выполнить это, что я полностью забываю?

Используйте tee :

 users | tee file | wc -w 

Дает в качестве вывода количество пользователей, и он записывает файл с пользователями в качестве контента.


Случай в вашем вопросе :

 command >file | command2 

Это не сработает. С >file вы перенаправляете вывод command в файл file и в то же время вывод записывается в анонимный канал, где команда command2 читается на другом конце. Это неоднозначное перенаправление.

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

Для этого есть команда; это называется tee :

 users | tee file | wc -w 

PS. (Внешние) команды не различаются между оболочками; синтаксис перенаправления ввода и вывода изменяется.