13.11. テキストファイルを読むための他のコマンド

すでに、テキストエディタでファイルを読むための基本的な シェルプロンプトをいくつか紹介してきました。ここでもう少し だけ紹介しましょう。

13.11.1. headコマンド

head コマンドを使用すると、ファイルの先頭を 簡単に表示することができます。コマンドは次のようにします。

head <filename>

head は便利なコマンドですが、その表示が 最初の数行に限られているため、実際にファイルの長さを確認できません。 デフォルトでは、ファイルの最初の10行だけ読めるようになっています。 以下のようなコマンドで表示できる行数を数字で指定することにより 変更できます。

head -20 <filename>

13.11.2. tailコマンド

>headコマンドの反対が tail コマンドです。tailコマンドを使用することによって、 ファイルの最後の10行を表示することができます。重要なシステム メッセージに関する長いファイルの最後の10行を表示するのに便利です。 また、tailを使って更新されたログファイルを監視する こともできます。-fオプションを使って、tail は自動的にオープンファイルから画面へ新しいメッセージを 即時に書き出します。例えば、積極的に/var/log/messages を監視するには、rootユーザーとしてシェルプロンプトで 次のようにタイプします。

tail -f /var/log/messages

13.11.3. grepコマンド

grep コマンドは、ファイルの中の特定の 文字列を検索するのに役に立ちます。例えば、sneakers.txt ファイル内のすべての「コーヒー」を参照したい場合は、 次のようにタイプします。

grep coffee sneakers.txt

ファイル内で「コーヒー」があるすべての行を表示します。

ティップヒント
 

他に指定がない限り、grep コマンドの検索は、大文字/小文字の区別をします。つまり、 Coffeeの検索はcoffeeの検索とは異なり ます。そこで、grepのオプションの中の-i を使用すると、ファイルの検索が大文字/小文字の区別をしない 設定になります。このコマンドの詳細はgrepのman ページをお読み下さい。

13.11.4. 入出力のリダイレクトとパイプ

データを保存したり、印刷して後で読んだりする場合、パイプ機能と 出力リダイレクト機能が便利です。

例えば、ファイルの中の特定の内容を検索するのにgrep を使用して、その後その結果はファイルとして保存するか、 又はプリンタに転送できます。

sneakers.txtの中の「コーヒー」への参照に 関する情報を印刷するには、次の様にタイプします。

grep coffee sneakers.txt | lpr

13.11.5. ワイルドカードと正規表現

探しているファイルの名前を忘れてしまった場合はどうしたら よいでしょうか。ワイルドカードや正規表現を利用すると、完全な ファイル名を知らなくともファイルを扱うことができます。覚えている 部分だけを指定し、残りの部分はワイルドカード で表します。ワイルドカードは文字、数字、記号など用に置き換えることの できる特殊記号で、特定のディレクトリやファイルを探す時、検索相手の 長いディレクトリ一覧を検証しなくても簡単に表示することができます。

ティップヒント
 

ワイルドカードや正規表現についての詳細は、bash のmanページ(man bash)をお読みください。 そのファイルはman bash | col -b > bash.txtと タイプすることによって、テキストファイルとして保存できます。そして、 less 又は vi( vi bash.txt)を使用してファイルを開いて読むことができます。 印刷したい場合はファイルがかなり長いので注意してください。

ファイルが 「sneak____.txt」とだけ判っている場合、 以下のようにタイプします。

ls sneak*.txt

すると、次のファイル名が表示されます。

sneakers.txt

検索ではアスタリスク(*)がもっともよく 使われます。アスタリスクは、検索するパターンに一致するすべての 対象を探し出すときに使用します。次のように入力しても検索できます。

ls *.txt

or:

ls sn*

sneakers.txtの他に、sn で始まるか又は、.txtで終る ファイルも表示されます。しかし、検索の範囲をできるだけ狭く してくれます。

検索を絞り込むには、アスタリスクの代わりに疑問符(? )を使う方法があります。アスタリスクと同様に、? を使用すると、検索パターンに一致するファイルを見つける ことができます。

?の場合は、1文字に一致します。つまり、 sneaker?.txtと指定して検索すると、結果として sneakers.txtsneakerz.txt (このようなファイル名があれば)が表示されます。

正規表現は、単純なアスタリスクや疑問符よりも複雑になります。

ファイル名の一部にアスタリスク自体がある場合、たとえば、 sneakers.txtsneak*.txt としている場合などは、正規表現を利用するとよいでしょう。

バックスラッシュ(\)を使うと、アスタリスクが 一致するすべてのファイルの検索を意味するのでは なく、ファイル名の中にアスタリスクそのものを持つファイルの検索を意味 することになります。

もし、ファイルが sneak*.txtとだけ 判っている場合、次の様にタイプします。

sneak\*.txt

ワイルドカードと正規表現の簡単な一覧をあげておきましょう。