ESCエスケープ文字を取得せずにスクリプトでlessをどのように使用できますか?

ESCエスケープ文字を取得せずにスクリプトでlessをどのように使用できますか?

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

しかし、lessbashスクリプトで使用すると、次のような結果が得られます。 <code>[![ここに画像の説明を入力][1]][1]</code>

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

ベストアンサー1

-Rフラグの使用:

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

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

-R または --RAW-Control-CHARS

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

           ESC [ ... m

ここで、「...」はゼロ個以上の色指定文字です。画面の外観を追跡するために、ANSIカラーエスケープシーケンスはカーソルを移動しないと仮定されます。環境変数LESSANSIENDCHARSをカラーエスケープシーケンスを終了できる文字のリストに設定することで、「m」以外の文字がANSIカラーエスケープシーケンスを終了できる状況の数を減らすことができます。環境変数LESSANSIMIDCHARSを表示できる文字のリストに設定することで、標準文字以外の文字がESCとmの間に表示される可能性を減らすことができます。

lessマニュアルページから。

おすすめ記事