Linux 端末の色を変更する方法
On 1月 22, 2022 by admin特殊な ANSI エンコーディング設定を使用して、ターミナルコマンドまたは設定ファイルで動的に、あるいはターミナルエミュレータで既製のテーマを使用して、Linux 端末に色を追加することが可能です。 いずれにせよ、黒い画面に緑や琥珀色のテキストが表示されるのは、完全にオプションです。
ターミナル機能
最近のシステムでは、少なくとも xterm-256color がデフォルトですが、ターミナルに色を付けようとしたときにうまくいかない場合は、TERM 設定を確認する必要があります。 これは、リモートでコマンドを発行するためにしばしば使用されたテレタイプマシン (これが今日でも Linux に /dev/tty デバイスがある理由です) とは異なるものでした。 端末にはCRTモニターが内蔵されていたので、ユーザーはオフィスで端末の前に座り、メインフレームと直接やり取りをすることができました。 CRTモニターは、製造も制御も高価でした。アンチエイリアスなど、現代のコンピュータ利用者が当たり前のように使っている技術にこだわるよりも、コンピュータに粗いASCIIテキストを吐き出させる方が簡単だったのです。 たとえば、1978 年に発売された新しい VT100 は ANSI カラーをサポートしていたので、ユーザーが端末タイプを vt100 と識別すれば、コンピュータはカラー出力を提供できましたが、基本的なシリアル デバイスにはそのようなオプションがなかったかもしれません。 同じ原理が今日でも適用され、TERM環境変数によって設定されます。 TERM の定義は echo:
$ echo $TERM
xterm-256color
で確認できます。旧式の (しかし後方互換性のために一部のシステムではまだ維持されている) /etc/termcap ファイルは、端末とプリンタの機能を定義しています。 その現代版は terminfo で、ディストリビューションによって /etc か /usr/share にある。 これらのファイルには、さまざまな種類のターミナルで利用可能な機能が列挙されており、その多くは歴史的なハードウェアによって定義されています: vt100 から vt220 までの定義があり、xterm や Xfce などの最近のソフトウェアエミュレータ用の定義もあります。 まれに、互換性のある機能をチェックするサーバにログインしたときに、 端末の種類が正しくないという警告やエラーが表示されることがありますが、 ほとんどのソフトウェアでは、使用している端末の種類は気にしません。 もし、使用している端末がほとんど機能を持たないプロファイルに設定されているが、 使用しているエミュレータがもっと多くの機能を持つことを知っている場合、 TERM 環境変数を定義することで設定を変更することができます。 これを行うには、~/.bashrc 設定ファイルで TERM 変数をエクスポートします:
export TERM=xterm-256color
ファイルを保存し、設定を再読み込みします:
$ source ~/.bashrc
ANSI カラーコード
現代の端末は、「メタ」機能用に ANSI エスケープシーケンスを受け継いでいます。 これは、端末が文字の代わりに動作として解釈する特殊な文字列である。 例えば、このシーケンスは次のプロンプトまで画面をクリアする:
$ printf `3
Or you can use dircolors directly:
$ dircolors --print-database
# image formats
.jpg 01;35
.jpeg 01;35
.mjpg 01;35
.mjpeg 01;35
.gif 01;35
.bmp 01;35
.pbm 01;35
.tif 01;35
.tiff 01;35
If that looks cryptic, it’s because it is. The first digit after a file type is the attribute code, and it has six options:
- 00 none
- 01 bold
- 04 underscore
- 05 blink
- 07 reverse
- 08 concealed
The next digit is the color code in a simplified form. You can get the color code by taking the final digit of the ANSII code (32 for green foreground, 42 for green background; 31 or 41 for red, and so on).
Your distribution probably sets LS_COLORS globally, so all users on your system inherit the same colors. If you want a customized set of colors, you can use dircolors for that. First, generate a local copy of your color settings:
$ dircolors --print-database > ~/.dircolors
希望に応じてローカルリストを編集する。 選択に満足したら、ファイルを保存してください。 色設定は単なるデータベースであり、ls から直接使用することはできませんが、dircolors を使用して LS_COLORS を設定するために使用するシェルコードを取得できます:
$ dircolors --bourne-shell ~/.dircolors
LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:
pi=40;33:so=01;35:do=01;35:bd=40;33;01:
cd=40;33;01:or=40;31;01:mi=00:su=37;41:
sg=30;43:ca=30;41:tw=30;42:ow=34;
export LS_COLORS
この出力を ~/.bashrc ファイルにコピーして貼り付け、リロードしてください。
$ dircolors --bourne-shell ~/.dircolors >> ~/.bashrc
$ source ~/.bashrc
また、手動で変換する代わりに、起動時に Bash が .dircolors を解決するようにすることも可能です。 現実的には、頻繁に色を変更することはないでしょうから、これは過度に強引かもしれませんが、色調を頻繁に変更する予定がある場合には、選択肢のひとつとなるでしょう。 .bashrc ファイルに次のルールを追加します。
] && eval "`dircolors --sh $HOME/.dircolors`"
ホーム ディレクトリに .dircolors ファイルがある場合、Bash は起動時にそれを評価し、それに応じて LS_COLORS を設定します。 しかし、色に頼りすぎるのはよくありません。 結局のところ、色は普遍的なものではありませんから、 他の人があなたのシステムを使う場合、あなたと同じように色を見るとは限りません。 さらに、さまざまなツールを使用してコンピューターとやり取りする場合、一部のターミナルまたはリモート接続では、期待する色 (またはまったく色) が提供されないことに気づくかもしれません。
コメントを残す