happy日記

プログラムを学んだ知識や過程のアウトプットをしていきます。

標準入出力、リダイレクション、パイプとは

標準入出力、パイプについて学びました
こちらに理解している内容をまとめてみます。

標準入力、標準出力とは

コマンドの入力元、出力先のことです。 他にも標準エラー出力というものもあります。

初期設定は、 入力元はキーボード、出力先はPCのモニターになっています。

この設定をコマンドで変更することができます。 このことを、リダイレクションと言います。

例えば、出力先について。

<初期設定>
キーボードから「テスト」と入力すると

モニターに「テスト」と出力される

出力先をPCのモニターからファイルに変更すると


流れが次のようになります。

キーボードから「テスト」と入力すると

ファイルに「テスト」と出力される

(ファイルに「テスト」という内容が書き込まれる。)

リダイレクションとは

標準入力、標準出力、標準エラー出力を切り替える機能のこと。

先程の入出力先を変更するコマンドです。

標準入力を切り替えるのは <

<例>標準入力をファイルに切り替える
< file

標準出力を切り替えるのは >

<例>標準出力をファイルに切り替える
> file

注意点としては、出力先をファイルに変更した場合に、 ファイル内にデータがあった場合は、上書きされるということです。

その場合は、> でなく、>> にすると、
内容の上書きでなく、追加とすることができます。

こちらの記事を参考に、リダイレクションを試してみました。

eng-entrance.com

標準入出力を試しました。

  1. " hello_world "を Test2_hello_world.txt へ保存
  2. Test2_hello_world.txtへ保存されている内容を表示

> は上書き >> は追加

image.png

close_worldを追加

image.png

open_worldを追加・・・上書きされた

image.png

出力先をファイルに切り替えると、実行結果をそのままファイルの内容に反映できたり便利だと思いました。

パイプとは、コマンドをつなげて一つのコマンドにすること。

<command> | <command> | <command>

こんな感じです。

コマンドの間にある、| が、パイプです。

イメージが掴めないと、悩んでいたところ、 @komagata さんに、このような図解で教えて頂きました。

f:id:t-kumi5638:20181019150134p:plain

以下、@komagata さんに教えてくださった内容です。

  • command(プロセス)は標準入力と標準出力があります。

  • パイプはデータを流す筒・管的な意味でのパイプです。

  • commandを|(パイプ)でつなぐと左側のcommandの標準出力を右側のcommandの標準入力につなぐことができます。

プロセスの仕組みと、パイプでコマンドをつなげた時の具体的なデータの流れの、具体的なイメージが掴めました!!

ありがとうございました!!

その他

この辺り、初めて出会う概念ばかりで、一見難しそうですが、 独学では埋められなかった、土台となる、大事な知識ばかりだと感じています。
そして、プログラムを始めるきっかけの一つ、windowsコマンドプロンプトとも繋がりがありそうです。
OSが違うだけで概念は共通なのではと、 最近は、仕事の合間に、会社のwindows環境で、学んだ概念やコマンドについて試してみたりしています。
コマンド自体は、違うのですが、概念やできることは共通のようです。

わかることが増えるって、楽しいです!!

(記事の内容に間違いなどありましたら、コメント頂けますと嬉しいです。よろしくお願いいたします。)