Linux

Linuxの標準入出力・リダイレクション・パイプ・ファイルについて解説!

今回はLinuxの基本である標準入出力・リダイレクション・パイプ・ファイルについて解説していきます!

Linuxを操作する上では理解をしなければいけないことなので、しっかり学習しなければいけません!(自戒を込めて。。)

もし間違っている箇所がありましたら、ご指摘していただけると幸いです。

標準入出力

標準入出力は3つに分かれています。
その3つとは以下のようになっています。

  • 標準入力:キーボード等からコマンドを入力する
  • 標準出力:入力されたコマンドの結果をディスプレイ等に表示させる
  • 標準エラー出力:入力されたコマンドの結果がエラーであった場合に、エラー内容をディスプレイ等に表示させる

それぞれについて以下に解説していきます。

標準入力

標準入力は基本的にはキーボードが使われます。
Linuxにキーボードでコマンドを打ち込めば情報入力されます。

このことを標準入力といいます。

ただしシェルスクリプトなどの設定によって、ファイルから入力されることもあります。

Linuxは「〇〇から入力されたものを標準入力と判断する」とは考えていません。入力された情報を標準入力と判断します。
そのためどこから入力されたかは問題ではありません。

標準出力・標準エラー出力

標準入力とは違い、出力には標準出力と標準エラー出力の2通りが用意されています。

どちらも標準入力された情報の結果をモニターまたはファイルなどに出力する役割を持っています。

なぜ出力先は2通りあるのか?

標準入力と違い、出力には標準出力とエラー出力の2通りの道が用意されています。

「なんで2通りの出力が用意されているの?一つの出力を使い分ければいいんじゃないの?」と疑問にもたれた方もいるのではないでしょうか?
実は私もそのように思いました笑

いろいろと調べてみると、2通りの出力を用意しなければいけない明確な理由がありました。

その理由は、「一つの出力だけでは、リダイレクションを使ったときにエラーが表示されなくなる」といった問題があるためでした。

あとで説明しますが、リダイレクションは出力先を変更させるコマンドです。
コマンドでエラーが生じたとしても、リダイレクションを使用した場合はモニターに出力されず、変更された出力先に飛ばされてしまいます。

Linuxでは、コマンドが問題なく実行された場合は何も表示されません(上手く実行できたよ!とは表示してくれない)。

そのためリダイレクションで出力先を変更していた場合はエラーに気が付くことができません。

ユーザーがエラーに気付けるように、出力先が2通り用意されているようです。

リダイレクション

リダイレクションとは?

リダイレクションは標準入出力の行き先を変更する機能があります。
簡単にいうと、標準入出力の「新しい橋」を作るイメージです。

基本的に標準入出力は、キーボードから入力→結果をモニターに出力します。
しかしリダイレクションを使えば違うルートを作成することができます。

例えばリダイレクションを使うとキーボードで入力されたコマンドが、モニターではなくファイルに出力されます。

なかなか文章だけではイメージしにくいですよね。
下記にLinuxでリダイレクションをした実例を示します。

標準出力でリダイレクションを用いるのは、文字列をファイルへ保存するために用いられます。

リダイレクションのコマンド

リダイレクションの基本的なコマンドは「 > 」になります。

それ以外にもリダイレクションにはさまざまなコマンドがあります。

  1. <file :標準入力をファイルに切り替える
  2. <<word :wordが行の先頭にくるまでの文字列を標準入力にする
  3. >file :標準出力をファイルに切り替える
    *ファイルがすでに存在していた場合は上書きされる
  4. >>file :標準出力をファイルに切り替える
    *ファイルがすでに存在していた場合は出力内容が追加される
  5. >& file:標準エラー出力をファイルに切り替える
    *ファイルがすでに存在していた場合は上書きされる
  6. >>&file :標準エラー出力をファイルに切り替える
    *ファイルがすでに存在していた場合は出力内容が追加される

リダイレクションはよく使うコマンドになる(みたい)ので、複数のコマンドを覚えておいた方がいいですね!

パイプ

パイプとは、「1つ目のコマンドの標準出力を2つ目のコマンドの標準出力に引き渡す」ことを言います。
簡単にいうと、複数のコマンドを連携させることができるということです!

複数のコマンドを連携させることで、さまざまな複雑な処理を行えるようになります。

実際にLinuxでパイプを使用した画面は以下のものです。

パイプのコマンドは何個でも使うことができます。
つまり、2つのコマンドを連携させるだけではなく、多くのコマンドを連携させることができます。

複数のコマンドを同時に扱えるというのはとても便利ですよね!

ファイル

ファイルとは、「記録・管理される情報の単位」のことを言います。

さらに、同じような種類や目的を持ったファイルを集めたものを「ディレクトリ」と言います。

「ディレクトリ」もファイルの1つとして考えます。

Linuxをしっかり理解しなければWebアプリケーションを開発することはできない

 

当たり前のことですが、Linuxを使えなければWebアプリケーションを開発することはできません。
なぜならLinuxでwebアプリケーションを開発するからです。

したがってLinuxのコマンドや構造をしっかり理解しなければいけません。

RubyやJavascript、Pythonなどの言語から勉強したくなってしまいますが、Linuxの学習を最優先にしなければいけないと言えますね!