O que esse uso do comando echo shell faz?

0

Eu encontrei echo -n $'\e]0;Hello World\a' em um script de shell que faz parte de uma base de código na qual estou trabalhando. O que exatamente isso faz? Certamente não faz eco de nada visível.

Note que estou usando o Ubuntu 12.04.5.

    
por orokusaki 25.11.2014 / 20:11

3 respostas

2
  • -n impede a repetição de uma nova linha no final.
  • $' é um comando Bash que faz com que caracteres com escape de barra invertida na cadeia sejam substituídos conforme especificado pelo padrão ANSI C. Mais informações
  • \e = ESCape.
  • \e]0; é um comando para definir o título da janela , neste caso, para configurá-lo para "Hello World"

Mais informações sobre * nix Echo aqui

    
por 25.11.2014 / 20:33
3

No XTerm (ou qualquer coisa que o emule), ele define o título da janela como "Hello World". \e] é o código de escape ASNI para um "comando do sistema operacional" (OSC), que basicamente significa que cabe ao sistema operacional definir o que significa; no XTerm, <OSC>0;text<bel> é usado para definir o título da janela.

Veja wikipedia e < a href="http://invisible-island.net/xterm/ctlseqs/ctlseqs.html"> Lista de seqüências XTerm de Edward Moy (procure a seção "Controles do Sistema Operacional").

    
por 25.11.2014 / 20:58
0

\e]0; não é um código ANSI válido, para obter "exibição normal", ele precisa ser \e[0m . Conforme indicado pelo texto no link de Ƭᴇcʜιᴇ007, você pode combinar um número deles na mesma sequência:

$ echo -en "\e[0;31;7m TEST \e[0m"  
 TEST $  _

Que TEST será vermelho inverso
Observe que -e é necessário para a análise de sequência de escape. -n faz echo não imprimir um (CR +) LF no final.

Melhor ainda é usar códigos terminfo usando o comando tput - man 5 terminfo é técnico, mas provavelmente bastante completo. Por que tput? Como os terminais nem sempre são ANSI, o terminfo tenta "consertar" isso fornecendo uma única interface para o maior número possível de terminais.

... então echo "$(tput sgr0)" - é o mesmo que echo -e "\e[0m" - se você tiver um terminal ANSI.

    
por 25.11.2014 / 20:58