私の$PS1
変数は
\[\033[36m\][\[\033[m\]\[\033[34m\]\u@\h\[\033[m\] \[\033[32m\]\W\[\033[m\]\[\033[36m\]]\[\033[m\] $
同じ色とテキストを維持したいが、プロンプトをboldに表示したい。どうすればこれを達成できますか?
ウェブを見たところ、tput bold
を使用してこれを実行できることがわかりましたが、プロンプトが壊れているように見えたので、間違っているはずです。
太字は01
によって設定されるため、各色指定の前に01;
を追加する必要があります。
\[\033[01;36m\][\[\033[m\]\[\033[01;34m\]\u@\h\[\033[m\] \[\033[01;32m\]\W\[\033[m\]\[\033[01;36m\]]\[\033[m\] $
私は、かなりヒューリスティックな他の答えがあると思います。ただし、(将来のように)より具体的なニーズがある場合は、役立つスクリプトがあります。
# "Colorize" the plain text.
#
# Usage:
#
# $ colorize "TEXT" COLOR ["STYLE"] [BACKGROUND]
#
# Notes:
# - STYLE may be either a single value or a space-delimited string
#
# Examples:
#
# $ colorize "Hey!" blue bold
# $ colorize "Yo!" red italic white
#
colorize() {
text="$1"
if [ "$color_support" = true ]
then
color="$2"
style=($3)
background="$4"
colors=(black red green yellow blue purple cyan white)
styles=(regular bold italic underline reverse)
sn=(0 1 3 4 7)
for n in {0..7}
do
[[ $color == ${colors[n]} ]] && color="3$n"
[[ $background == ${colors[n]} ]] && background="4$n"
for s in ${!style[@]}
do
[[ ${style[s]} == ${styles[n]} ]] && style[s]="${sn[n]}"
done
done
! [ -z $style ] && style="${style[*]};" && style=${style// /;}
! [ -z $background ] && background=";$background"
background+="m"
text="\e[$style$color$background$text\e[0m"
fi
echo "$text"
}
太字、斜体、下線、逆テキストスタイル、およびbashでサポートされている色を提供します。 .bash_profile
に直接追加したくない場合に、関数をエクスポートすることもできます。
次に、プロンプトのフォーマットに使用する方法の例を示します(プロンプトには少し異なる構文が必要です)。
colorize_Prompt() {
colorize $@ &>/dev/null
if [ "$color_support" = true ]
then
text="\[\e[$style$color$background\]$1\[\e[0m\]"
fi
echo $text
}
# Main Prompt
PS1="$(colorize_Prompt "火" purple bold) $(colorize_Prompt "\w" blue bold) "
# Continuation Prompt
PS2="$(colorize_Prompt "|" cyan bold) "
解決策1:
次のようなものを試してください:
PS1="\[\033[36m\][\[\033[m\]\[\033[34m\]\[\e[1m \u@\h \e[0m\] \[\033[32m\]\W\[\033[m\]\[\033[36m\]]\[\033[m\] $"
Bashプロンプトを永続的に変更するには、.bashrc
に入れてください
解決策2:tput
を使用
reset=$(tput sgr0)
bold=$(tput bold)
black=$(tput setaf 0)
red=$(tput setaf 1)
green=$(tput setaf 2)
yellow=$(tput setaf 3)
blue=$(tput setaf 4)
Magenta=$(tput setaf 5)
cyan=$(tput setaf 6)
white=$(tput setaf 7)
user_color=$blue
PS1="\[$reset\]\[$cyan\][ \[$bold\]\[$user_color\]\u@\h\
\[$reset\]\[$blue\]\W\[$cyan\] ] \[$reset\]\[$reset\]\\$\[$reset\] "