Inserir linha vazia entre os prompts da linha de comando


8

Ao usar a linha de comando, muitas vezes fica muito confuso. Tornando inconveniente examinar comandos passados ​​e suas saídas, por exemplo.

Gostaria de adicionar uma nova linha sempre que o prompt de comando for exibido. Igual a:

<clutter>
<blank line>
name@machine:~$

Eu uso o shell bash. Como isso pode ser alcançado?


1
Eu prefiro isso: lifehacker.com/5840450/…
Maerlyn

Respostas:


21

Uma maneira de conseguir isso é modificando o .bashrcarquivo. Simplesmente coloque o seguinte no final do .bashrcarquivo.

PS1="\n$PS1"

Para explicar como isso funciona, PS1é a variável que contém o que deve ser exibido como o prompt. Tudo isso está dizendo é "definido PS1para o conteúdo anterior de PS1, com um caractere de nova linha anexado". Colocá-lo na .bashrcmaioria das distros apenas faz com que o bash o execute sempre que você abre um shell interativo (mas não um shell de login - consulte Diferença entre o Shell de Login e o Shell Não-Login? ).


2
Para explicar como isso funciona, PS1 é a variável que contém o que deve ser exibido como o prompt. Tudo isso está dizendo é "configure PS1 para o conteúdo anterior do PS1, com um caractere de nova linha anexado".
Muzer 11/08

@Muzer Talvez o seu comentário possa ser uma edição
rpax 11/08

@rpax boa ideia, enviada. Também foi adicionado um pouco sobre o .bashrc.
Muzer 12/08/2015

Satisfatoriamente, a execução PS1="\n$PS1"em um terminal tem efeito imediato :)
mwfearnley

Funciona totalmente bem, exceto após entrar clear(ou pressionar Ctrl+l) a primeira linha mostrada é uma linha vazia. Para alguns, pode ser um pequeno detalhe, mas eu preferiria muito que a primeira linha fosse o prompt.
Robert Kusznier 13/08/19

6

Você pode usar PROMPT_COMMAND :

PROMPT_COMMAND="printf '\n';$PROMPT_COMMAND"

ou:

PROMPT_COMMAND="echo;$PROMPT_COMMAND"

2
O primeiro deveria ser PROMPT_COMMAND="printf '\n';$PROMPT_COMMAND"? Em sua forma atual, parece que não faço nada quando o coloquei no .bashrcarquivo.
Slothworks 11/08/2015

@ Slothworks: Sim, é claro, minha digitação incorreta foi corrigida.
precisa saber é

Mais de uma maneira de fazê-lo: :) Obrigado pela resposta.
Slothworks 11/08/2015

2
A alternativa do Slothworks é melhor, porque o seu executa um comando extra após cada comando executado na linha de comando. printfe echosão muito leves, é claro, mas ainda não faz sentido usar PROMPT_COMMANDquando PS1fará o trabalho.
Mikkel

Observe que, se você quiser colocar algo no comando que seja alterado sempre que executar o prompt, desejará PROMPT_COMMAND e não o PS1. Isso é comumente usado com o git para exibir qual ramificação do repositório está ativa. Sugestões do Google para PROMPT_COMMAND para ver o que pode ser feito.
Walter Walter

4

Alternativa: deixe uma linha no PS1=prompt do seu .bashrc. Aqui está literalmente como eu configuro .bashrcem todas as máquinas Linux que tenho:

PS1=' 
serg@ubuntu [$(pwd)]
================================
$ '

Como você pode ver no meu exemplo acima, o nome de usuário é codificado no prompt. É claro que você pode usar seqüências de escape que o bash ou outro shell (por exemplo, ksh ) fornece, mas uma opção um pouco mais neutra seria usar a substituição de parâmetros com comandos como whoami(reporte seu nome de usuário) e hostname(obviamente, reporta o nome do host). Por exemplo:

PS1='
$(whoami)@$(hostname):$(pwd)
$ '

Para mais coisas divertidas com o prompt,, .bashrce expansões de parâmetros, confira minhas respostas aqui:

Como verificar o status da bateria usando o terminal?

Como faço para que meus terminais / invólucros tenham designs personalizados? e

Como mostrar um relógio de corrida no terminal antes do prompt de comando?


Por que o nome de usuário e o nome da máquina são codificados? Seria bom se eles foram parametrizada
rpax

@rpax meu nome de usuário atual é diferente. Esse é o meu nome que você vê no prompt. O nome da máquina também é diferente.
Sergiy Kolodyazhnyy 11/08/2015

Eu quis dizer algum tipo de $(whoami)em vez deusernamehardcoded
rpax

@ rpax oh, isso pode ser feito também. Vou incluí-lo na minha resposta #
Sergiy Kolodyazhnyy

4
Observe que você pode usar \ue \hpara seu nome de usuário e nome de host, respectivamente. Você pode ver mais caracteres especiais (por exemplo, a hora atual em vários formatos) aqui
Yossarian
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.