【Linux】less-ファイルの閲覧・文字列検索|初学者に向けた備忘録

Linux
スポンサーリンク
はづき
はづき

こんにちは!はづきです

文系から一部上場IT企業に就職し、エンジニアをやっています

この記事はLinuxのlessコマンドについての備忘録です

lessはファイルを"1画面"ごとに閲覧するためのコマンドです

同じようにファイルを閲覧するコマンドとしてcatコマンドがあります。catコマンドでは、行数の多いファイルを閲覧するときに何度もスクロールをしなければいけません

一方で、lessコマンドは1画面ずつ表示を行うことができるため、ボリュームのあるファイルの閲覧を快適に行うことができます

基本操作と頻繁に使用するオプションの実行例を紹介します。ぜひご参考ください

※この記事は初心者向けに平易に解説しています。正確な理解をしたい人は専門書・専門家をあたっていただければと思います。また、この記事の情報におけるCPの動作結果については自己責任でお願いします。

※本サイトにはプロモーション・広告が含まれています(はづきのブログより)

スポンサーリンク

lessコマンドでファイルを閲覧する

lessコマンドはファイルを閲覧することのできるコマンドです

同様にファイル閲覧のコマンドとしてcatコマンドがありますが、catコマンドでは行数の多いファイルを閲覧する場合は何度もスクロールする必要があります

一方で、lessコマンドは1画面ごとにファイルを閲覧することができるため、catよりも快適にファイルの内容を確認することができます

また、文字列検索もできるため、知りたい文字列のある行にすぐに飛ぶことも可能です

lessコマンドの基本操作

less [オプション] [閲覧したいファイル名※複数指定可]

lessコマンドは「less [オプション] [閲覧したいファイル名]」で使うことができます

主な使用用途は以下になります

  • 1画面に収まらないボリュームの大きいファイルの中身を閲覧したいとき
  • 他コマンドの標準出力やログに対して文字列検索したいとき

まずは実行例を見てみましょう

#①lsで閲覧したいファイルの存在を確認します
#②lessで「file」という名前のファイルを閲覧してみます
#※「file」は私が作成しておきました
hazukiblog@hazukiBlog:~/work$ ls #①
file
hazukiblog@hazukiBlog:~/work$ less file #②

上記のようにlessコマンドを実行すると、以下のようなファイル閲覧画面に切り替わります

ここではlessコマンドで指定した「file」の中身を閲覧しています。私が作成した「file」はidとnameを対とした100行のファイルです

私のターミナル(以下の黒い画面)の大きさで表示できる「1画面あたり16行」で閲覧しています。ターミナルの大きさによって、一度に表示できる行数は変わります

では、ファイル閲覧画面の操作方法について確認してみましょう

以下で紹介するコマンドを使用することでファイル閲覧画面内で操作が可能です。特に、ファイル閲覧画面を終了するコマンド「q」は覚えておきましょう

■覚えておきたい基本操作

コマンド用途
f , スペース, page down1画面分進む
b, page up1画面分戻る
j, e, Enter, ctrl+n, ↓1行分進む
k, y, ctrl+p, ↑1行分戻る
qlessコマンドを終了する
:p前のファイルに切り替える※複数ファイル指定時のみ
:n次のファイルに切り替える※複数ファイル指定時のみ
gファイルの先頭を表示する
Gファイルの終端に移動する

実行例として、先ほどのファイル閲覧画面から「f」を押下してみました。すると、以下のように1画面分進み、idが16以降のファイル内容を確認することができました

lessコマンドで文字列検索する

lessコマンドでは閲覧しているファイル内で文字列検索することが可能です

以下が文字列検索に使用するコマンドです。「/{検索したい文字列}」を入力してEnterを押下すれば、指定した文字列がマーカー表示されます

コマンド用途
/{検索したい文字列}下方向に検索していく
?{検索したい文字列}上方向に検索していく
n次の検索結果に移動する
N前の検索結果に移動する

実際の動作を紹介します

ここでは「3」という数字が含まれる行を検索してみます

  1. 画面内で「/3」と入力します(画面下部に「/3」と表示される)
  2. Enterを押します
  3. 「3」という数字がマーカー表示されました

以下の画面では「3」という数字にカーソルが当たっています

ここで、「n」を押下すると次の検索結果に移動するため「13」にカーソルが当たります。以降、nやNを押すたびに検索結果の移動が可能です

lessコマンドでgrep検索する

lessコマンドでは、探している文字列を含む行のみを表示させることが可能です

コマンド用途
&{検索したい文字列}検索したい文字列を含む行のみ表示する
&もとのファイル閲覧画面に戻る

以下では「&/foo」を指定してEnterを押下することで、fooを含む行のみを表示させています。※「&」を打つと自動で「/」が入る

lessコマンドのオプションを紹介

ここからはlessコマンドのオプションを紹介します!

オプションの指定方法は以下のようになります※再掲載

less [オプション] [閲覧したいファイル名※複数指定可]
例,less -N sampleFile

-N:行番号を表示する

-Nは行番号を表示するオプションです

先頭行に行番号を付与して表示することができます

#以下、-Nオプション指定時のファイル閲覧画面のイメージ
#↓先頭に行番号が付与される 
 1 id      name
 2 1       hazuki
 3 2       Hazuki
 4 3       HAZUKI
 5 4       My name is Hazuki.(私の名前ははづきです)

-m:表示内容の進捗率を表示する

-mは表示内容の進捗率を表示するオプションです

画面最下部に進捗率が%表示されます

#以下、-mオプション指定時のファイル閲覧画面のイメージ
id      name
1       hazuki
2       Hazuki
3       HAZUKI
4       My name is Hazuki.(私の名前ははづきです)
5       bar
12% #←表示内容のの進捗率を表示する

-S:行を折り返さずに表示する

-Sは行を折り返さずに表示するオプションです

通常、ファイル閲覧画面の横幅が行の長さより短い場合、以下のように折り返されて表示されます

しかし、-Sオプションを付けることで以下のように「>」マークが表示されるようになります(画像①)

この状態で「→」キーを押すことで、残りの文章を表示させることができます(画像②)

▼画像①

▼画像②

-s:2行以上連続した空白行を1行にまとめて表示する

-sは2行以上の連続した空行を1行にまとめて表示するオプションです

以下では1行、2行、3行の連続した空白行を持つファイルに対して、-sオプションを付与してlessコマンドを実行した例になります

#以下、オプションなしでファイル閲覧画面のイメージ
#空白行を適宜入れたファイルを準備しました
foo
bar

baz


hoge



hogehoge

#以下、-Sオプションを付与してファイル閲覧画面のイメージ
#空白行が1つにまとめられて表示された
foo
bar

baz

hoge

hogehoge

+F:ファイルに追記更新が加わったときに自動更新する(ログ監視向き)

+Fは、ファイルに追記更新が加わったときにファイル閲覧画面を自動更新するコマンドです

画面最下部に「Waiting for data… (interrupt to abort)」と表示されます。このとき、他のファイル閲覧画面の操作コマンドは使用できません

この自動更新モードをやめたい場合は、「ctrl + C」を押下してください

また、「+F」オプションを付けなくてもファイル閲覧画面で「shift + F」を押下すると自動更新モードにすることができます

#以下、+Fオプションを付与してファイル閲覧画面のイメージ
#ファイルの最終行が表示される
95      hoge
96      foo
97      bar
98      baz
99      hoge
100     foo
Waiting for data... (interrupt to abort)#左記のようなメッセージが表示される

#上記の状態で、別のターミナルを立ち上げてファイルを追記してみる
#ここでは下記のecho文で追記しました。※viでは上手くいかなかった
#「echo 101 bar >> file」※「file」は私が作成したファイルの名前
#echo文を実行したタイミングで、ファイル閲覧画面が更新される
96      foo
97      bar
98      baz
99      hoge
100     foo
101 bar #echoで追記した値が自動更新により表示された
Waiting for data... (interrupt to abort)

-i:大文字・小文字を区別せずに検索する

-iは、大文字・小文字を区別せずに文字列検索が行えるオプションです

以下では-iオプションを付与してlessを実行し、「hazuki」という文字列を検索した結果です。「hazuki」という文字列が大文字・小文字で区別されずに検索されていることがわかります

-p:指定した文字列が含まれている行から表示する

-pは、指定した文字列が含まれている行から表示できるコマンドです

ここでは、barが含まれる行から表示してみます。-pオプション付きのlessの実行方法は以下になります

#less -p {指定文字列} {ファイル名}
less -p bar file

上記を実行後のファイル閲覧画面は以下のようになりましたq

#less実行後のファイル閲覧画面のイメージ
#barという文字列が含まれる5行目から表示されました
5       bar
6       baz
7       hoge
8       foo
9       bar
10      baz
:

-q:操作時の警告ベルを鳴らさないようにする

-qは、操作時の警告ベルを鳴らさないようにするオプションです

ファイルの最下部でさらに下の行を見ようとしたり、存在しないコマンドを実行しようとすると警告ベルが鳴ります。この音を鳴らさないようにするオプションです

私が実際に動作検証したところ、ベルが鳴らなくなる代わりに画面が一瞬白くなり操作の誤りを伝えてくれる挙動になりました

-R:制御文字を表示する

ANSIエスケープコード(非表示文字)を表示することができるらしい。。すみません、勉強中です!

-F:ファイルのボリュームが小さい場合、閲覧画面を表示しない

-Fは、ファイルの中身がターミナルの1画面以内に収まる場合に、ファイル閲覧画面を表示しないようにするオプションです

その代わりに、以下のようにファイルの中身が全表示されます(catコマンドと同じような挙動になる)

#4行で文字列を記載したfile3を作成して試してみました
#-Fオプション付きのlessを実行した結果、以下のようにそのままファイルの中身が表示されました
hazukiblog@hazukiBlog:~/work$ less -F file3
foo
bar
hoge
hogehoge

-o:閲覧した内容をファイルとして保存する

-oは、閲覧した内容をファイルとして保存するオプションです

「less -o {保存するファイル名}」で指定することができます。パイプラインで使うことが一般的です

#まずはlsコマンドでless実行前の既存ファイルを確認します
#ここではfileとfile2という2つのファイルを用意しました
hazukiblog@hazukiBlog:~/work$ ls
file  file2

#catでfile2の中身を表示して、パイプラインでlessに渡します
#-oオプションが無ければ、lessのファイル閲覧画面が表示されてfile2の中身を閲覧できます
#-oオプションがある場合、ファイル閲覧後に名前を指定したnewFile2が作成されます
hazukiblog@hazukiBlog:~/work$ cat file2 | less -o newFile2

#再度lsコマンドでファイルの確認をしました
#file2と同じ中身を持った、newFile2が作成されました
hazukiblog@hazukiBlog:~/work$ ls
file  file2  newFile2

以下のように既存のファイル名を指定すると保存方法を選択することになります

また、「-o」でなく「-O」にすると選択することなく上書き保存になります

#newFile2が既にある状態で-oオプションを付けると、
#上書き保存、追記、中止、から選択することができます
hazukiblog@hazukiBlog:~/work$ cat file2 | less -o newFile2
Warning: "newFile2" exists; Overwrite, Append, Don't log, or Quit?
Overwrite, Append, Don't log, or Quit? (Type "O", "A", "D" or "Q")

 

今回はLinuxのlessコマンドについて紹介しました

みなさんのお役に立てば幸いです。最後まで読んでいただきありがとうございました

おしまい

コメント

タイトルとURLをコピーしました