標準ストリームとは
またしても用語について書いている…。
用語以外のことを書こうと思いつつ…。
標準ストリームとは
UNIXおよびUnix系オペレーティングシステムや一部のプログラミング言語インタフェースにおいて、
プログラムとその環境を実行前から接続している、入出力チャネルである。
3つの入出力があり、これらは自在に切り替える事ができる。
標準入力(stdin)
デフォルトはキーボード
0番
標準出力(stdout)
デフォルトはディスプレイ
1番
標準エラー出力(stderr)
デフォルトはディスプレイ
2番
リダイレクト
標準出力の先を変更するもの。
>や>>を使って書く
標準出力をファイルにする場合
ls > file.txt ls 1> file.txt
ファイルが存在していたら上書きし、ファイルが存在していない場合作成する
ls >> file.txt
ファイルが存在していたら追記し、ファイルが存在していない場合作成する
ls hoge 2> file.txt
エラーがファイルに出力される。数字を省略した場合、 1 標準出力 が指定される。
ls hoge .* &> file.txt ls -al .* hoge > file.txt 2>&1 (ls -al .* hoge 2>&1) > file.txt
標準出力と標準エラー出力を 1 つのファイルにリダイレクト。
標準エラー出力を標準出力にまとめる。(1と2を逆にして、標準エラー出力にまとめることもできる)
ls hoge .* 2>&1 > file.txt
標準出力のみファイルにリダイレクトされる。
ls -al .* hoge >/dev/null
出力を破棄する
標準入力をファイルにする場合
cat < file.txt cat 0< file.txt
0が省略されている
パイプ
標準出力を次のコマンドの標準入力に渡す。
標準エラー出力は引き渡されない
ls | grep hoge
lsコマンドの結果をgrepする
ヒアドキュメント
コマンドの標準入力に対して、複数行にわたる任意の文字列を与えることができる
cat << EOF > file.txt >hoge >fuga >EOF
ファイルに入力した文字列を出力