我想建立在檔案中找到的所有 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