koheitakahashiのブログ

2020.07.01にプログラマーとして生を受けた私が学んだことや、日常について徒然に書いていきます。

標準入出力・リダイレクション・パイプを理解したい🥶

 fjordbootcampのプラクティスを進め、UNIX/Linuxにおける標準出力・リダイレクション・パイプという単語にぶち当たりました。 自分の理解を整理するために、自分なりの単語の説明を記述してみます😆

標準入力、標準出力とは?

 いわゆる、デフォルトで設定されている入力と出力のこと。 つまり、私がキーボードで何かを入力するのが標準入力、それからキーボードを打ったことにより、ディスプレイで何らかの反応が返ってくるのが標準出力です。

これをDebainに合わせて考えてみると、、、

$ pwd
/home

標準入力:pwd 標準出力:/home となります。

ここで、

$ echo "hello world"
hello world

では、標準入力:$ echo "hello world" 標準出力:hello world

となるわけです。 ここで頭に入れておくことは、echoは入力をそのまま出力するだけの役割しか持たないと覚えておいてください。

リダイレクションとは?

 私のイメージでは、標準出力と標準入力(標準エラー出力)をユーザーの任意で変えることができるというイメージです。

さっきの

$ echo "hello world"
hello world

を使って説明します。

まず、リダイレクションには

<〇〇 :標準入力を〇〇に切り替える >〇〇:標準出力を〇〇に切り替える などのメタキャラクタ(記号)があります。

ここで、「hello worldの出力先を変えたいなー」という場合は、

$ echo hello world > test 

とします。 そうすると、リダイレクションを行なっていなかった時とは違って、ディスプレイ上には hello worldの文字はありません。echoは、入力をそのまま出力するだけの役割しか持ちませんが、リダイレクションしたことで、testというファイル にhello worldが出力されたことになります。

↓こんな感じですね‼️ f:id:NMP300:20190625161913j:plain

パイプとは

 いくつかのコマンドを連結して実行させることです。を使います。

具体的には、容量を表示するduと、並び替えを行うsortをパイプすることで、以下のように容量の小さいファイルから順に並べることが可能です。

du -a | sort -n

複数のコマンドを繋げて実行させることが色々な処理ができるようになるのでしょう(自分はまだそこまでの領域ではないので他人事感があります、、、)。

という感じで、標準入出力・リダイレクション・パイプを自分なりにまとめてみました。もし、理解が違っている場合にはぜひ教えてください🙇‍♂️

参考サイト

UX MILK

標準入出力

パイプ

リダイレクション