1
/
5

【Linux】標準出力とリダイレクトお話

こんにちは、株式会社フジボウルの高橋希望です。

最近、急に寒くなりましたね。自宅ではこたつを去年よりも早く出して大活躍中です。(こたつから出れないでいます笑)

さて、今日はLinuxの標準出力とリダイレクトについて書いていこうと思います。

まずは下記のコマンドをターミナルで打ってみましょう。

$ echo "Hello World"
Hello World

ディスプレイに「Hello World」が表示されるはずです。これは、`echo`コマンドは引数として受け取った文字列を標準入力として受け取り、標準出力として出力するコマンドだからです。当たり前って言ってしまえば当たり前なのですが、この「標準入力」で受け取った物を「プログラム(コマンド)」で受け取り「標準出力」で出力することをわかっていればよりLinuxの理解を深めれます。

では下記のコマンドをターミナルで打ってみましょう。

$ echo "Hello" > hello_world.txt

次はディスプレイに「Hello」が表示されることはなかったと思います。これは標準出力を「>(リダイレクト)」で「hello_world.txt」にリダイレクトしたからです。では「hello_world.txt」の中身をみてみましょう。

$ ls
hello_world.txt
$ cat hello_world.txt
Hello

実際先ほどディスプレイに表示されなかった「Hello」が「hello_world.txt」ファイルに出力され「標準出力」が「>」で出力先がリダイレクトしたことがわかりますね。

続いて先ほど作った「hello_world.txt」に追記してみましょう。追記の際には「>>」を使用します。

$ echo "World" >> hello_world.txt
$ cat hello_world.txt
Hello
World

「hello_world.txt」に「World」が追記されました。「>」は上書き、「>>」は追記です。追記したい内容を「>」で組んでしまうと常にファイルが上書きされてしまうので注意が必要です。

続いて下記のコマンドを実行してみましょう。

$ cat hoge.txt > fuga.txt
cat: hoge.txt: No such file or directory
$ cat fuga.txt
$

出力がリダイレクトされずにディスプレイに表示されてしまいましたね。何も指定せず出力をリダイレクトすると標準出力(1)をリダイレクトする事になります。何かしらのエラーが発生した場合(今回は指定したファイルが存在しないエラー)、そのエラーの内容は標準エラー出力(2)として出力されます。エラーが起こったことをリダイレクトしたい場合は下記のように指定します。

$ cat hoge.txt 2> fuga.txt
$ cat fuga.txt
cat: hoge.txt: No such file or directory

上記のように「2」を指定することで標準エラー出力をリダイレクトすることができます。コマンドを実行した場合の出力は標準出力が1、標準エラー出力が2と言う風に覚えておきましょう。

株式会社フジボウルでは一緒に働く仲間を募集しています
3 いいね!
3 いいね!
同じタグの記事
今週のランキング