Bashスクリプトでは、tput
端末に関係なく、より少ない変数を設定できます。
export LESS_TERMCAP_me=$(tput sgr0; )
で同じことができますかlesskey
?
答え1
短い答え
はい変数をファイルに入れることはできますが、
LESS_TERMCAP_me
ソースlesskey
コードを修正して独自のless
バージョンを構築する必要があります(以下で説明します)。いいえファイルには、端末に拘束されない
lesskey
外部コマンドを含めることはできません。tput
ただし、lesskey
以下の提案に従って複数のファイルを使用できます。トーマスディキの答え。
lesskey
文書
注文するlesskey
人間が読めるテキストコンテンツをコマンドに変換するために使用されるバイナリ設定ファイルless
。構成ファイルの名前は次のとおりです。lesskey
文書通常ファイル~/.less
。
ファイルには3つの部分が含まれています。
- 注文する(例えば
:q quit
) - ライン編集(例えば
^G abort
) less
環境変数(例えばLESS_TERMCAP_me = \033(B\033[m
)
変数をファイルLESS_TERMCAP_*
に入れるlesskey
$ cat > lesskey.txt << EOF
#env
LESS = -iSrsM +Gg
LESS_TERMCAP_md = $(tput bold; tput setaf 6)
LESS_TERMCAP_me = $(tput sgr0)
LESS_TERMCAP_so = $(tput bold; tput setaf 3; tput setab 4)
LESS_TERMCAP_se = $(tput rmso; tput sgr0)
LESS_TERMCAP_us = $(tput smul; tput bold; tput setaf 7)
LESS_TERMCAP_ue = $(tput rmul; tput sgr0)
LESS_TERMCAP_mr = $(tput rev)
LESS_TERMCAP_mh = $(tput dim)
EOF
$ lesskey lesskey.txt # By default lesskey writes ~/.less
$ man bash # By default man uses less (pager)
抜け穴
このコマンドは、less
設定が~/.less
遅すぎます。
つまり、変数を検索した直後ですLESS_TERMCAP_*
。
このエラーは影響を与えます。バージョン 4872017年3月29日にリリースされました(もちろん以前のバージョンで)。
バグレポートとその修正を管理者に送信しました。次のバージョンに修正が適用されたら、この回答を更新しますless
...
自分で修正する
以下からソースコードアーカイブをダウンロードしてください。
- アップストリーム:http://www.greenwoodsoftware.com/less/download.html
- GNU FTPサーバー:http://ftp.gnu.org/gnu/less/?C=M;O=D
- ミラーサーバー:http://ftpmirror.gnu.org/less/
main.c
ファイルの113行目の前の2行を逆に置き換えます
。/* * Process command line arguments and LESS environment arguments. * Command line arguments override environment arguments. */ is_tty = isatty(1); get_term(); init_cmds(); init_charset(); init_line();
後ろに:
/* * Process command line arguments and LESS environment arguments. * Command line arguments override environment arguments. */ is_tty = isatty(1); init_cmds(); /* Load lesskey file before */ get_term(); /* getting variables LESS_TERMCAP_* */ init_charset(); init_line();
ビルドに必要な依存関係をインストールします。
./configure
./configure
失敗した場合、欠落している依存関係を識別します。私の場合はget headerを
インストールしました。ncurses-devel
term.h
立てる
make
less
個人用ディレクトリなど、どこかにコンパイルしたコンテンツを保存します。~/bin
mkdir -p ~/bin cp ./less ~/bin PATH="$PATH:~/bin"
PATH
ファイルに環境変数を設定することを忘れないでください。~/.profile
他のファイルを好む場合は~/.bashrc
...~/.login
追加のヒント
TERMCAPS
使い方はマニュアルページをご覧ください。LESS_TERMCAP_DEBUG=1 man bash
TERMCAPS
エンコーディングを使用してマニュアルページを検索するMANPAGER='tee man.txt' man bash
これら2つの技術を組み合わせる
MANPAGER='tee man.txt' man bash LESS_TERMCAP_DEBUG=1 less man.txt
答え2
たとえば、シェル初期化で環境を設定(または)して、各端末タイプごとにless
異なるファイルを読み取ることができます。これを行う簡単な方法は、変数をファイル名の一部として使用し、変数を設定する前に、これらの端末関連ファイルが存在するかどうかをシェルで確認することです。lesskey
LESSKEY
LESSKEY_SYSTEM
TERM
LESSKEY