lessコマンドでlsやmanを色付き表示する

lessの-Rオプション

  • -RオプションによってANSIカラーエスケープを表示できるようになる(=色付き表示になる)。
  • 以前の日本語対応に問題のあったlessコマンドでは-Rではなく-rオプションを使うことがあったが、現在は-Rオプションだけ考えればよいと思われる。
  • https://linuxjm.osdn.jp/html/GNU_less/man1/less.1.html

-r または --raw-control-chars

「そのままの」制御文字を表示させるようにする。 デフォルトでは、制御文字をキャレット表記を使って表示する。 例えば、control-A (8 進数 001) は "^A" と表示される。 警告: -r オプションが指定されると、 less は (制御文字のタイプにどのように画面が反応するかに依存しているために) 画面の実際の状況の経過を追うことができない。 よって多くの場合、長い行が誤った位置で分割されてしまうといった問題が生じる。

-R または --RAW-CONTROL-CHARS

上の-r と似ているが、可能な場合には画面表示を正しく維持しようとする。 このオプションが有効なのは、入力が通常のテキストの場合である。 入力には ANSI の「カラー」エスケープシーケンスが含まれていてもよい。 このシーケンスは

 ESC [ ... m

のような形式で、"..." は "m" 以外の 0 個以上の文字である。 画面の状況を保つため、 全ての制御文字と ANSI カラーシーケンスは カーソルを移動させないと仮定している。 less に "m" 以外の文字を ANSI カラーエスケープシーケンスの終了文字として認識させることもできる。 そのためには、認識させたい終了文字のリストを 環境変数 LESSANSIENDCHARS に設定すればよい。

lessのオプションの設定

 .bashrc
 LESS="-R"
 alias less="less -R"
  • .bashrを編集し、
  • 環境変数LESSもしくはaliasで-Rオプションを指定する。

lsを色付き表示する

 ls --color | less -R
 ls --color=always | less -R
  • lsの--colorまたは--color=alwaysオプションを使う。
  • ls --color=autoでは色付きにならない。
  • ただし、--color=alwaysは常にエスケープコードが含まれるので、lsの結果をファイルにリダイレクトする場合などもそれに含まれる。

参考

manを色付きで表示する

 export LESS_TERMCAP_mb=$'\e[1;31m'     # begin bold
 export LESS_TERMCAP_md=$'\e[1;33m'     # begin blink
 export LESS_TERMCAP_so=$'\e[01;44;37m' # begin reverse video
 export LESS_TERMCAP_us=$'\e[01;37m'    # begin underline
 export LESS_TERMCAP_me=$'\e[0m'        # reset bold/blink
 export LESS_TERMCAP_se=$'\e[0m'        # reset reverse video
 export LESS_TERMCAP_ue=$'\e[0m'        # reset underline
 export GROFF_NO_SGR=1                  # for konsole and gnome-terminal
  • .bashrcを編集し、
  • LESS_TERMCAP環境変数を上のように設定する。
  • 上の設定を別のファイル(例えば.less_termcap)にして、.bashrcの中で、
     [[ -f $HOME/.less_termcap ]] && source $HOME/.less_termcap
  • としてもよいだろう。

参考

参考


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2017-04-01 (土) 06:31:20