Измените подсказку на основе значения

Страница справочника для данной части программного обеспечения обычно пишется ее автором (авторами). Те в Вашей системе будут самым подходящим для инструментов, которые Вы установили, потому что у них будет корректная информация для Вашей реализации и уровня версии.

Главным образом различия незначительны, но самое большое различие между GNU, BSD и инструментами BusyBox.

3
13.08.2012, 00:07
2 ответа

Принятие Вы используете последнюю версию bash, можно выполнить это с PROMPT_COMMAND и использование переменной в PS1 вместо \h:

PROMPT_COMMAND='
  myhost=$(hostname)
  if [[ $myhost == master ]]; then
    myhost=${myhost^^}
  fi
'

PS1='\[\e[31;1m\][\u@$myhost \T \w] \[\e[0m\]'

Независимо от того, что находится в PROMPT_COMMAND выполняется, прежде чем каждая подсказка записана. Вышеупомянутые наборы определения myhost к выводу hostname, и если myhost ведущее устройство, это получает uppercased ${var^^} расширение.

4
27.01.2020, 21:13

альтернативный подход был бы

PS1='\[\e[31;1m\][\u@$(hostname | perl -pe "\$_ = uc if m/master/") \T \w] \[\e[0m\]'

я признаю, что мое предложение не так хорошо структурировано как одно Тора, но в основном хорошо знать это

$(cmd)

синтаксис для замены команды, как обычно в bash.

Существует также хорошее практическое руководство, которое только имеет дело с конфигурацией подсказки удара. Это определенно стоит считать.

3
27.01.2020, 21:13

Теги

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