シェルワンライナー #2-1a (標準入出力について解説)

はじめに

  • ここから2章スタート
  • bashについて細かく説明してくれるらしい。
  • 2-1では、標準入出力とシェルの文法の基礎を説明してくれるらしい。

理解したことをメモ

  • コマンド結果をファイルに出力するリダイレクトは ls > a と書けるし、ls 1> a とも書ける。
  • ファイルの中身をコマンドとして入力するリダイレクトはcat | ... の他に < or 0< とも書ける。
  • sedを実行したときの説明文をaというファイルに保存したいときは?
    • 単純に $ sed < a だとできない。
    • なぜならsedを実行したときに出てくる説明文は標準エラー出力だから。
    • $ sed 2< a とするとできる。
  • 基本コマンドは渡すべきデータを 標準出力 、そうでないデータを 標準エラー 出力で区別している。
    • リダイレクトとかパイプで渡されるのは 標準出力 。だから$sed < a じゃあかん。
  • コマンドがデータを読むのは 標準入力
    • 標準入力はキーボードにつながっている。
  • 0< , 1> , 2>ファイル記述子(ファイルディスクリプタ という
  • 0: 標準入力 ,1: 標準出力, 2: 標準エラー出力, を表す。
  • コマンドが独自にファイルを開いてデータを読み書きするときは3以上の番号にファイルへの接続に割り当てられる。
  • ちな、sedの説明文をコマンドに渡したいときは...
    • $ sed 2>&1 | wc -l でいける
      • n>&m は n番をm番がつながっている先に振り分ける。という意味
      • 標準エラー出力を標準出力につないで、それをパイプを使ってwcコマンドに流している
      • パイプは標準出力を次のコマンドに渡せるので、これで、標準エラー出力を次のコマンドへ流せるようになる。
  • lessコマンドはパイプで受けたデータを上下して読める。(manコマンド読むときみたいな。)
    • こういうコマンド(溜まった出力をユーザがゆっくり読める系)を ページャ という。