/etc/services
ファイル内で見つかったすべての TCP サービスのソートされたリストを作成し、コマンドの出力を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
パイプとリダイレクトはどちらも、コマンドの出力先を変更することで機能します。 2 つのパイプとリダイレクトが出力先を巡って争っていましたgrep
(最終的にはリダイレクトが勝ち、ソートされていない出力がファイルに書き込まれました)。
答え2
> ~/pipelab.txt
明らかに、パイプライン演算子の同じ側のコマンドに属します|
。つまり、grep
出力をパイプするのではなく、ファイルにリダイレクトしますsort
。
grep tcp /etc/services | sort > ~/pipelab.txt