zsh
Tente o seguinte:
setopt PROMPT_SUBST
PROMPT='%{$(pwd|grep --color=always /)%${#PWD}G%} %(!.%F{red}.%F{cyan})%n%f@%F{yellow}%m%f%(!.%F{red}.)%#%f '
Aqui está um detalhamento do prompt:
- PROMPT_SUBST ativa a substituição de comandos no prompt (e expansão de parâmetros e expansão aritmética)
%{...%}
- uma sequência de escape
$(pwd|grep --color=always /)
- imprima o diretório atual e realce /
- a cor dependerá da variável de ambiente $ GREP_COLORS (ou seu valor padrão) - negrito é o padrão
%${#PWD}G
- use o comprimento em caracteres do nome do diretório atual como um valor de falha. Isso faz com que o shell considere esse o comprimento da sequência de caracteres anterior (após o " %{
") em vez do comprimento real da cadeia de caracteres que inclui as seqüências de escape ANSI. Isso evita que o shell fique confuso sobre a posição do cursor em relação ao final do prompt.
- - - - - - - este é o fim da parte que responde à sua pergunta - - - - - - -
%(!.%F{red}.%F{cyan})
- se esse for um shell privilegiado (raiz), defina a cor do primeiro plano como vermelho, caso contrário, ciano
%n
- gera o nome de usuário
%f
- redefinir a cor do primeiro plano para o padrão
@
- um literal no sinal
%F{yellow}
- deixe a cor do primeiro plano amarela
%m
- gera o nome do host
%f
- redefinir a cor do primeiro plano para o padrão
%(!.%F{red}.)
- se esse for um shell privilegiado (raiz), defina a cor do primeiro plano como vermelho
%#
- produza a #
para um shell privilegiado ou %
para um não privilegiado
%f
- redefinir a cor do primeiro plano para o padrão
Coloquei o caminho em primeiro lugar neste prompt de ênfase, pois a pergunta diz respeito ao caminho.
Aqui está uma versão do zsh que muda a cor da barra dependendo se você é root (privilegiado) manipulando a $GREP_COLORS
variável:
setopt PROMPT_SUBST
PROMPT='%{$(pwd|([[ $EUID == 0 ]] && GREP_COLORS="mt=01;31" grep --color=always /|| GREP_COLORS="mt=01;34" grep --color=always /))%${#PWD}G%} %(!.%F{red}.%F{cyan})%n%f@%F{yellow}%m%f%(!.%F{red}.)%#%f '
Bater
Você pode fazer um prompt semelhante no Bash. Neste exemplo, coloquei o usuário e o nome do host em primeiro lugar e a cor das barras também muda quando o UID é 0. Aviso: isso substitui a $PS1
variável de prompt do Bash . Isso não deve ser um problema, a menos que você esteja fazendo algo especial ou espere que o comportamento mude quando você definir essa variável diretamente e isso estiver em vigor. Além disso, isso usa uma variável chamada " usercolor
" que pode colidir com outra coisa, embora tudo possa ser colocado em uma função e a variável declarada local.
PROMPT_COMMAND='usercolor="\[\033[0;36m\]";[[ $EUID == 0 ]] && usercolor="\[\033[1;31m\]";PS1="$(pwd)";PS1="$usercolor\u\[\033[0m\]@\[\033[0;33m\]\h\[\033[0m\]:${PS1//\//$usercolor/\[\033[0m\]}$usercolor\\$\[\033[0m\] "'
Aproveitei o fato de o Bash não ter o recurso "falha" do zsh para usar a substituição de expansão de parâmetro para colorir condicionalmente as barras (em vez de usar grep).