Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

more

ファイルの内容を画面単位で表示する
2015/05/20 08:00

対応OS: linux , freebsd, solaris
more [-d] [-l] [-p] [-c] [-s] [-u] [-NUM]
[+/PATTERN] [+NUM] [FILE...]

 moreコマンドは、FILE...で指定したファイルの内容を一画面ずつ表示するフィルタです。moreコマンドを用いると、コマンドの出力結果が画面をスクロールオーバーする場合に、一画面分を表示したところで一時中断します。[Space]キーを押すと、次の一画面分が表示されます。

フィルタ

 入力するテキストに対して、なんらかの処理を施して出力する機能のことをフィルタといいます。フィルタ機能を持つコマンドを総称してフィルタコマンドと呼ぶこともあり、UNIXでは非常に多くのフィルタコマンドが用意されています

スクロールオーバー

 出力結果が一画面に収まらない時に、先に出力された情報が画面の上に消えていく状態をスクロールオーバーといいます

オプション
① -d

moreコマンドは、すべてを表示していない場合、つまりまだ表示内容が残っている場合には、その旨を最終行に表示します。この時、このオプションを指定すると、「[スペースキーを押すと続き、'q' で終了。]」のような簡単なメッセージをいっしょに表示します。また、不適切なキー入力に対して「['h' キーで操作方法]」のようなメッセージを表示します。

なお、表示する文字列は、環境によって異なる場合があります。

② -l
通常moreコマンドは、表示内容に「^L」(改ページ)が含まれる場合、そこで表示を一時中断します。このオプションを指定すると、改ページでの中断を行いません。
③ -p
通常moreコマンドは、現在の位置から表示を開始し、下へスクロールしていきますが、このオプションを指定すると、全画面消去後に最終行からデータを表示します。
④ -c
オプション「-p」と同様の処理を行いますが、このオプションを指定した場合には、1行目から下方向へ、現在表示されている内容を消去しながら表示します。
⑤ -s
連続する複数の空白行を、ひとつの空白行にします。
⑥ -u
表示データに下線を引く制御コードがあっても下線を付けません。
⑦ -NUM
一度の操作で表示する行数を整数で指定します。このオプションを省略した場合は、現在の画面サイズに合わせて表示します。
⑧ +/PATTERN
「PATTERN」に指定した文字列をパターン文字列として、正規表現での検索を行い、マッチ(合致)する文字列を含む行より2行上から表示を開始します。マッチする行が3行目よりも前にある場合は先頭行から表示します。
⑨ +NUM
NUM行目から表示します。
引数
① FILE...
ファイルの内容を表示するファイル名をスペースで区切って指定します。ワイルドカードによる指定も可能です。省略すると、標準入力からの入力になります。

 moreコマンドを実行すると、一画面分の表示ごとに、ユーザの入力待ち状態になり、この時さまざまなコマンドを使うことができます。ここで使用できるコマンドを対話コマンドといい、次に示す表のようなものがあります。表中[]で括られたものはひとつのキーを表します。コマンド入力後に[Enter]キーを押す必要はありません。また、コマンド入力前に数字(説明文ではkとする)を入力することができるものがあり、この数字は引数としての役割を果たします。

moreコマンド実行時の対話コマンド
コマンド内容
[Space]k行先まで表示する。kを指定しなかった場合は、画面に表示できる行数、またはオプション「-NUM」で指定した行数だけ先まで表示する
[z]k行先まで表示する。デフォルトでは、画面に表示できる行数、またはオプション「-NUM」で指定した行数だけ先まで表示するが、次回からはk行先まで表示するようになる
[Enter]k行先まで表示する。デフォルトでは1行先まで表示するが、以降はk行先まで表示するようになる
[q]moreコマンドを終了する
[=]現在表示している最終行の行番号を表示する
/PATTERN「PATTERN」に指定した文字列が含まれる行を検索してスクロールする。kを指定すると、k回見つかるまでスクロールする
[n]前回指定した正規表現による検索を行って、k回マッチするまでスクロールする
[']前回/PATTERNによる検索を継続して行い、k回マッチするまでスクロールする
[v]エディタを起動する。環境変数「VISUAL」が定義されているエディタを起動し、「VISUAL」が未定義ならば、環境変数「EDITOR」でが定義されているエディタを起動する。また、これらの環境変数がどちらも未定義の時には、「vi」を起動する。エディタを終了すると、moreコマンドに制御が戻される
[Ctrl]+[L]画面を更新(再描画)する
[:]+[n]k個目のファイルに移動する。kを指定しなかった場合は、1個目のファイルに移動する
[:]+[p]k個前のファイルに移動する。kを指定しなかった場合は、1個前のファイルに移動する
[:]+[f]ファイル名と行数を表示する
[.]前回のコマンドを繰り返す
HINT!
画面のサイズに合わせてファイルの内容を表示する
[takeda]$ more line 
ファイル「line」の内容を表示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
--続ける--(29%)
行数を指定してファイル内容を表示する
[takeda]$ more -5 line 
ファイル「line」の内容を5行ごとに中断しながら表示
1
2
3
4
5
--続ける--(6%)
中断時に簡単なメッセージを表示する
[takeda]$ more -5 -d line 
1
2
3
4
5
--続ける--(6%)
改ページでの表示の中断を行わない
[takeda]$ more -10 line 
1
2
3
4
5 ^L
--続ける--(6%)
[takeda]$ more -l -10 line
オプション「-l」を指定すると、改ページによる表示の中断を行わない
1
2
3
4
5

6
7
8
9
10
--続ける--(13%)
文字列を検索して、それにマッチする文字列を含む行の2行前以降を表示する
[takeda]$ more -5 +/xxx line 
「xxx」を検索

...飛ばしています
3
「xxx」が含まれる行の2行前から表示
4
5 xxx
6
7
--続ける--(9%)
指定行から表示する
[takeda]$ more +10 -5 line 
10行目から5行ずつ表示
10 xxx
11
12
13
14
--続ける--(19%)
高機能版more?

 moreコマンドと同様のコマンドにlessというコマンドがあります。これもページャですが、moreがファイルを後方へと順次見ていくのに対して、lessコマンドは前方へ戻ることもできます。また、非常に多くの機能を持っていることはlessコマンドのmanページを見ればすぐにわかります。現在は、moreコマンドよりもむしろlessコマンドの方が多用されているようですが、lessコマンドはフリーソフトウェアですので、もしかするとあなたの環境にはないかもしれません。このように、既存のコマンド機能を包含しつつ、いろいろな機能を付加したコマンドというものもGNUプロジェクトをはじめとして、たくさんあることを知らなければなりません。本書にあるコマンドをある程度習得できましたら、是非このようなコマンドにもチャレンジしてみてください。いままで、複数のコマンドを組み合わせて行っていた処理がひとつのコマンドでできるかもしれませんし、できなかった(やりたかった)ことが実現可能になっているかもしれません。

関連タグ

UNIXコマンド辞典トップページに戻る

All contents copyright © 2006-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5