Eu configurei um PS1
prompt sofisticado de duas linhas , com nome do servidor, hora, nome do usuário e outras variáveis úteis.
PS1="\n\[\033[1;34m\]\342\226\210\342\226\210 \u @ $SERVER_NAME""$BBlue"" \w""$Color_Off \n\[\033[0;36m\]\342\226\210\342\226\210 \d \t $ \[\033[0;39m\]"
Fonte completa do Github aqui .
O problema é que muitas vezes as longas filas são contornadas, o que significa que a nova linha se sobrepõe à anterior.
O problema é inconsistente: algumas linhas estão quebradas corretamente, outras não.
Alguma idéia de como consertar isso?
Encontrei esta solução on-line, que sugeria um colchete para as variáveis de cores:
Mude isso:
para:
Eu comprometi a mudança - espero que funcione conforme o esperado.
fonte
\[
\]
, para que você não possa terminar todas as cores de ansi-escape com,\]
porque, e se não houver um\[
. Ao inserir caracteres não imprimíveis, basta envolvê-los\[
\]
(por exemploPS1='\[\e[32;1m\] green prompt \[\e[0m\] $'
).Minha solução preferida para a questão da sobreposição de linhas longas no bash PS1 é ter um
\n
no final das linhas de prompt do PS1.por exemplo
Se você quiser todas as minhas outras coisas - hora, usuário, host, diretório e ramo git (!), Você pode usar este (mac ou linux):
/unix//a/124012/10043
fonte
if [[ $(git rev-parse --is-inside-git-dir 2> /dev/null) ]]; then branch="$( git symbolic-ref --short -q HEAD 2> /dev/null )"; fi
. Esse é um padrão ao colocar o git em um script e avaliar o nome da ramificação pelo que li anteriormente.