標準入出力/リダイレクト/パイプ

標準入出力/リダイレクト/パイプ

標準入力と標準出力の流れ

コンピュータの世界では、キーボードなどで入力した情報に、何かしらの処理をした上で、画面に表示するなどの出力をします。

入力そのものを標準入力と呼び、入力された情報を元に、演算や編集などの何かしらの処理をするものをプログラムと呼びます。

そしてプログラムの処理結果は、端末の画面に表示されたりしますが、そのような出力先を標準出力と呼び、
また、エラーが発生した場合の出力を標準エラー出力と呼びます。

また、入力のデフォルトはキーボード、出力は端末画面と決まっています。

出力先を変える2つの方法

LINUXでは、出力先(標準出力)を変えるために、リダイレクトとパイプという2つの方法があります。

方法①:リダイレクト

出力先(標準出力)を、任意のファイルに変更する機能です。
コマンドの出力結果を、ファイルに保存する場合に使用します。

方法②:パイプ

出力先(標準出力)を、パイプと呼ばれるものに変更し、出力結果をそのまま任意のコマンドの
入力データに渡すための機能です。
あるコマンドの出力結果を、そのまま別のコマンドの引数として利用するために使用します。

方法①:リダイレクト

方法②:パイプ

リダイレクト(redirect)

書式

コマンド > ファイルのパス

実践

dateコマンドの標準出力を、ファイルtodayに変更します。

[user01@localhost ~]$ date
2020年  2月 20日 木曜日 16:01:13 JST
[user01@localhost ~]$ date > today

[user01@localhost ~]$ cat today
2020年  2月 20日 木曜日 16:02:03 JST

書式②:追記リダイレクト

リダイレクトは、新規でファイルを作成(作り変えて上書き)しますが、既に作成済みのファイルに、
内容を追記したいこともあります。
その場合、 「>>」によって追記リダイレクトが実現できます。

コマンド >> ファイルのパス

実践②:追記リダイレクト

[user01@localhost ~]$ date >> today

[user01@localhost ~]$ cat today
2020年  2月 20日 木曜日 16:02:03 JST
2020年  2月 20日 木曜日 16:05:30 JST

パイプによって出力結果を、別のコマンドへ引き渡す

書式

コマンド1|コマンド2

書式

whoコマンドとは、現在ログインしているユーザーの「ログイン名」と「使用している端末」、「ログイン時刻」、「どこからログインしているか」を表示します。書式は、上記の通りです。

実践①

[user01@localhost ~]$ who
root     tty1         2023-01-20 10:09
user01   pts/0        2023-01-20 10:19 (192.168.27.1)

実践②

パイプを使ってみる

[user01@localhost ~]$ wc today
 1  6 43 today
[user01@localhost ~]$ who > who.out
[user01@localhost ~]$ wc who.out
 2  9 94 who.out
[user01@localhost ~]$ who | wc
      2       9      94

※コマンド「 wc who.out 」 及び「 who | wc 」の実行結果についてテキストの実行結果と異なることがあります。

これで第5章ファイル管理は終わりました!


NEXT>> 練習問題