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


12

lessコマンドラインで使用すると、出力は次のようになります ここに画像の説明を入力してください

しかしless、bashスクリプト内から使用すると、次のようになります。 <code> [![ここに画像の説明を入力] [1]] [1] </ code>

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


1
LESSインタラクティブシェルに名前が設定された名前で始まる環境変数がありますが、シェルスクリプトにはありません。やるprintenv | grep LESSそのアイデンティティを見つけるために、そしてあなたも、あなたのシェルスクリプトでそれを設定し、または同等のコマンドラインオプションを使用することができます。
zwol 2016年

回答:


29

-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マニュアルページから。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.