lessコマンドで文字列検索したときに大文字小文字を無視させる設定方法

Bash, Linux

はじめに

古いサーバー環境ではlessの検索機能で大文字小文字を区別していなかったのに、
新しく構築したサーバで大文字小文字を区別するようになって使いづらかったため、設定方法について書こうと思います。

検証環境

$ uname -moi
x86_64 x86_64 GNU/Linux

$ bash -version | head -n 1
GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)

$ less --version | head -n 2
less 458 (POSIX regular expressions)
Copyright (C) 1984-2012 Mark Nudelman

大文字小文字を無視するオプション -i

less コマンド実行時に、 -i オプションを指定することで、 less コマンド起動後の検索で大文字小文字を無視させることができます。

/etc/passwd ファイルを less で開いて検索する例を取り上げます。

$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

以下のように less コマンドをパイプで繋いで起動してみます。

$ cat /etc/passwd | less

less 内で / を押すと検索が始まります。 user という文字で検索すると、以下の行だけがヒットします。

※下の例では、検索にヒットする部分を * で囲んでいます。

tss:x:59:59:Account used by the tro*user*s package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

今度は less -i コマンドをパイプで繋いで起動してみます。
/ をタイプしたあと user で検索すると、以下の部分がはじめに見つかります。

ftp:x:14:50:FTP *User*:/var/ftp:/sbin/nologin

less -i をデフォルト設定とする方法

ようやくここから less コマンドで -i オプションを付け忘れても検索時に大文字小文字が無視させるようにする方法に触れていきます。

LESS 環境変数を設定する

LESS という環境変数が設定されていた場合、これから設定を読み込んだ後に less コマンドが実行されます。

$ export LESS='i'

$ cat /etc/passwd | less

これで、 -i オプションをコマンドラインから渡したときと同じ挙動となります。
.bashrc などに追記しておくが良いですね。

echo "export LESS='i'" >> ~/.bashrc

ひとこと

古いサーバにはこれが設定されていました。
環境変数を設定してやることで同じように less が利用できますね。

僕は以下のように環境変数を設定しています。

export LESS='iRX'
  • i = / キー押下で検索を行うときに、大文字小文字を無視する
  • R = 標準入力から受け取った文字列がカラーリングされていた場合、 less 実行結果もカラーリングする
  • X = less から抜けたときに出力結果がターミナルに残るようにする

Bash, Linux