すでに、テキストエディタでファイルを読むための基本的なシェルプロンプトコマンドをいくつか紹介してきました。ここで、さらにいくつか示しておきましょう。
ファイルの最初の部分だけを確認したければ、headコマンドを使用できます。コマンドの構文は以下のとおりです。
head <filename> |
headは便利なコマンドですが、表示されるのは最初の数行に限られるので、実際のファイルの大きさはわかりません。デフォルトでは、ファイルの最初の10行しか読むことができませんが、次のように数値を指定することによって、表示行数を変更することができます。
head -20 <filename> |
headと逆の働きをするのがtailです。tailを使用すると、ファイルの最後の10行を確認できます。
grepコマンドは、1つまたは複数のファイルで特定の文字列を検索する場合に便利です。たとえばhaiku.txtファイル内の、「コーヒー」という単語が含まれている行をすべて検索するには、次のように入力してください。
grep コーヒー haiku.txt |
これで、「コーヒー」を含むすべての行を探すことができます。
![]() | 大文字/小文字に注意 |
|---|---|
特に指定がない限り、grepの検索では大文字と小文字が区別されます。つまり、Coffeeとcoffeeでは、検索結果が異なります。ただし、grepのオプションに-iを指定すると、大文字と小文字を区別せずにファイルを検索できます。詳細は、grepのmanページを参照してください。 |
データを保存したり、印刷して後で読んだりする場合、パイプ機能と出力リダイレクト機能が便利です。
たとえば、ファイルの内容をgrepで検索し、その結果をファイルに保存またはプリンタに送信することができます。
たとえば、次のコマンドを実行するだけで、haiku.txtの「コーヒー」を含む行がすべて印刷されます。
grep コーヒー haiku.txt | lpr |
探しているファイルの名前を忘れてしまった場合はどうしたらよいでしょうか。ワイルドカードや正規表現を利用すると、完全なファイル名を知らなくともファイルを扱うことができます。覚えている部分だけを指定し、残りの部分はワイルドカードで表すのです。
![]() | ワイルドカードと正規表現の詳細は |
|---|---|
ワイルドカードと正規表現について、詳しくは、man bashと入力してbashのmanページを参照してください。man bash | col -b > bash.txtと入力すれば、内容をテキストファイルに保存できます。テキストファイルにすれば、lessやpicoを使って読むことができます(pico bash.txt)。印刷する場合は、ファイルのサイズがかなり大きいことに注意してください。 |
ここでは、ファイル名が「hai××.txt」であるとだけ覚えているとします。この場合は、次のように入力します。
ls hai*.txt |
すると、次のファイル名が表示されます。
haiku.txt |
検索ではアスタリスク(*)がもっともよく使われます。アスタリスクは、検索するパターンに一致するすべての対象を探し出すときに使用します。次のように入力しても検索できます。
ls *.txt |
または
ls sn* |
haiku.txtというファイルと、ファイル名が「sn」で始まるその他のファイルが表示されます。しかし、できるだけ検索結果が少なくなるようにした方がよいでしょう。
検索を絞り込むには、アスタリスクの代わりに疑問符(?)を使う方法があります。アスタリスクと同様に、?を使用すると、検索パターンに一致するファイルを見つけることができます。
?の場合は、1文字に一致します。つまり、haik?.txtと指定して検索すると、結果としてhaiku.txtやhaikU.txt(このようなファイル名があれば)が表示されます。
ファイル名の一部にアスタリスク自体がある場合、たとえば、haiku.txtをhai*.txtとしている場合などは、正規表現を利用するとよいでしょう。
正規表現は、直感的なアスタリスクや疑問符よりも複雑です。
バックスラッシュ(\)を使うと、アスタリスクが一致するすべてのファイルの検索を意味するのではなく、ファイル名の中にアスタリスクそのものを持つファイルの検索を意味することになります。
たとえば、hai*.txtというファイル名の場合は、次のようにします。
hai\*.txt |
ワイルドカードと正規表現の簡単な一覧をあげておきましょう。
*—任意の数の任意の文字(文字列)に一致
?—任意の1文字に一致(haik?.txtなど)
\*—文字「*」に一致
\?—文字「?」に一致
\)—文字「)」に一致