私はいくつかの答えを見ましたが、彼らはすべてこれについて話しますecho
。 Bashでコマンド出力の色を変更するには?たとえば、hostname
コマンドの出力を色分けしたいと思います。
$ hostname
Nameofcomputer <--- Just the output to be colored and then it returns to default color of the shell.
答え1
私が提案した@finefootのおかげで、このコードはうまくいくようです。
#!/bin/bash
case $1 in
red) col=$'\e[1;31m' ;;
green) col=$'\e[1;32m' ;;
yellow) col=$'\e[1;33m' ;;
blue) col=$'\e[1;34m' ;;
magenta) col=$'\e[1;35m' ;;
cyan) col=$'\e[1;36m' ;;
esac
printf "%s" "${col}"
shift
exec "$@"
使用法
それが呼び出されると仮定しset-color
、それを呼び出すために使用しますset-color red hostname
。
説明する
- Jasonwryanの答えによると、ケースブロックは色を定義します。ここ。
- このスクリプトはこの色を設定するために使用されます
printf
。 shift
スクリプトに入力された最初のオプション(色など)を削除します。exec "$@"
次に、残りのスクリプトを実行します。
答え2
すでにこれを行うことができるプログラムがあります。たとえば、grc
次は1つです。
ログファイル、コマンド出力、任意のテキストの色を指定するために使用できる汎用シェーダ。正規表現で設定できます。
[私は通常テキスト画像を使用するのが好きではありませんが、StackExchangeにカラーフォーマットオプションがないようです。]
またはあるsource-highlight
。
バラよりコマンド出力を取得し、事前定義されたスキームに従って色を付けることができるシェーダユーティリティはありますか?スーパーユーザーも利用可能
答え3
tput setaf 1; hostname; tput sgr0
tput
端末データベースの対応する機能を照会します。setaf
ここはANSIカラー1設定(赤)sgr0
、レンダリングするグラフィックを選択しない基本プロパティを返します。他にも(オリジナルペア)を使用して背景色と前景色のみをリセットし、他のグラフィックプロパティ(太字、下線、ハイライト、反転...)はそのままにすることがtput sgr0
できます。tput op
zsh
、tcsh
またはなどの一部のシェルには、データベースfish
クエリまたはカラー名をANSIコードにマッピングする機能が組み込まれています。zsh
fish
)、しかしbash
。
では、zsh
プロンプト拡張を使用して次のホスト名を印刷しますred
。
print -P '%F{red}%m%f'
(%f
前景色のみリセット)
tcsh
組み込み機能や組み込み機能zsh
を持つterminfoのechotc
代わりにtermcapコードを使用してください。
echotc AF 1; hostname; echotc me
(最新バージョンのようなterminfoコードsetab / sgr0の場合zsh
)echoti
tput
では、パラメータ拡張フラグzsh
が%
パラメータ拡張時にプロンプト拡張をオンにするため、次のことができます。
red=%F{red} normal=%f
echo ${(%)red}whatever%{(%)normal}
アシスタントがコンテンツをカラーで作成するように実行できる自動読み込み可能機能zsh
もあります。colors
autoload colors; colors
echo $fg[red]whatever$fg[default]