daichi.dev

Lessの便利な使い方

@daichirata

最近 Stop using tail -f (mostly)「tail -f」を使うのは情弱、情強は「less +F」を使う などless押しな記事が幾つか上がっているんだけど、タイトルが煽り気味なのか若干反感を呼んでいるようなのでless派が職場で肩身の狭い思いをしないようにもう少し便利な使い方を紹介したい。

tail -fの様なScroll forward

less +Fで起動またはless起動中にF

元記事にもあるtail -fと同様の振る舞い。正直この機能と検索だけでいいのであればtailで十分。lessの便利なところは様々な機能との組み合わせにあって、これから紹介する機能は基本的にこのモードと組み合わせが可能だ。あと、less開いてFのほうがタイプが面倒くさくないのでおすすめ。

1行で表示する (改行しない)

less -Sで起動またはless起動中に-Sr(-Sでモード切り替え、rで画面の再描写)

アクセスログなど一行が長いファイルを見る際に便利。オプションの指定をしない場合には以下の様な表示になる。ログは tamtam180/apache_log_gen で生成した。便利。 オプションを有効にすると、 このように、改行されなくなる。切れている部分はESC-) or →、ESC-( or ←で表示することができる。上で紹介したように一度開いたファイルを後から切り替えることが可能で、less起動中に-Srで改行有り・無しをトグルすることが出来る。

正規表現でマッチする行だけを表示/非表示

less起動中に&でマッチした行だけを表示、& ^nでマッチした行だけを非表示

比較的新しいバージョンのlessじゃないと使えないんだけど、lessの表示にgrepをかけるようなイメージ。もちろん絞り込んだ状態でFを押すことでtail -f | grepと同じ機能になる。

先ほどのログから、GET /categoryのみを表示 逆に、GET /category以外を表示

ANSIカラーシーケンスを表示する

less -Rで起動またはless起動中に-Rr(-Rでモード切り替え、rで画面の再描写)

production環境ではあまり使う機会は無いかもしれないが、Railsの開発環境のapplication.logのようなカラーシーケンスが多用されたファイルを開くときに色を反映させる。 が、 こうなる。

行番号を計算させない

less -nで起動またはless起動中に-n

これは表示という意味では関係のない部分なんだけど、今表示している画面がファイルの何行目から何行目なのかをデフォルトでは表示していて、その計算が重いので切ることでサイズの大きなファイルを開く・末尾に移動するなどの操作が大幅に高速化される。行表示がいらないなら本当におすすめ。

まとめ

ログファイルはless -SRnで開きFを押して流れる行を眺めよう。

一番良いのはmanを見ることで、他にも便利機能は沢山あるんだけど普段私が使うのはだいたいこの位だと思う。後は環境によって上記の機能が使えないバージョンであったりlessがそもそも使えないんだよ!とかあると思うんだけどそういう時はtail -f | grepで問題ないし、わりと手癖というか慣れの部分もあるのでここまで書いておいてなんだけど使いやすい方法が一番いいんだと思う。