KAEDE Hack blog

JavaScript 中心に ライブラリなどの使い方を解説する技術ブログ。

Linux 標準入出力と入出力先の切り替え

Linux Redirect, File descriptor,

標準入出力とは

en.wikipedia.org

Linux では

0, 1, 2, のコマンドの引数として使える数値がある

これは 標準入力と標準出力、標準エラーのことだ

英語だと stdin, stdout, stderr, と表記される

steams of { input, output, error, } の略になっている

xtech.nikkei.com

デフォルトでは キーボードからの入力とディスプレイからの出力だが

ファイル記述子でのリダイレクトというものを使うと切り替えられるようだ。

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

www.atmarkit.co.jp

cat alphabets

"abcde"

abcde が小文字で書かれている ファイルがある

cat alphabets | tr a-z A-Z

"ABCDE"

これに tr, translate (変換) コマンドを通すと小文字から大文字に変換できた。

ls fileName | grep textToFind 

このように grep で検索対象を渡すのは、誰でも使うことになる

他にわかりやすい実例が出てきたら追記予定