Делаем bash быстрым и жирным

Моя $PS1 переменная -

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

Я хочу сохранить те же цвета и текст, но подсказка должна быть выделена жирным шрифтом . Как мне это сделать?

Я просмотрел сеть и обнаружил, что это можно сделать с помощью tput bold, но подсказка показалась мне неработоспособной, я, должно быть, делал это неправильно.

1
задан 6 May 2018 в 00:41

4 ответа

Полужирный установлен 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
ответ дан 6 May 2018 в 10:41
  • 1
    Таким образом, каковы части, которые я должен добавить в код? – paulST 29 November 2016 в 03:31

Решение 1:

Вы пробуете что-то вроде этого:

PS1="\[\033[36m\][\[\033[m\]\[\033[34m\]\[\e[1m \u@\h \e[0m\] \[\033[32m\]\W\[\033[m\]\[\033[36m\]]\[\033[m\] $"

Для постоянного изменения для избиения подсказки вставляет его .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
ответ дан 6 May 2018 в 10:41
  • 1
    Так, например, у меня есть 6 видео, названных video1.mp4, video2.mp4, и так далее. Каков был бы точный код, который я ввожу? – paulST 29 November 2016 в 05:20

При использовании человечности 18.04 выполните следующие команды

cp /etc/skel/.bashrc ~/.profile

Вот именно. У Вас будет полужирное user@host при подсказке

-2
ответ дан 1 October 2019 в 02:18

Я вижу, что существуют другие ответы, которые являются в значительной степени эвристическими. Однако, если у Вас есть более определенные потребности (как можно сделать в будущем), у меня есть сценарий, который может быть полезен Вам.

# "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_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.

0
ответ дан 1 October 2019 в 02:18

Другие вопросы по тегам:

Похожие вопросы: