Как сделать дисплей терминала, который полужирным обозначает буквами user@machine?

ack делает что-то подобное по умолчанию. можно использовать

$ ack blah
path/to/blah
16: blah blah
19: blah blah blah

path/to/more/blah
21: blahness

Если Вы просто хотите имена файлов, которые соответствуют Вам, может сказать ack -l. ack -lc даст Вам количество соответствий на файл.

31
14.02.2012, 23:55
5 ответов

Необходимо смочь сделать это путем установки PS1 запросите переменную в Вашем ~/.bashrc файл как это:

PS1='[\u@\h \w]\$ '

Для создания это окрасило (и возможно полужирный - это зависит от того, включил ли эмулятор терминала его), необходимо добавить цветовые коды Escape:

PS1='\[\e[1;91m\][\u@\h \w]\$\[\e[0m\] '

Здесь, все не оставляемое между 1;91m и 0m части будут раскрашены 1;91 цвет (полужирный красный). Поместите эти управляющие коды вокруг различных частей подсказки, чтобы использовать различные цвета, но не забыть сбрасывать цвета с 0m или иначе Вы окрасите терминальный вывод также. Не забудьте получать файл впоследствии для обновления текущей оболочки: source ~/.bashrc

22
27.01.2020, 19:37
  • 1
    Почему бы не использовать 31 для красного? 91, кажется, не стандартный код. спасибо –  jw013 15.02.2012, 01:45
  • 2
    @jw013 диапазон 90-97 эквивалентен диапазону 30-37, если используется в качестве полужирного т.е. 1;31 и 1;91. Используя обычную толщину шрифта, диапазон 90-97 дает больше более ярких цветов, чем другой. –   15.02.2012, 12:21

Найдите где Ваш PS1 установлен в Вашем .bashrc и вставьте '\[\e[1m\]' вначале и \[\e[0m\] в конце.

  • \[ и \] необходимы, таким образом, оболочка знает, что путаница внутри занимает 0 места на экране, который предотвращает некоторых завинченных поведение при выполнении редактирования строки. Вы не должны волноваться слишком много об этом.
  • \e[ известен как CSI (управляющая последовательность introducer). Вы будете видеть, что это использовало в большинстве кодов, перечисленных на странице Wikipedia, на которую ссылаются. \e означает символ ESC.
  • Если Вы посмотрите в таблице SGR на странице Wikipedia, то Вы будете видеть, что этот 1 является числом для яркого / полужирного текста, и 0 для сброса. Таким образом CSI 1m включает полужирный и CSI 0m сбрасывает шрифт, таким образом, остальная часть Вашего текста нормальна.

Википедия имеет полный список управляющих кодов ANSI, которые можно использовать, если эмулятор терминала поддерживает ее.

Править

Для мобильности и удобочитаемости, необходимо использовать tput вместо управляющих кодов жесткого кодирования. Единственный недостаток tput подход не будет работать с терминалами, которые поддерживают коды ANSI, но повредились или отсутствующий terminfo базы данных, но в этом случае поврежденный terminfo является большей проблемой как многими Вашими консольными приложениями, которые полагаются на terminfo, может не работать правильно.

Вот пример того, что я выполняю в моем .bashrc:

# color names for readibility
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=$green
[ "$UID" -eq 0 ] && { user_color=$red; }
PS1="\[$reset\][\[$cyan\]\A\[$reset\]]\[$user_color\]\u@\h(\l)\
\[$white\]:\[$blue\]\W\[$reset\][\[$yellow\]\$?\[$reset\]]\[$white\]\
\\$\[$reset\] "

Вот то, на что была бы похожа genericized моя версия. 0 статус выхода последней команды.

PS1 screenshot

45
27.01.2020, 19:37

Это - подсказка по умолчанию, что Вы входите в оболочку удара cygwin:

PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$ '

enter image description here

\[\e]0;\w\a\] = Set the Window title to your current working directory
\n            = new line
\[\e[32m\]    = Set text color to green
\u@\h         = display username@hostname
\[\e[33m\]    = Set text color to yellow
\w            = display working directory
\[\e[0m\]     = Reset text color to default
\n            = new line
\$            = display $ prompt

Ссылки:

6
27.01.2020, 19:37
  • 1
    , я добавил новую строку перед [user@host], который делает каждую команду еще более читаемой (это должно быть установлено так по умолчанию на терминале imo). –  Benjamin 15.02.2012, 02:04

Я использую эту функцию оболочки для получения текстовых атрибутов в терминале:

color () {
  if [ -z "$1" -a -z "$2" -a -z "$3" ]; then
    echo "\033[0m"
    return
  fi
  case $1 in
    black)   color_fg=30;;
    red)     color_fg=31;;
    green)   color_fg=32;;
    yellow)  color_fg=33;;
    blue)    color_fg=34;;
    magenta|purple) color_fg=35;;
    cyan)    color_fg=36;;
    white)   color_fg=37;;
    -)       color_fg='';;
    *)       color_fg=39;;
  esac
  case $2 in
    bold)      color_bd=1;;
    italics)   color_bd=3;;
    underline) color_bd=4;;
    inverse)   color_bd=7;;
    strike)    color_bd=9;;
    nobold)      color_bd=22;;
    noitalics)   color_bd=23;;
    nounderline) color_bd=24;;
    noinverse)   color_bd=27;;
    nostrike)    color_bd=29;;
    -)         color_bd='';;
    *)         color_bd=0
  esac
  case $3 in
    black)   color_bg=40;;
    red)     color_bg=41;;
    green)   color_bg=42;;
    yellow)  color_bg=43;;
    blue)    color_bg=44;;
    magenta|purple) color_bg=45;;
    cyan)    color_bg=46;;
    white)   color_bg=47;;
    -)       color_bg='';;
    *)       color_bg=49;;
  esac
  s='\033['
  if [ -n "$color_bd" ]; then
    s="${s}${color_bd}"
    if [ -n "$color_fg" -o -n "$color_bg" ]; then
      s="${s};"
    fi
  fi
  if [ -n "$color_fg" ]; then
    s="${s}${color_fg}"
    if [ -n "$color_bg" ]; then
      s="${s};"
    fi
  fi
  if [ -n "$color_bg" ]; then
    s="${s}${color_bg}"
  fi
  s="${s}m"
  echo "$s"
  unset s color_bd color_bg color_fg
}

Затем использовать его:

color_reset=`color`
color_grbd=`color green bold`
color_bubd=`color blue bold`
PS1="\[${color_grbd}\][\u@\h]\[${color_reset}\]:\[$color_budb}\]\w\[${color_reset}\]> "

Это дает мне [username@hostname]:cwd> где username@hostname полужирный зеленый и cwd полужирный синий.

2
27.01.2020, 19:37
  • 1
    Спасибо за это. Я предполагаю, что также должен был скопировать все вышеупомянутое в ~/.bashrc? –  Benjamin 15.02.2012, 01:04
  • 2
    Да, я установил это в моем ~/.bashrc файл и использование это для установки моей подсказки. Я даже изменяю цвета в зависимости от системы, я иду. –  Arcege 15.02.2012, 02:55

Чтобы оно выглядело как приглашение Ubuntu по умолчанию, добавьте

export PS1='\[\e[1;32m\]\u@\h\e[0;39m\]:\e[1;34m\]\w\e[0;39m\]$\[\e[0m\] '

в вашем ~/.bashrc.

Это создаст хорошо -известный зеленыйuser@host(полужирный ), за которым следует не -жирное белое двоеточие, за которым следует ваш рабочий каталог, выделенный жирным синим цветом, за которым следует знак $, пробел, а ваша команда не -жирными белыми буквами:

Ubuntu Bash prompt

1
27.01.2020, 19:37

Теги

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