技術系

[Linux]標準〇〇について

技術系

こんにちは、なかにしです。

今回はLinuxで出てくる、標準〇〇について解説します!

標準〇〇の説明

Linuxでは、「標準入力」「標準出力」「標準エラー出力」の3種類を使用して通信をしています。
これが結構分かりづらいので、図で説明します。

まず、標準入力と標準出力から。
以下の図をご覧ください。

・標準入力…キーボードで入力すること
・標準出力…ディスプレイに表示すること

定義としては、上記となっています。
皆が標準的に使っているから、「標準〇〇」という名前がついているらしいです。

具体例(標準入力 / 標準出力)

Linuxで「lsコマンド」を実行する場合を考えてみると、
①標準入力(キーボード入力)で「ls」と入力
②Linux君が結果を返す
③標準出力先(ディスプレイ)で、標準出力される。
という流れになります。

この標準の入出力先を変更するのが「リダイレクト」と呼ばれているものです。

例えば、標準出力をディスプレイではなくファイルにしたい場合は以下になります。

ls > sample.txt

この「>」が標準出力先を変える記号で、
今回だと、標準出力先をsample.txtに変えています。

つまり、lsで表示されるはずだったファイル一覧が、
ディスプレイではなくsample.txtに出力、書き込まれているということです。

ちなみに、「>」は上書きになる仕様なので、
sample.txtに元から何か記載があった場合は上書きされて消えます。

それが困る場合は、「>>」を使うといいです。
これは上書きではなく、末尾に追記するリダイレクトです。

標準出力ではなく、標準入力を変えたい場合は、「<」の記号になります。

sortというコマンドで具体例を出します。
sortはデフォルトで標準入力を待ち、入力されたら結果を返すコマンドです。

この標準入力を、キーボードからファイルに変えます。

sort < sample.txt

これで標準入力(キーボード入力)を待たず、結果が出力されます。

標準エラー出力

正常系の出力は標準出力にされるのですが、異常系(エラーなど)の出力は、「標準エラー出力」に出力されます。

正常系の結果と異常系の結果で、出力先が異なるということです。

具体例(標準エラー出力)

例えば、よく見かけるエラー出力として、
「No such file or directory」があります。

これも、標準出力ではなく、標準エラー出力で出力されています。

標準エラー出力をリダイレクトするには、「2>」を使用します。

例えば、以下コマンドを入力した際、
sampleディレクトリが存在しなかった場合は「No such file or directory」が返ってきます。

ls sample/

このエラー出力をリダイレクトしてあげます。

ls sample/ 2> sample.txt

これで、「No such file or directory」が表示されず、
sample.txtに書き込まれるようになります。

さいごに

標準〇〇系は、LPICを取ったときに学習したのですが、
リダイレクトの記号とか丸暗記してただけで、正直仕組みがよく分かっていなかったです…

やっぱりちゃんと学習しなおすのって大事ですね。

資格だと受かるのがゴールになりがちなので、
定期的に深堀して理解を深めます🙌

今回はここまで!
Enjoy Hacking!!