標準入力をファイルから入力

広告

コマンドやプログラムが利用者からの入力を要求する場合、標準入力と呼ばれるデバイスを通して入力が行われます。デフォルトでは標準入力はキーボードに設定されているため、結果的にキーボードから入力された文字がコマンドなどに渡されます。

例としてSORTコマンドを使って試してみます。コマンドプロンプトを起動し、SORTコマンドを実行して下さい。

p4-1

SORTコマンドは並べ替えを行うコマンドです。引数を指定しなかった場合、標準入力であるキーボードから入力された文字列を並べ替え、標準出力へ結果を出力します。それでは次のように適当な文字を入力していって下さい。

p4-2

標準入力の入力を終了するには「Ctrl」キー+「Z」キーを押します。

p4-3

「Enter」キーを押すと、標準入力から入力された値を並べ替え、その結果を標準出力へ出力します。

p4-4

では標準入力からの入力をキーボードから入力された値ではなく、あらかじめファイルに格納した文字列を読み込みたい場合はどうすればいいでしょうか。このような場合にリダイレクトを使用します。リダイレクトでは標準入力として入力するデータをどのデバイスから受け取るのかを指定することができます。

書式は次の通りです。

コマンド 0< ファイル名

「0<」の右側が標準入力に対して入力したものを、「0<」の左側のデバイスに対して入力するように指定しています。なお「0」は標準入力であるSTDINハンドルを表しており、省略した場合は「0」が指定されたものと見なされますので単に次のように記述することができます。

コマンド < ファイル名

入力元としてファイル名を指定した場合、ファイル名に入力されている値があたかも入力されたかのようにコマンドに渡されます。

例えばSORTコマンドに対してaddress.txtのファイルの内容を入力として読み込む場合には次のように入力します。

sort < address.txt

なお指定するファイルが存在していなかった場合はエラーとなります。

サンプル

では実際に試してみます。次のようなテキストファイルを用意しました。

p4-5

このファイルをリダイレクトを使いSORTコマンドへ標準入力として渡します。

p4-6

SORTコマンドによって並べ替えが行われ、結果が標準出力へ出力されます。

p4-7

ファイルの中身が読み込まれ、並べ替えが行われ結果が画面に出力されていることが確認できます。

このように標準入力を切り替えることで、あらかじめ用意した置いたファイルを使って標準入力へデータを入力することが出来ます。

( Written by Tatsuo Ikura )