私はほとんどの時間をUnix環境での作業とターミナルエミュレータの使用に費やしています。色を使用すると出力がより便利で直感的になるため、コマンドラインで色を使用しようとしています。
端末環境に色を追加するためにどのようなオプションがありますか?どんなトリックを使いますか?どのような落とし穴に遭遇しましたか?
残念ながら、色のサポートは、端末の種類、OS、TERM設定、ユーティリティ、バグのある実装などによって異なります。
多くの実験を行った後の、私のセットアップからのヒントを次に示します。
-
TERM=xterm-color
を設定する傾向があります 、これはほとんどのホストでサポートされています(すべてではありません)。 - 私はさまざまなホスト、さまざまなOSバージョンなどで作業しています。macOSX、Ubuntu Linux、RHEL / CentOS / Scientific Linux、FreeBSDのすべてを使用しています。可能であれば、物事をシンプルかつ一般的に保つようにしています。
- 私はGNU
screen
を使用してたくさんの仕事をしています 、これにより、もう1つの楽しみが追加されます。 - 多くのOSは
dircolors
のようなものを設定します デフォルトでは、100の異なるホストでこれを変更したくありません。だから私はデフォルトに固執しようとします。代わりに、端末の色の構成を微調整します。 -
一部のUnixコマンドに色を使用する(
ls
、grep
、less
、vim
)およびBashプロンプト。これらのコマンドは、標準の「ANSIエスケープシーケンス」を使用しているようです。例:alias less='less --RAW-CONTROL-CHARS' export LS_OPTS='--color=auto' alias ls='ls ${LS_OPTS}'
.bashrc
を投稿します ジェパディスタイルの質問に答えてください。
承認された回答:
できることがいくつかあります:
編集者+コード
多くのエディターは、構文強調表示をサポートしています。 vim
およびemacs
デフォルトでオンにします。 nano
で有効にすることもできます 。
Pygmentsをコマンドラインツールとして使用して、ターミナルでハイライトコードを構文化することもできます。
grep
grep --color=auto
すべての一致を強調表示します。 export GREP_OPTIONS='--color=auto'
を使用することもできます エイリアスなしで永続化するため。 --color=always
を使用する場合 、配管の場合でも色を使用するため、混乱します。
ls
ls --color=always
指定された色:
export LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33'
(ヒント:dircolors
役立つ場合があります)
PS1
PS1(シェルプロンプト)を色を使用するように設定できます。例:
PS1='e[33;[email protected]: e[31mWe[0m$ '
次のようなPS1を生成します:
[黄色][メール保護]:[赤]〜[通常] $
あなたはこれで本当に創造的になることができます。アイデアとして:
PS1='e[se[0;0He[1;33mh tne[1;32mThis is my computere[u[[email protected]: w]$ '
ランダムな情報を含むバーを端末の上部に配置します。 (最良の結果を得るには、alias clear="echo -e 'e[2Jnn'"
も使用してください。 。)
エスケープシーケンスを取り除く
関連:非公開の画面解像度?
望まないときに色を出力するために何かがスタックしている場合は、このsed
を使用します エスケープシーケンスを削除する行:
sed "s/[^[[0-9;]*[a-zA-Z]//gi"
より本格的なエクスペリエンスが必要な場合は、e[8m
で始まる行を削除することもできます 、テキストを非表示にするように端末に指示します。 (広くサポートされていません。)
sed "s/^[^[8m.*$//gi"
また、これらの^[は実際の文字通りの^[である必要があることに注意してください。それらを入力するには、bashで^ V ^ [を押します。つまり、 Ctrlです。 + V 、 Ctrl + [ 。