我想创建在文件中找到的所有 TCP 服务的排序列表/etc/services
,将命令的输出通过管道传输grep tcp /etc/services
到命令中sort
,然后将该管道的输出重定向到文件中~/pipelab.txt
。
我不断收到一条错误消息,表明我的输出错误,但我不知道为什么。
这是我上次尝试过的:
grep tcp /etc/services > ~/pipelab.txt | sort
答案1
您正在尝试将输出重定向grep
到文件和通过管道将其传输到sort
.你不能那样做,至少不能那样做。
相反,您实际上只想将其提供给排序:
grep tcp /etc/services | sort
然后你想重定向已排序输出(即,排序结果)到文件,因此您将重定向放在排序之后:
grep tcp /etc/services | sort > ~/pipelab.txt
管道和重定向都是通过更改命令输出的位置来工作的。其中两个人在争夺输出grep
(最终,重定向获胜,并将未排序的输出写入您的文件)。
答案2
> ~/pipelab.txt
显然属于管道操作符同一侧的命令|
。即,您将grep
输出重定向到文件,而不是通过管道将其输入sort
:
grep tcp /etc/services | sort > ~/pipelab.txt