非エンジニアのエンジニア道

非エンジニアからエンジニアに転向!その勉強の軌跡を載せていきます。

標準ストリームとは

またしても用語について書いている…。
用語以外のことを書こうと思いつつ…。

標準ストリームとは

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

ファイルに入力した文字列を出力