Meu terminal tem um formato de prompt padrão como este:
nome de usuário @ nome da caixa / caminho / para / diretório atual / $
O código que o produz se parece com o seguinte: (ele também possui algumas definições de cores)
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\]'
Se o caminho para o diretório atual ficar muito longo, será desagradável trabalhar com o terminal, porque você interrompe constantemente as linhas. Nesses casos, eu preferiria um formato que produza uma string mais curta como esta:
username @ boxname current_dir_name $
O código que o produz ficaria assim (novamente com cores):
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[01;34m\] $(basename ${PWD}) \$ \[\033[00m\]'
Alguém sabe como eu poderia alternar facilmente o formato da janela do terminal atual de um estilo para outro, apenas digitando, por exemplo prompttoggle
:?
bash
gnome-terminal
Rotareti
fonte
fonte
PROMPT_DIRTRIM=0
ePROMPT_DIRTRIM=1
parece mais simples do que alternar entre valores diferentes paraPS1
e o resultado é quase o mesmo. Obrigado pela informação!PROMPT_DIRTRIM
um também pode adicionar argumentos ao comando. Se você não passar nenhum argumento que você alternar entrePROMPT_DIRTRIM=0
ePROMPT_DIRTRIM=1
e se você passar um número como um argumento de definirPROMPT_DIRTRIM
a ele.promptlen
seria um nome mais apropriado para o comando então.Respostas:
Armazene suas
PS1
variáveis longas e curtas com um nome diferente:Certifique-se de definir
PS1
um deles inicialmente:Em seguida, você pode criar um alias como este para alternar entre os dois valores do PS1:
A adição de todas as quatro linhas ao seu
~/.bashrc
arquivo executará o comando disponível nas sessões do Bash. Aqui estão elas novamente para facilitar a cópia:fonte
Você pode usar uma pequena
bash
função:A função acima corresponde se a corrente
$PS1
contémbasename
, se sim, então oPS1
sembasename
é definido, caso contrário, aquele combasename
está definido.Coloque a função no seu
~/.bashrc
para disponibilizá-lo em todas as sessões interativas.Exemplo:
fonte
Ou ... faça duas funções muito pequenas e adicione ao final do seu
~/.bashrc
para um prompt reduzido, digite
promptshort
, para retornar ao caminho completo, digitepromptlong
\W
mostra o diretório de trabalho atual apenas, portanto,$(basename ${PWD})
é um exageroVocê pode combinar em uma função, mas "longo" e "curto" são descritivos e ambos têm menos pressionamentos de tecla do que "alternar";)
Em vez de adicionar uma linha para substituir o PS1, prefiro ajustar o código que o define (por exemplo, remova o comentário
force_color_prompt=yes
e edite a linha depois[ "$color_prompt" = yes ]; then
)fonte
Aqui está uma
~/.bashrc
definição de função que eu pessoalmente uso para redefinir / alternar meu prompt do prompt regular para apenas$
. Adapte-o conforme necessário para atender às suas necessidades.fonte
Esta é uma resposta para o seu problema (diretórios longos quebram a linha de comando) e não especificamente para sua pergunta (como alterar o prompt de comando rapidamente).
Eu resolvi esse problema anos atrás com este prompt:
O que isso faz:
Isso fornece a você todo o espaço necessário para o seu comando, não o altera corretamente quando você está em uma estrutura de diretórios profunda, não altera a linha de digitação com códigos de cores (evitando erros estranhos que acontecem às vezes), enquanto ainda fornece as cores dica sobre onde a saída de um comando terminou e o seguinte começou:
fonte