web-dev-qa-db-ja.com

bashプロンプトを太字にする

私の$PS1変数は

\[\033[36m\][\[\033[m\]\[\033[34m\]\u@\h\[\033[m\] \[\033[32m\]\W\[\033[m\]\[\033[36m\]]\[\033[m\] $

同じ色とテキストを維持したいが、プロンプトをboldに表示したい。どうすればこれを達成できますか?

ウェブを見たところ、tput boldを使用してこれを実行できることがわかりましたが、プロンプトが壊れているように見えたので、間違っているはずです。

1

太字は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\] $
2
terdon

私は、かなりヒューリスティックな他の答えがあると思います。ただし、(将来のように)より具体的なニーズがある場合は、役立つスクリプトがあります。

# "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) "

スクリプトは dotfiles から exempt です。

0
Zlatan

解決策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\] "
0
snoop