Upgrade to Pro — share decks privately, control downloads, hide ads and more …

黒い画面で 標準入出力を使おう

黒い画面で 標準入出力を使おう

2020/01/24 (Fri)
黒い画面おきなわ

HinayHinayLab

January 24, 2020
Tweet

More Decks by HinayHinayLab

Other Decks in Programming

Transcript

  1. 黒い画面で
    標準入出力を使おう
    2020/01/24 (Fri) 黒い画面おきなわ
    YogAgile Engineer 岩村 琢 @takusamar

    View full-size slide

  2. 基本情報 H28春 午前 問18
    UNIXにおいて、あるコマンドの標準出力を、直接別のコマンドの標準入力に
    つなげる機能はどれか。
    (ア) パイプ
    (イ) バックグラウンドジョブ
    (ウ) ブレース展開
    (エ) リダイレクト

    View full-size slide

  3. 基本情報 H24春 午前 問24
    シェルのリダイレクト機能による実現の可否に関する記述のうち、
    適切なものはどれか。
    (ア) 標準出力をファイルに切り替えることはできないが、
    標準入力をファイルに切り替えることはできる。
    (イ) 標準出力をファイルに追加することはできないが、
    標準入力と標準出力をファイルに切り替えることはできる。
    (ウ) 標準入力と標準出力をファイルに切り替えることができ、
    標準出力をファイルに追加することもできる。
    (エ) 標準入力をファイルに切り替えることはできないが、
    標準出力をファイルに切り替えることはできる。

    View full-size slide

  4. 標準入出力のイメージ
    Wikipediaより

    View full-size slide

  5. リダイレクト ファイルから入力
    #1 stdout
    ProcessA
    #2 stderr
    $ ProcessA < File0
    File0
    Display
    #0 stdin

    View full-size slide

  6. リダイレクト ファイルへ出力
    #1 stdout
    ProcessA
    #2 stderr
    $ ProcessA > File1
    #0 stdin
    File1
    Keyboard

    View full-size slide

  7. リダイレクト
    ファイルから入力、ファイルへ出力
    #1 stdout
    ProcessA
    #2 stderr
    $ ProcessA < File0 > File1
    #0 stdin
    File1
    File0

    View full-size slide

  8. リダイレクト
    通常の出力とエラー出力を分ける
    #1 stdout
    ProcessA
    #2 stderr
    $ ProcessA 1> File1 2> File2
    File1
    File2

    View full-size slide

  9. リダイレクト
    エラー出力を捨てる場合
    #1 stdout
    Process
    A
    #2 stderr
    $ ProcessA 1> File1 2>/dev/null
    File
    1
    /dev/null

    View full-size slide

  10. パイプ 前の出力を次の入力に使う
    #1 stdout
    ProcessA
    ProcessB
    #2 stderr
    $ ProcessA | ProcessB
    #0 stdin

    View full-size slide

  11. パイプ どんどん繋げられる
    #1
    ProcessA
    ProcessB
    #2
    $ ProcessA | ProcessB | ProcessC
    #0
    #1
    ProcessC
    #2
    #0

    View full-size slide

  12. パイプとリダイレクトの組合せも可
    $ ProcessA 1>/dev/null | ProcessB > File1
    File1
    #1
    ProcessA
    ProcessB
    #2
    #0
    #1
    #2
    #0
    /dev/null

    View full-size slide

  13. 知っておくと便利なコマンド
    cat ファイルまたは標準入力の内容を、そのまま標準出力に出力する
    head ファイルまたは標準入力の先頭n行を、標準出力に出力する
    tail ファイルまたは標準入力の末尾n行を、標準出力に出力する
    grep ファイルまたは標準入力から正規表現でマッチする行を探す
    sed 文字列を置換したり、行単位で抽出したり、削除したり、いろいろなテキスト
    処理ができる
    find ディレクトリの中を再帰的にたどってファイルを検索する
    xargs ファイル名の一覧を標準入力から受け取って、それらのファイルに対して
    任意のコマンドを実行する

    View full-size slide

  14. 基本情報 H28春 午前 問18
    UNIXにおいて、あるコマンドの標準出力を、直接別のコマンドの標準入力に
    つなげる機能はどれか。
    (ア) パイプ
    (イ) バックグラウンドジョブ
    (ウ) ブレース展開
    (エ) リダイレクト

    View full-size slide

  15. 基本情報 H24春 午前 問24
    シェルのリダイレクト機能による実現の可否に関する記述のうち、
    適切なものはどれか。
    (ア) 標準出力をファイルに切り替えることはできないが、
    標準入力をファイルに切り替えることはできる。
    (イ) 標準出力をファイルに追加することはできないが、
    標準入力と標準出力をファイルに切り替えることはできる。
    (ウ) 標準入力と標準出力をファイルに切り替えることができ、
    標準出力をファイルに追加することもできる。
    (エ) 標準入力をファイルに切り替えることはできないが、
    標準出力をファイルに切り替えることはできる。

    View full-size slide