Pergunta

Eu fiz algo para quebrar a minha Bash Shell Prompt no OS X (10.5.7) Terminal.

Este é o PS1 que eu tinha configurado:

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

Tanto quanto eu posso dizer que tenho os comandos cor escapar corretamente. No entanto, quando eu rolar para cima e para baixo no meu histórico de comandos muitas vezes eu recebo questões a quebra de linha se os comandos históricos embrulhar em várias linhas.

Eu simplificado minhas instruções para o seguinte:

PS1='\[\e[1m\]\h:\w\$ \[\e[0m\]'
PS2='> '

E eu ainda ver algo como:

localhost:~/Library/Application Support/Firefox/Profiles/knpmxpup.Defau
lt/extensions/{1A2D0EC4-75F5-4c91-89C4-3656F6E44B68}$ expocd \{1A2D0EC4-7
5F5-4c91-89C4-3656F6E                                           export PS1="\[
\e[1;32m\]\h\[\e[0m\]:                                          cd Library/Appl
ication\ Support/

Eu também tentei \033 vez de \e. Eu só incluiu PS2 até lá para informação, eu não mudaram a partir da instalação padrão. Se eu remover completamente os códigos de cores, em seguida, tudo funciona bem, todas as idéias?

Foi útil?

Solução

questões quebra de linha em Bash são nada de novo. Consulte o Mailinglist, talvez haja ainda um outro bug sobre isso.

Você não pode fazer muito mais do que marcar caracteres não imprimíveis, o resto deve ser feito pelo código avisar.

Outras dicas

Agora estou usando este PS1 com um bom efeito:

green=$(tput setaf 2)
blue=$(tput setaf 4)
bold=$(tput bold)
reset=$(tput sgr0)
PS1="\[$green$bold\]\h\[$reset\]:\[$blue$bold\]\w\[$reset\]\$ "

Scrolling através do meu histórico de comando parece wraps linha alça agora. No entanto, enquanto isso uma vez que esta pergunta foi feita Eu também atualizei meu OS X 10.6.3 para

Esta discussão stackoverflow parece relevante. Como alguém observou nesse segmento, o Bash FAQ em mywiki.wooledge.org discute como citar corretamente os códigos de cores em prompts Bash ( FAQ 53 ), e a invocação apropriada das cores dos terminais ( FAQ 37 ).

Parece que você tenha corretamente escapou e seqüências fechado.

Uma solução que eu uso qualquer maneira para adicionar um '\ n' no final. Acho que é mais clara e diminuir qualquer problema com problemas de acondicionamento. O fim exato da minha PS1 é:

'\n\[\033[0;30m\]$\[\033[0m\]

Um excelente howto você provavelmente já sabe:

Bash prompt de howto

Aqui é minha: é o melhor que eu encontrei, mas o local onde eu originalmente achei que estava faltando um caractere de escape, levando à questão a quebra de linha. I consertou com ele e, finalmente, tenho que trabalhar. Ela mostra o seu usuário, caminho, e informações ramo com bom contraste, cor-wise.

export PS1='\[\e[1;37m\]\[\e[1;32m\]\u\[\e[0;39m\]:\[\e[1;33m\]\w\[\e[0;39m\]\[\e[1;35m\]$(__git_ps1 " (%s)")\[\e[0;39m\] \[\e[1;37m\]|\[\e[0;39m\]\$'

Além disso, adicionar

GIT_PS1_SHOWDIRTYSTATE=true

Para mostrar um marcador quando um ramo é "sujo" (alterações sejam comprometidos existe)

export HISTCONTROL=ignoredups

Também é útil para ignorar duplicatas ao deslocar-se através da história bash.

bind "set completion-ignore-case on" 

também ajuda.

Por fim,

shopt -s checkwinsize

Pode ser útil no OSX se os problemas persistirem.

notei que existem alguns problemas com o posicionamento do cursor pronta mesmo se não há nenhum carácter especial na variável PS1 ou ambiente PROMPT.

Se a saída de um arquivo que não têm um carácter de fim de linha no final. Ele irá confundir o prompt.

Você pode reproduzir este fazendo:

curl https://gist.githubusercontent.com/martinos/d4aa0a7d4d752b0d0d9f/raw/3198c39f84a080c44227a084a19fb3a0bb661ee5/wrapping_issue.txt

e pressionar a tecla para cima várias vezes e você verá que o prompt de ficar confuso.

Você pode ver um exemplo disto em ação:

https://asciinema.org/a/9mtjhi9dib6md4ocsbw210cca

Quando isso ocorre, basta pressionar <CTRL-C> eo prompt vai voltar ao normal.

Note que zshell não tem esse problema.

Para referência futura, isso é o que eu uso:

export PS1="\[\033[0;31m\][\u@Project:\w]$\[\033[0m\] "

Este seria exibido minha concha alerta como:

[ec2-user@Project:~]$

Me ajuda a distinguir entre os sites ao vivo e dev.

'shopt -s checkwinsize' também funciona para problemas envoltório Cygwin também

Se você estiver usando a barra de título truque "\e]2;titlebar\a", certifique-se de escapar isso também: "\[\e]2;titlebar\a\]"

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top