CHAPTER 4 · 7 LESSONS · 91 問

つなぐ

コマンドの出力を次のコマンドへ渡す。結果をファイルに残す。エラーだけ分ける。

コマンドラインがいちばん強いのはここだよ。小さな道具をつないで、その場で必要なものを組み立てる

鍵になるのは「出口」と「入口」という考え方。どのコマンドにも出口が2つ(ふつうの結果 = 標準出力 / エラー = 標準エラー出力)と入口が1つ(標準入力)ある。

  • > … 出口をファイルに向ける(上書き
  • >> … 出口をファイルの末尾に足す
  • 2> … エラーだけ別に分ける
  • < … ファイルを入口に流しこむ
  • | … 前のコマンドの出口を、次のコマンドの入口につなぐ
  • tee … 画面に出しながら、同時にファイルにも残す
  • xargs … 流れてきた文字を、次のコマンドの引数に変える

>黙って上書きする。中身のあるファイルに向けると、元の中身は消える。この章で一度わざとやってみるので、手癖として体に入れておこう。

ここまで来ると、画面をぽちぽち押していた作業が1行で終わるようになるよ。

この章のレッスン

出口をファイルに向ける

  1. 13結果をファイルに残す(`>`)コマンドの出口をファイルに向けて、画面に流れて消える結果を残す。 問題へ
  2. 14消さずに書き足す(`>>`)>> で、いまある中身を残したまま結果を末尾に足していく。 問題へ
  3. 15エラーだけ分ける(`2>`)エラーは別の出口から出る。2> で分け、2>&1 でまとめ、/dev/null で捨てる。 問題へ
  4. 16ファイルを流しこむ(`<`)< でファイルを標準入力につなぐ。入口しか持たない道具が使えるようになる。 問題へ

パイプでつなぐ

  1. 17パイプでつなぐ(`|`)前のコマンドの出口を次のコマンドの入口へ。何段でもつないで組み立てる。 問題へ
  2. 18画面にも出してファイルにも残す(`tee`)tee でパイプを枝分かれさせ、途中の様子を確かめながら残す。 問題へ
  3. 19流れを引数に変える(`xargs`)xargs で、パイプで流れてきた文字を次のコマンドの引数として渡す。 問題へ

つぎは「テキストを整形する」。並べかえる、重複を消す、列を抜く、置きかえる。文字の流れを加工する道具たち。