Como posso prefixar um caractere para cada saída de um comando?

1

Estou executando comandos que desejo agrupá-los especificamente por cada comando conforme mostrado no exemplo abaixo. Tentei imprimir com echo -e '| $line' , mas isso afeta apenas os comandos que geram o texto contido no arquivo.

Antecedentes

Originalmente, vi um vídeo que mostrava comandos de terminal que eram um pouco agrupados usando o '|' assim como a amostra abaixo. Estou tentando personalizar ou fazer uma função para meus arquivos .bashrc / .bash_profile para que todas as saídas tenham um '|' caractere no início de cada linha da saída.

A discussão também é encontrada aqui . Então, provavelmente eu vou fazer uma função para o STDERR e STDOUT (assim como mencionado aqui ).

Exemplo

+>system:~/sample
| No command 'sample' found, did you mean:
|  Command 'yample' from package 'yample' (universe)
|  Command 'ample' from package 'ample' (universe)
| sample: command not found
+>system:~/sudo apt-get update 
| [sudo] password for system: 
| Ign http://dl.google.com stable InRelease
| Hit http://dl.google.com stable Release.gpg                                    
| Ign http://security.ubuntu.com trusty-security InRelease                       
| yadda yadda ...
+>system:~/
    
por erickromero4Dr 28.04.2015 / 20:40

1 resposta

1

Você pode tentar passar por um comando sed que substitui o início da linha ( ^ ) pelo prefixo desejado ( | ), por exemplo:

some_command | sed 's/^/| /'

Isso funcionará para comandos mais simples, mas falhará à medida que aplicações mais complexas posicionarem o cursor de maneiras não triviais, e também retardará a saída de vários comandos (desde que eles mudem do buffer de linha para um buffer muito maior, saída padrão não é um terminal).

Eu geralmente recomendo abandonar essa abordagem e, em vez disso, configurar um prompt de shell que se destaque (usa negrito, itálico, cor, cor de fundo, caracteres Unicode especiais, o que ocorrer com você).

    
por 28.04.2015 / 20:55