我正在为一个班级做一个实验作业,示例users | wc -w
为显示当前登录的用户数量。讲师要求我们将输出写入users
文件 ( users > file
),同时仍显示计数。我最初的想法是将原始示例更改为简单的 read users > file | wc -w
,但我收到错误:
ambiguous output redirect
我们大学的 Unix 实验室让我们工作,默认情况下tcsh
,我知道 shell 之间的命令可能有所不同。有没有一个命令可以完成我完全忘记的任务?
答案1
使用tee
:
users | tee file | wc -w
给出用户数量作为输出,并将用户作为内容写入一个文件。
你问题中的案例:
command >file | command2
这是行不通的。将>file
输出重定向command
到文件file
,同时输出被写入匿名管道,命令command2
在另一端读取。这是一个不明确的重定向。
该tee
命令将接受一个file
参数,其中tee
写入从标准输入接收到的所有内容。tee
还写入从标准输入到标准输出的所有内容,您可以在其中重定向到更多命令或文件。
答案2
有一个命令可以完成此操作;它的名字叫tee
:
users | tee file | wc -w
附言。 (外部)命令在 shell 之间没有区别;输入和输出重定向语法确实有所不同。