端末、シェルスクリプトのリダイレクション(>)やパイプライン(|)といった
メタキャラクタについてのまとめ
・標準入力、標準出力、標準エラー出力とチャネルの対応
- 標準入力 →チャネル0
- 標準出力 →チャネル1
- 標準エラー出力→チャネル2
入力が0,出力が1,エラーが2と対応していることを覚ればいい。
また、通常の場合、入力はキーボード、出力とエラーは画面とつながっている。
(出力)リダイレクション
% command argument … > file ←新規作成
% command argument … >> file ←内容追加
% command argument … 1> fileA 2> fileB ←チャネル1とfileA,チャネル2とfileBを接続
% commend argument … > fileA 2> fileB ←チャネル1とfileA,チャネル2とfileBを接続
% command argument … > dev/null 2>&1 ←チャネル1とチャネル2をnullに接続
% command argument … > file ←新規作成
% command argument … >> file ←内容追加
チャネル1の接続先を画面からファイルに変更し、出力がファイルに書き出される。
出力を切り替えるために出力リダイレクションという。
また別の出力先としてエラー出力があるが、これはエラーを出力するためのチャネルであり上のコマンドでも、チャネル1の接続先のみがファイルに接続されていて、標準エラー出力のチャネル2は画面に接続されたままなのでエラーは画面で確認することができる。
以下に使うであろうパターンを列挙しておく。
出力リダイレクションパターン
% command argument … > file 2>&1 ←チャネル1にチャネル2を合流% command argument … 1> fileA 2> fileB ←チャネル1とfileA,チャネル2とfileBを接続
% commend argument … > fileA 2> fileB ←チャネル1とfileA,チャネル2とfileBを接続
% command argument … > dev/null 2>&1 ←チャネル1とチャネル2をnullに接続
パイプライン
% command1 argument … | command2 argument … ←command1の出力をcommand2の入力に接続する。
% command1 argument … | command2 argument … ←command1の出力をcommand2の入力に接続する。
パイプラインは前方のコマンドの出力であるチャネル1と後方のコマンドの入力であるチャネル0を接続するものである。
その他メタキャラクタ
% command1 argument … ; command2 argument … ←コマンドを順番に実効する。
% command1 argument … & command2 argument … ←コマンドを平行に実行する。
% command1 argument … ; command2 argument … ←コマンドを順番に実効する。
% command1 argument … & command2 argument … ←コマンドを平行に実行する。
コマンドの実効を制御するメタキャラクタとしては上のようなものがある。