
次のようにファイルで端末タイプをモノクロに設定しましたinittab
:
c2:... tty2 linux-m
しかし、次のような色付きの出力を持つコマンドを入力すると、
ls --color=always -l
まだ色付きの結果が得られます。端末が非カラーに設定されている場合 (上記のように inittab ファイルで tty が定義されている場合)、どうなるのでしょうか。
答え1
端末タイプのみ説明端末を使用する特定の方法。端末が実際にそのように動作するという保証はなく、プログラムが端末を操作するために他の情報を使用するという保証もありません。
この場合、ls
プログラムは独自のハードコードされたデータベースを使用し、"linux" はカラーであることを示します。
さらに詳しい情報: ncurses FAQ図書館利用者として誤って引用された申請
答え2
前述のように、これらのプログラムは直接出力している可能性が高いANSIエスケープシーケンス:
グラフィック カードで 256 色のルックアップ テーブルが一般的になるにつれて、定義済みの 256 色のセットから選択するためのエスケープ シーケンスが追加されました。[引用が必要]
ESC[ … 38;5;<n> … m Select foreground color ESC[ … 48;5;<n> … m Select background color 0- 7: standard colors (as in ESC [ 30–37 m) 8- 15: high intensity colors (as in ESC [ 90–97 m) 16-231: 6 × 6 × 6 cube (216 colors): 16 + 36 × r + 6 × g + b (0 ≤ r, g, b ≤ 5)
232-255: 黒から白までの24段階のグレースケール
この議論は、同様の質問に対する回答によっても強化されるだろう。Unix SE のターミナルと SSH で色を無効にする。
このトピックに関する以前の質問では、xtermを使用しているとおっしゃっていました。xterm マニュアルページANSI エスケープ シーケンスの認識を無効にするオプションもリストされています-cm
。これは、リンクされた質問の回答にも記載されています。
-cm
このオプションは、ANSI 色変更エスケープ シーケンスの認識を無効にします。colorMode リソースを "false" に設定します。
端末情報を設定するということは、端末の機能を定義するということです(男の用語情報)。つまり、あなたがしていることは、ls
特定のことを確実に実行できると相手に伝えることと同じですが、相手がそれを尊重しなければならないということではありません。