Linux 標準入出力と入出力先の切り替え
Linux Redirect, File descriptor,
標準入出力とは
Linux では
0, 1, 2, のコマンドの引数として使える数値がある
これは 標準入力と標準出力、標準エラーのことだ
英語だと stdin, stdout, stderr, と表記される
steams of { input, output, error, } の略になっている
デフォルトでは キーボードからの入力とディスプレイからの出力だが
ファイル記述子でのリダイレクトというものを使うと切り替えられるようだ。
commandName 2>&1
のように打つと、2 である標準エラーを 1 である標準出力 として出るように切り替えられるらしい
なお標準エラーの出し方自体が未確認
標準入力
デフォルトはターミナルのキーボードからの入力。
しかし、<
でファイルから受け取ることができるようになる
標準入力の入力元を ファイル に指定する -- commandName < fileName
alphabets という名前のファイルをつくって、
中身を abcde にして検証する
echo で引数とファイルでの入力を試す
echo で出すと
echo alphabets alphabets
通常の引数として渡すとファイル名がでる
echo < alphabets
標準入力の入力元としてファイルを渡してもなにもでない
ここで パイプで cat の出力を渡すと
echo | cat alphabets "abcde"
それを出力できる
cat alphabets "abcde" cat < alphabets "abcde"
cat の場合は <
を使っても使わなくても挙動が同じ
標準出力
デフォルトはターミナルへディスプレイでの出力
しかし >
でファイルへ出力することができるようになる
標準出力でターミナルにでる結果をファイルに書き込むようにする -- commandName fileName > output.txt
kaede0902@ubuntu:~/Documents$ ls abcde
abcde とういテキストファイルのみが存在する状態で
kaede0902@ubuntu:~/Documents$ cat abcde > output.txt kaede0902@ubuntu:~/Documents$ ls abcde output.txt
cat は普通だとターミナルに標準出力されるが、今回は output.txt に出力先をしていされているので、output.txt が作成される。
kaede0902@ubuntu:~/Documents$ cat output.txt a b c d e
そして、 cat でそのまま吐き出された abcde の内容が、output.txt に書き込まれている。
パイプで コマンドへの入力に渡す -- outputCmd | inputCmd
標準出力に出力するコマンドを、標準入力を受け取るコマンドにパイプで渡す
といった標準入出力もある。
tr をパイプで cat に渡すと、普通に cat でファイルの中身を出力する場合と違って
he
cat alphabets "abcde"
abcde が小文字で書かれている ファイルがある
cat alphabets | tr a-z A-Z "ABCDE"
これに tr, translate (変換) コマンドを通すと小文字から大文字に変換できた。
ls fileName | grep textToFind
このように grep で検索対象を渡すのは、誰でも使うことになる
他にわかりやすい実例が出てきたら追記予定