web-dev-qa-db-ja.com

ttyとptyの異なる動作

私が行った場合 man bash Xの内部、たとえばxtermまたはmate-terminal、いくつかの単語に下線が引かれています。

私が行った場合 man bash仮想端末では、同じ単語に色が付けられます。

Xで同じ色を使用できますか?

2つの動作にこの違いが生じる原因は何ですか?

1
PSkocik

lessmanページのビューアとして設定されている場合、less特殊変数を使用して標準色を上書きする機会があります。

私の設定からの例:

export LESS_TERMCAP_mb=$'\e[6m'          # begin blinking
export LESS_TERMCAP_md=$'\e[34m'         # begin bold
export LESS_TERMCAP_us=$'\e[4;32m'       # begin underline
export LESS_TERMCAP_so=$'\e[1;33;41m'    # begin standout-mode - info box
export LESS_TERMCAP_me=$'\e[m'           # end mode
export LESS_TERMCAP_ue=$'\e[m'           # end underline
export LESS_TERMCAP_se=$'\e[m'           # end standout-mode

さらに、設定する必要があるかもしれません

export GROFF_NO_SGR=''

「新しい」groffの動作にバグがあるため。


Linuxボックスをチェックして、コンソールで設定した場合

export LESS_TERMCAP_md=$'\e[4m'

次に、下線を引く代わりに(コンソールでは不可能です)、コードは実際に水色として解釈されます。

4
jimmij

この質問 はmanページをダンプするいくつかの方法を提供します。また、マニュアルページは特別なフォーマット(ターミナルエミュレータで解釈できるフォーマット)に従うことについても説明しています。

基本的にmanページは groff ドキュメントであるため、manがフォーマットとして解釈する面白い文字が含まれています。

2つの異なるターミナルエミュレータでmanを使用すると、異なる結果が得られる可能性があります。残念ながら、その動作についてできることはあまりありません。ターミナルエミュレータによって制限されます。

2
MatthewRock

答えは、実際には単純です。EGA-VGAカラーテキストモードは単純に 下線機能がない です。したがって、groffは、適切と思われる代替を使用します。

fbdevエミュレーションは、技術的にはVGAの制限に拘束されませんが、(互換性のために)同じセマンティクスを持つ同じ画面バッファー形式に依存しています。

LinuxフレームバッファーTUIエミュレーターのコードを変更して、たとえば、下線用に前景と背景の組み合わせを予約することができます。しかし、結果は次のようになります。

  • 互換性の問題;
  • カーネル膨張;
  • 架空の「新しいLinuxコンソール」の機能は従来のTERM = linuxとは異なるため、新しいterminfo $ TERMキー(linux以外)を作成する必要があります。
  • ログインシェルがそれに応じて$ TERMを設定していることを確認する必要があります。
1
Incnis Mrsi

他の答えは興味深いですが、OPの質問には誰も答えませんでした:特定のカスタマイズがないのに、なぜ一部の端末が異なる動作を示すのですか?

Linuxコンソールは(1990年代初頭以来)長い間 サポートされていない興味深いビデオ属性の色 を表示していました。 @Incnis Mrsiはこれについて言及しました(より良い情報源はたくさんありますが)。

  • しかし、グロフは下線を引く能力が不足していることを知りません。端末の説明には、そのように書かれています。 groffはそれを無視するので(ハードコードされたエスケープを使用します)、これは素晴らしいことです。ただし、Linuxコンソールはitが選択したとおりにレンダリングします。
  • less環境変数に関するコメントは興味深いものですが、あまり使用されません。

他の一部の端末は、ビデオ属性を色としてレンダリングできます。 xtermは、 resourcescolorULおよびcolorULModeを設定することで可能です(Red Hatベースのディストリビューションではそのように構成されていることが多いようです)。同様に、 rxvt は可能です(リソースベースですが、構成可能性は低くなります)。

1
Thomas Dickey