Adicionando espaço vertical após o comando no bash

6

Como adicionar espaço vertical após cada comando no bash?

Procurando por um pouco de espaço vertical, não uma linha completa. 1/4 ou 1/3 da altura da linha deve fazê-lo.

[edit] O espaço para adicionar é somente após o pacote de comando + saída. As linhas entre o comando e a saída associada ainda usam o espaçamento padrão. Exemplo: do ls , a saída é mostrada usando espaçamento de linha regular; somente após a saída obtemos o espaçamento maior para separar claramente o par comando + saída do próximo comando + saída.

    
por Daniel 21.04.2015 / 13:59

3 respostas

5

Isso é mais uma opção de configuração / recurso de "aplicativo de terminal" do que uma opção de bash. Bash não tem conhecimento de fontes ou espaços, isso é algo relacionado ao terminal.

Por exemplo: o programa de terminal do Mac Os X permite configurar mais espaço entre as linhas: link

Se é isso que você está procurando, verifique seu programa de terminal para ver se ele permite que você configure isso.

EDIT: Se você quiser apenas adicionar espaço extra ao prompt após a saída do comando, tente isto:

export PS1='\n\[3[01;31m\]\u@\H:\[3[02;36m\] \w \$\[3[00m\] '

Adiciona uma linha inteira (\ n), mas talvez seja melhor que nada.

    
por 21.04.2015 / 14:11
2

Não estou ciente de nenhum emulador de terminal que suporte algo nesse sentido. O conceito básico de um terminal (ou emulador de terminal gráfico) é trabalhar com uma grade de texto. A tela é dividida em uma matriz de células de tamanho igual e cada célula contém uma letra. Você pode imprimir um fluxo de texto simples, mas também pode posicionar o cursor arbitrariamente dentro da grade e substituir o conteúdo de qualquer célula.

Existem algumas exceções, por exemplo uma letra CJK ocupa duas células adjacentes e o xterm ainda suporta a impressão de uma letra normal em largura dupla e / ou altura dupla (nunca a vi sendo usada em qualquer lugar exceto para testes de terminal), mas ainda está alinhada à grade básica .

O que você está pedindo exigiria redesenhar todo o conceito do zero. Permitir posicionamento arbitrário por alguns meios que não existem agora e descobrir o que deve acontecer se um caractere for impresso em algum lugar onde ele se sobreponha parcialmente a um caractere previamente impresso.

Isso resultaria em um sistema muito mais complexo do que os emuladores de terminal oferecem a você, para benefício marginal.

O que eu posso recomendar para você para que o fim da saída de um comando se destaque é ter um prompt com uma cor especial, talvez em negrito ou itálico ou algo assim.

    
por 22.04.2015 / 12:47
1

Coloque o seguinte em um arquivo:

command1()
{
    if [ "$BASH_COMMAND" != command2 ]
    then
        command_flag=1
    fi
    return 0
}
trap command1 debug
command2()
{
    if [ "$command_flag" ]
    then
        echo ""
    fi
    command_flag=
}
PROMPT_COMMAND=command2

Eu aconselho você a alterar os nomes command1 , command2 e command_flag para valores que você provavelmente não digita. Então source desse arquivo. (Ou apenas coloque o acima em seu .bashrc .)

O comando trap command1 debug faz com que a função command1 seja chamada sempre que você digitar um comando. A função command1 define o sinalizador command_flag para indicar que houve um comando. (A função command1 não é chamada quando você aperta Enter .)

PROMPT_COMMAND=command2 faz com que a função command2 seja chamada sempre que o shell estiver prestes a emitir um prompt PS1 . A função command2 verifica o sinalizador command_flag para ver se você digitou um comando ou apenas Enter . Se você digitou um comando, command_flag será definido e command2 escreverá uma linha em branco na tela. (Se você descobrir como criar um espaço vertical que seja uma fração de uma linha, altere o comando echo .) Se você acabou de pressionar Enter , command_flag não será definido. Em seguida, limpe o sinalizador para que o próximo prompt seja feito corretamente.

Observe que a função command1 é chamada quando o shell executa a função command2 ; portanto, command1 precisa torná-lo um caso especial (não conta como um comando).

    
por 22.04.2015 / 06:46