13.4.7 ファイル内容の表示

文章など人間が読める文字で書かれたファイルのことをテキストファイルといいます. テキストファイルは catless 等のコマンドを使って簡単に内容を表示させることができます. ここではそれぞれの違いを見ていきます.

cat コマンドはファイルの中身を一挙に表示させるコマンドです.パラメータとして表示させたいファイルの名前を指定します.例えば, memo.txt というファイルの中身を見たいなら下記のように指定します.

promptcat memo.txt return2

cat コマンドは中身を一挙に表示してしまうので,1画面に収まりきらない大きなファイルを表示するには不向きです.

less コマンドは, ファイルを1画面ずつ表示してくれるコマンドです. cat コマンドと同じように表示させたいファイルの名前を指定して使います.

promptless files.html return2

1画面分を表示するといったん停止します. space を押すと,1画面分スクロールして続きが見られます. 終了するには, q を押します.

tips

less は他にも様々な操作ができます. 以下に主なものをまとめます. キーが複数書かれている動作は,それらのうちのどのキーを使っても良いものです.

キー動作
q, Q, ZZ など終了
space, f, control f, control v1画面進む
b, control b, escv1画面戻る
d, control d半画面進む
u, control u半画面戻る
enter, j, control n など1行進む
k, control p など1行戻る
g, <, esc<ファイル先頭へ移動
G, >, esc>ファイル末尾へ移動

キーの一覧は, コマンドラインから promptless --help return2 とするか, less を使用中に h を押すと, 見ることができます. この一覧も less を使って表示されます.

less のようなテキストを1画面ずつ表示するコマンドのことを, ページャと呼びます. less のほかにも様々なものがあります. 自分が使いやすいと思ったものを使うと良いでしょう.

tips

less のほかのページャとして, lv コマンドというものがあり, 教育用計算機システムの iMac端末でも使えます. これは, less コマンドと同様ですが, 日本語等の文字コードを自動判別する機能が強化されています. less コマンドでは文字化けするときに使うと良いでしょう.

promptlv files.html return2

advanced

less の名前は, UNIX に古くからあったページャである more コマンドから来ています. more コマンドでは前に進むことしかできなかったのに対し, less コマンドは後ろに戻ることができるので, more に対して less と名付けられました.

more の名前は,1画面表示して止まったときに ‘more’というプロンプトを表示したところから来ています.

教育用計算機システムの iMac端末で動いている Mac OS X にも含まれています. ただし,実体は less と同じプログラムとなっています. このため, more コマンドでも後ろに戻ることができます. ただ,終了の仕方が違い, more コマンドでは最後まで表示すると自動的に終了します. また, control c を押しても途中で終了できます.

promptmore files.html return2

advanced

オンラインマニュアルを閲覧するコマンド man でもこれらのページャが使われます (review_s12.5 オンラインマニュアル). デフォルトは less -Rse です. 環境変数 PAGER にページャのコマンドを設定することで, 使用するページャを選ぶことができます (related_s28.3 環境変数). 例えば lv を使って読むには,次のようにします.

promptexport PAGER=lv return2 promptman ls return2

tips

上記の lv コマンド以外の方法で日本語が書かれているファイルを見ようとすると,文字化けすることがあります. これはファイルの文字コードとターミナルが表示できる文字コードが一致しないことにより起こります.

そのときの対処法には二通りあります.

一つは表示するテキストをターミナルが表示できる文字コードに変換することです. その方法として, cat コマンドの代わりに,文字コードを変換するコマンドである nkf コマンドを使うことができます (related_s19.5.8 文字コード変換). 教育用計算機システムでのターミナルで標準に指定されている文字コードである UTF-8 に変換するには, -w というオプションを付けます.

promptnkf -w files.html return2

もう一つの方法は,ターミナルで,表示できる文字コードを,ファイルの文字コードに一致するように変更することです (review_s12.6 ターミナル). それにより, cat, less, more をそのまま使うことができます.

exercise

/mnt/HWB/exercise/taro/interest.txtというファイルには,太郎くんの興味があるものが書いています. 興味がある科目は,(1) です.catコマンドなどを用いて調べてみましょう.