Linuxを使う人のために(5):ファイル内容を表示するcatコマンド・・・ファイルの標準入出力

LinuxのCUIでは「ファイル」を扱うのだと、これまで話をしてきました。どんなファイルがあるかを見るのが ls コマンドですが、ファイルの内容も見たい・・・ですよね。

ファイルには色々な種類があることも以前の記事に書きました。ファイルによっては、中身をそのまま見ても内容が分からないものもあります。中身を見て意味が分かるのは「テキストファイル」です。

テキストファイルというのは、文字コードASCII、Unicode、UTF-8など)によって作られているファイルです。文字コードですからデータが表しているのは「文字」です。人が読めるデータということです。(文字コードについてはまた別の記事で説明します)

textfile01という名前のテキストファイルがあって、その中身が、
  This is a textfile.
だとします。

ファイル内容を表示するコマンドは cat コマンドです。concatenate(連結する)という意味があります。ちょっと ?ですね(笑)

コマンドプロンプトで、
  cat textfile01
とすると、ディスプレイに “This is a textfile.”と表示されます。

使い方を覚えると分かるのですが、cat コマンドの対象に複数のファイルを指定できます。その場合、複数のファイルを「連結」して出力します。

cat [オプション]ファイル名

オプションはいくつかありますが、2つ紹介しておきます。

-n を指定すると、行ごとに番号を付けて表示します。
-b を指定すると、空白行があった場合、それを飛ばして表示します。行番号も表示します。

さて、ここで「入出力」について紹介しておきます。cat は指定されたファイルを入力とし、内容を出力します。出力先は前に書いたようにディスプレイです。

Linuxでは(UNIXでも、実はMS-DOSも)、コマンドの入出力はすべて「ファイル」と考えます。

  入力(ファイル) ⇒ コマンド ⇒ 出力(ファイル)

これらの入出力がすべて「ファイル」です。当然、実際の”ファイル”もありますが、キーボード入力もその対象で「ファイル」と考えます。また、ディスプレイ出力も「ファイル」です。

コマンドはプログラムです。プログラムが実行される時は「プロセス」とも言います。上の図でプロセスには入力と出力があります。特に指定しなくても、Linuxでは入力が一つ、出力が二つ用意されています。コマンド(プログラム)は、あらかじめ用意されたこの入出力を使います。
もちろん、意識して別に入出力を用意することもありますが、この(あらかじめ用意された)入出力を使うことがLinuxでは「スタンダード(標準)」です。

それで、このあらかじめ用意された入出力のうち、入力にあたるものを標準入力(stdin:standard in)と言います。また、出力にあたるのは標準出力(stdout:standard out)と標準エラー出力(stderr:standard error)と言います。

最初に示した cat コマンドの場合、ファイル(textfile01)が標準入力で、ディスプレイが標準出力です。エラーがなければ標準エラー出力はありません。

ここでLinuxのリダイレクションについて紹介しておきます。
リダイレクションとは標準入出力の切り替えのことです。cat コマンドで「ファイル名」を省略した場合、標準入力はキーボードになります。
を使って標準出力を別の「ファイル」に切り替えることができます。
を使って標準入力を別の「ファイル」に切り替えることもできます。

①コマンドプロンプトで、
  cat > textfile02
 とすると、キーボード入力の内容を textfile02 に出力します。

②コマンドプロンプトで、
  cat < textfile01
 とすると、textfile01の内容をディスプレイに出力(表示)します。

③コマンドプロンプトで、
  cat < textfile01 > textfile03
 とすると、textfile01の内容をtextfile03に出力します。

テキストファイル(textfile01)の内容が、
  This is a textfile.
だとすると、コマンドプロンプトで cat textfile01 を打つと、ディスプレイに上の内容を表示します。①をした後で、cat textfile02 と打つと、ディスプレイにやはり同じ内容を表示します。
②を実行すると、ディスプレイに textfile01 の内容が表示されます。③を実行すると、その内容をtextfile03にも保存します。結果的に、textfile01 をtextfile03にコピーします。

cat コマンドは標準入出力について説明しやすいコマンドなので、この記事で

  • 標準入出力
  • リダイレクション

について紹介しましたが、他のコマンド(プログラム)でも同様です。コマンドには基本的に入出力があり、リダイレクションすることができます。

リダイレクションの考え方により、入出力ファイルを容易に切り替えることができることがLinuxの重要な基本機能の一つです。覚えておいて下さい。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次