パイプとは
CoddyのTerminalジャーニー「基礎」セクションの一部。レッスン 43/82。
リダイレクトを使うと出力をファイルに送れますが、あるコマンドの出力を別のコマンドに直接送りたい場合はどうすればよいでしょうか?そこで役立つのがパイプです。
パイプは、|記号を使って、あるコマンドの標準出力を別のコマンドの標準入力に接続します。中間結果をファイルに保存する代わりに、データはコマンド間を直接流れます。
cat names.txt | sortこれはcat names.txtの出力を受け取り、そのままsortに渡します。一時ファイルを作成せずに、並べ替えた結果が画面に表示されます。
パイプがなければ、複数の手順が必要になります。
cat names.txt > temp.txt
sort < temp.txt
rm temp.txtパイプを使うと、同じことを1つの簡潔なコマンドで実現できます。パイプラインの各区間のようにコマンドをつなぐものだと考えてください。データは一方の端から入り、各コマンドを順番に通って、最後の出力にたどり着きます。
チャレンジ
簡単パイプを使ってfruits.txtの内容を読み取り、1つのコマンドでアルファベット順に並べ替えましょう。
次のことを行うコマンドを実行してください。
catを使ってfruits.txtを読み取る|記号を使って出力をsortにパイプで渡す
ヒント: 形式は
cat filename | sortです。catの出力は、中間ファイルを必要とせず、そのままsortに渡されます。
自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Terminalプレイグラウンド