特別なANSIエンコーディング設定を使用して、ターミナルコマンドまたは構成ファイルで動的にLinuxターミナルに色を追加するか、ターミナルエミュレータで既製のテーマを使用できます。いずれにせよ、黒い画面のノスタルジックな緑または琥珀色のテキストは完全にオプションです。この記事では、Linuxを必要に応じてカラフル(または単色)にする方法を説明します。
最近のシステムは通常、デフォルトで少なくともxterm-256colorに設定されていますが、端末に色を追加しようとしても成功しない場合は、TERM設定を確認する必要があります。
歴史的に、Unix端末は文字通り次のようなものでした。ユーザーがコマンドを入力できる共有コンピュータシステムの文字通りのエンドポイント(終端)の物理的なポイント。これらは、リモートでコマンドを発行するためによく使用されるテレタイプマシン(現在もLinuxに/ dev / ttyデバイスがある理由)とは異なります。端末にはCRTモニターが組み込まれているため、ユーザーはオフィスの端末に座ってメインフレームと直接対話できます。 CRTモニターは、製造と制御の両方で高価でした。現代のコンピューター専門家が当たり前と思っているアンチエイリアシングやその他の優れた点について心配するよりも、コンピューターに粗いASCIIテキストを吐き出させる方が簡単でした。しかし、それでも技術の開発は急速に進み、新しいビデオディスプレイ端末が設計されるにつれて、オプションで利用できる新しい機能が必要であることがすぐに明らかになりました。
たとえば、1978年にリリースされた新しいVT100はANSIカラーをサポートしていたため、ユーザーが端末タイプをvt100として識別した場合、コンピューターはカラー出力を提供できますが、基本的なシリアルデバイスにはそのようなオプションがない場合があります。同じ原則が今日適用され、TERM環境変数によって設定されます。 TERMの定義はエコーで確認できます :
$ echo $TERM
xterm-256color
その他のLinuxリソース
- Linuxコマンドのチートシート
- 高度なLinuxコマンドのチートシート
- 無料のオンラインコース:RHELの技術概要
- Linuxネットワーキングのチートシート
- SELinuxチートシート
- Linuxの一般的なコマンドのチートシート
- Linuxコンテナとは何ですか?
- 最新のLinux記事
廃止された(ただし、下位互換性のために一部のシステムでは引き続き維持されている)/ etc / termcapファイルは、端末とプリンターの機能を定義しました。その最新バージョンはterminfoであり、ディストリビューションに応じて/etcまたは/usr/shareのいずれかにあります。これらのファイルには、さまざまな種類の端末で使用できる機能がリストされており、その多くは過去のハードウェアによって定義されています。vt100からvt220までの定義と、xtermやXfceなどの最新のソフトウェアエミュレーターの定義があります。ほとんどのソフトウェアは、使用している端末の種類を気にしません。まれに、互換性のある機能をチェックするサーバーにログインするときに、誤った端末タイプに関する警告またはエラーが発生する場合があります。端末が機能がほとんどないプロファイルに設定されているが、使用するエミュレーターがそれ以上の機能を備えていることがわかっている場合は、TERM環境変数を定義して設定を変更できます。これを行うには、〜/.bashrc構成ファイルでTERM変数をエクスポートします。
export TERM=xterm-256color
ファイルを保存し、設定を再読み込みします:
$ source ~/.bashrc
ANSIカラーコード
最新の端末は、「メタ」機能のANSIエスケープシーケンスを継承しています。これらは、端末が文字ではなくアクションとして解釈する特殊な文字シーケンスです。たとえば、このシーケンスは次のプロンプトまで画面をクリアします:
$ printf `\033[2J`
それはあなたの歴史を明らかにしません。ターミナルエミュレータの画面をクリアするだけなので、安全で実証的なANSIエスケープシーケンスです。
ANSIには、端末の色を設定するためのシーケンスもあります。たとえば、次のコードを入力すると、後続のテキストが緑色に変わります。
$ printf '\033[32m'
パソコンと同じように色が表示されている限り、色を使用して、ログインしているシステムを思い出すことができます。たとえば、サーバーに定期的にSSHで接続している場合は、サーバープロンプトを緑色に設定して、ローカルプロンプトと一目で区別できるようにすることができます。緑のプロンプトの場合は、プロンプト文字の前に緑のANSIコードを使用し、通常のデフォルトの色を表すコードで終了します。
export PS1=`printf "\033[32m$ \033[39m"`
テキストの色を設定するだけではありません。 ANSIコードを使用すると、テキストの背景色を制御したり、基本的なスタイルを設定したりできます。
たとえば、 \ 033 [4m 、テキストに下線を付けるか、 \ 033 [5m 点滅するように設定できます。これは、最初はばかげているように見えるかもしれませんが、端末ですべてのテキストに下線を付けて1日中点滅するように設定することはおそらくないためですが、一部の機能には役立ちます。たとえば、シェルスクリプトによって生成された緊急エラーを(ユーザーへのアラートとして)点滅するように設定したり、URLに下線を付けたりすることができます。
参考までに、前景色と背景色のコードを次に示します。前景色は30の範囲で、背景色は40の範囲です:
黒 | \ 033 [30m | \ 033 [40m |
赤 | \ 033 [31m | \ 033 [41m |
緑 | \ 033 [32m | \ 033 [42m |
オレンジ | \ 033 [33m | \ 033 [43m |
青 | \ 033 [34m | \ 033 [44m |
マゼンタ | \ 033 [35m | \ 033 [45m |
シアン | \ 033 [36m | \ 033 [46m |
ライトグレー | \ 033 [37m | \ 033 [47m |
ディストリビューションのデフォルトへのフォールバック | \ 033 [39m | \ 033 [49m |
背景に使用できる追加の色がいくつかあります:
ダークグレー | \ 033 [100m |
明るい赤 | \ 033 [101m |
ライトグリーン | \ 033 [102m |
黄色 | \ 033 [103m |
水色 | \ 033 [104m |
ライトパープル | \ 033 [105m |
ティール | \ 033 [106m |
白 | \ 033 [107m |
永続性
ターミナルセッションでの色の設定は一時的なものであり、比較的無条件です。効果が数行続くこともあります。これは、この色の設定方法がprintfステートメントに依存して、他の何かがそれをオーバーライドするまで続くモードを設定するためです。
ターミナルエミュレータが通常使用する色に関する指示を取得する方法は、LS_COLORS環境変数の設定からであり、LS_COLORS環境変数はdircolorsの設定によって入力されます。エコーステートメントを使用して現在の設定を表示できます:
$ echo $LS_COLORS
rs=0:di=38;5;33:ln=38;5;51:mh=00:pi=40;
38;5;11:so=38;5;13:do=38;5;5:bd=48;5;
232;38;5;11:cd=48;5;232;38;5;3:or=48;
5;232;38;5;9:mi=01;05;37;41:su=48;5;
196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;
196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;
[...]
または、dircolorsを直接使用することもできます:
$ 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
[...]
それが不可解に見える場合、それはそうだからです。ファイルタイプの後の最初の桁は属性コードであり、6つのオプションがあります。
- 00なし
- 01太字
- 04アンダースコア
- 05点滅
- 07リバース
- 08隠し
次の桁は、簡略化された形式のカラーコードです。カラーコードは、ANSIIコードの最後の桁(緑の前景の場合は32、緑の背景の場合は42、赤の場合は31または41など)を取得することで取得できます。
ディストリビューションはおそらくLS_COLORSをグローバルに設定するため、システム上のすべてのユーザーは同じ色を継承します。カスタマイズされた色のセットが必要な場合は、dircolorsを使用できます。まず、カラー設定のローカルコピーを生成します:
$ 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ファイルに貼り付け、リロードします。または、その出力を.bashrcファイルに直接ダンプしてリロードすることもできます。
$ dircolors --bourne-shell ~/.dircolors >> ~/.bashrc
$ source ~/.bashrc
手動で変換を行う代わりに、起動時にBashに.dircolorsを解決させることもできます。現実的には、色を頻繁に変更することはないので、これは過度に積極的かもしれませんが、配色を大幅に変更する予定がある場合はオプションです。 .bashrcファイルに次のルールを追加します:
[[ -e $HOME/.dircolors ]] && eval "`dircolors --sh $HOME/.dircolors`"
ホームディレクトリに.dircolorsファイルがある場合、Bashは起動時にそれを評価し、それに応じてLS_COLORSを設定します。
端末の色は、特定の情報をすばやく視覚的に参照できるようにする簡単な方法です。ただし、それらに過度に依存したくない場合があります。結局のところ、色は普遍的ではないので、他の誰かがあなたのシステムを使用している場合、彼らはあなたと同じように色を見ることができないかもしれません。さらに、さまざまなツールを使用してコンピューターと対話する場合、一部の端末またはリモート接続が期待する色(またはまったく色)を提供しない場合もあります。
これらの警告はさておき、一部のワークフローでは色が便利で楽しい場合があるため、.dircolorデータベースを作成し、心ゆくまでカスタマイズしてください。