いろいろ備忘録日記

主に .NET とか Go とか Python絡みのメモを公開しています。

less コマンドで sjis とか euc-jp なファイルを表示する (LESSOPEN)

概要

前回、less コマンドについて記事を書きました。

devlights.hatenablog.com

ついでなので、業務系でよく使うTipsもメモ。

今の世の中、当たり前のように utf-8 な世界なのですが、未だに sjis とか euc-jp なファイルってのはよくあります。

んで、何故か知りませんが、OSはUTF-8のロケールにしてるのにログファイルとかを sjis or euc-jp で出力していたりする謎の世界もたまにあったります。。。

そういうときに、そのまま

$ nkf -g nanikano-log-file.log
EUC-JP
$ less -X nanikano-log-file.log

とかすると、

$ nkf -g nanikano-log-file.log
EUC-JP
$ less -X nanikano-log-file.log
"hello.txt" may be a binary file.  See it anyway? 

less さんが「これバイナリじゃね?そのまま開いてええの?」って聞いてきますw

いいよーって y 押すと、当然

$ nkf -g nanikano-log-file.log
EUC-JP
$ less -X nanikano-log-file.log
"hello.txt" may be a binary file.  See it anyway? 
����ˤ�������

�ۤ��ۤ���

�ϥ�������

って悲惨なことになります。

そんなときにちょっと使えるTipsです。

LESSOPEN環境変数を設定する

less コマンドは、開く際に LESSOPEN という環境変数を見てくれます。

ここに、以下のように nkf にパイプするように設定します。

$ export LESSOPEN='| nkf -w %s'
$ less nanikano-log-file.log

もしくは、コマンド実行時に直接指定

$ LESSOPEN='| nkf -w %s' less -X nanikano-log-file.log

とすると、

$ LESSOPEN='| nkf -w %s' less -X nanikano-log-file.log
こんにちわ世界

ほげほげー

ハローワールド

ってちゃんと表示されます。ちなみに -X オプションは less コマンド終了時に画面をクリアするなってオプションです。これを指定しておくと、less で表示していた部分が終了しても画面に残ります。


過去の記事については、以下のページからご参照下さい。

  • いろいろ備忘録日記まとめ

devlights.github.io

サンプルコードは、以下の場所で公開しています。

  • いろいろ備忘録日記サンプルソース置き場

github.com

github.com

github.com