web-dev-qa-db-ja.com

ESCエスケープ文字を取得せずにスクリプトでlessを使用する方法は?

コマンドラインでlessを使用すると、出力は enter image description here

しかし、bashスクリプト内からlessを使用すると、次のようになります。 <code>[![enter image description here][1]][1]</code>

どのようにbashスクリプトでlessを使用し、すべてのエスケープ文字を取得せずに、インタラクティブなコマンドラインでのように機能させることができますか?

9
Michael Durrant

使用する -R 国旗:

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

「生の」制御文字を表示します。デフォルトでは、キャレット表記を使用して制御文字を表示します。たとえば、control-A(8進数の001)は "^ A"と表示されます。警告:-rオプションを使用すると、lessは画面の実際の外観を追跡できません(これは、画面が各タイプの制御文字にどのように応答するかに依存するため)。したがって、長い行が間違った場所で分割されるなど、さまざまな表示上の問題が発生する可能性があります。

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

-rに似ていますが、ANSI「カラー」エスケープシーケンスのみが「未加工」形式で出力されます。 -rとは異なり、ほとんどの場合、画面の外観は正しく維持されます。 ANSI「カラー」エスケープシーケンスは、次の形式のシーケンスです。

           ESC [ ... m

ここで、「...」は0以上の色指定文字です。画面の外観を追跡するために、ANSIカラーエスケープシーケンスはカーソルを移動しないものと見なされます。環境変数LESSANSIENDCHARSをカラーエスケープシーケンスを終了できる文字のリストに設定することにより、「m」以外の文字がANSIカラーエスケープシーケンスを終了できると考える人を少なくすることができます。また、環境変数LESSANSIMIDCHARSを表示可能な文字のリストに設定することで、ESCとmの間に標準以外の文字が表示される可能性があることを少なく考えることができます。

lessのmanページから。

26
coffeMug