によるとこのStackOverflowの投稿KornShell では色付きのプロンプトを表示できます。その方法がわかりません。色は使用できます:
echo -e "\033[34mLinux\033[00m"
次のようにすると、青色の「Linux」出力が表示されます。
printf "\033[34mLinux\033[00m"
しかし、エスケープ コードをPS1
プロンプト変数に組み込むと、エスケープされません。色付きのプロンプトを表示するには、何をする必要がありますか? 見た目が美しいというだけでなく、色付きのプロンプトは出力を視覚的に解析するときにも便利です。
答え1
Ctrl-vで入力したリテラル Esc 文字を使用します(画面にはEscと表示されます)。^[
PS1="^[[34mLinux^[[00m"
echo
または、動作していることがわかったコマンドの出力を使用します。
PS1="$(echo -e "\033[35mLinux\033[00m")"
答え2
変数にリテラル エスケープ文字を入れる必要がありますPS1
。Ksh88 および pdksh や mksh (旧バージョン) などのクローンには、組み込み以外では制御文字のリテラル構文がありませんprint
。Mksh は\e
エスケープを認識しますが、pdksh では 8 進コード が必要です\033
。
PS1=$(print '\033[34mLinux\033[00m')
ATT ksh93 では、バックスラッシュ エスケープ リテラル構文が導入されています$'…'
(R39b 以降の mksh でも使用可能)。バックスラッシュ エスケープを使用して、これらのリテラルに制御文字を配置できます。
PS1=$'\e[34mLinux\e[00m'
答え3
mksh
ユーザー向けにこれらを使用しますshell
:
# custom prompt see http://comments.gmane.org/gmane.os.miros.mksh/126
PS1=$'\a\r\a\e[1;34m\a ^ ^ ^ ^ | \a\e[36m\a${USER:=$(ulimit -c 0; id -un 2>/dev/null || echo
\?)}@${HOSTNAME%%.*}\a\e[34m\a | ^ ^ ^ ^ | \a\e[0;33m\a$(local d=${PWD:-?} p=~; [[ $p = ?(*/) ]] || d=${d/#$p/~};
print -nr -- "$d")\a\e[1;34m\a |\n ^ ^ ^ ^ | \a\e[32m\a$(date +%H:%M)\a\e[34m\a | ^ ^ >>\a\e[0m\a '
& は少し異なりshell
ますroot
:
PS1=$'\a\r\a\e[1;34m\a ^ ^ ^ ^ ^ \a\e[31m\a${USER:=$(ulimit -c 0; \
id -un 2>/dev/null || echo \?)}@${HOSTNAME%%.*}\a\e[34m\a ^ ^ ^ ^ ^ ^ ^ \a\e[0;33m\a$(
local d=${PWD:-?} p=~
[[ $p = ?(*/) ]] || d=${d/#$p/~}
print -nr -- "$d"
)\a\e[1;34m\a ^ ^ \n ^ ^ ^ ^ ^ \a\e[32m\a$(date +%H:%M)\a\e[34m\a ^ ^ ^ ^ \a\e[0m\a '
特殊文字がコピーされなかったため、ここにペーストビンペーストがあります通常ユーザーと root の両方に対して。
答え4
以前の回答や他の情報源のおかげで、私は次のことを思いつくことができました。
Korn シェル プロンプト:
PS1="$(echo "\033[32m`logname`\033[35m@\033[32m`hostname` \033[33m`pwd`\033[36m\n\$\033[0m")"
Bash プロンプト:
PS1="\[\e[32m\]\u\[\e[35m\]@\[\e[32m\]\h \[\e[33m\]\w\[\e[36m\]\n\$\[\e[0m\]"
これらは、同じ色のプロンプト (はい、私はクイーンズイングリッシュを話します ;) ) を次の形式で表示します。
username@computername /current/working/directory
$
DOS での同等のもの (ただし、色のオプションはありません) は次のとおりです。
prompt %username%@%computername% $P$_$G
これにより、次のようになります。
username@computername /current/working/directory
>
">" は、"$" で 'nixy' ではなく 'DOSsy' を維持していますが、代わりにシジル ("$") が必要な場合は、次のようになります。
prompt %username%@%computername% $P$_$$
ログイン アカウントに必要な権限がある場合、'nixies' を永続的にするには、先頭に "export " を追加します。
export PS1="..."
DOSsy を次のように変更します。
setx PROMPT "%username%@%computername% $P$_$G"
または
setx PROMPT "%username%@%computername% $P$_$$"