Mecanismo do personagem BELL '\ a'?

1

Estou lendo um livro sobre programação shell e aprendendo que os comandos a seguir são equivalentes, que emitem bips no meu Mac, mas não fazem nenhum som no Ubuntu:

$ echo $'\a'

$ echo -e "\a"

$

no entanto, em ambos os casos, o terminal solicita uma linha em branco. Minhas perguntas são:

  1. O que é $'\a' aqui? Expansão de parâmetros, substituição de comandos ou outra coisa?
  2. Por que echo imprime linha vazia como se o parâmetro fosse indefinido, como por exemplo, no caso de

$ echo $NONSENSE , que solicita linha vazia? Obrigado!

    
por mzoz 22.08.2017 / 07:29

1 resposta

3

don't make any sound on Ubuntu:

talvez porque o seu emulador de terminal específico esteja configurado para evitar sons, ou porque o módulo do kernel pcspkr está descarregado, etc ... Você poderia usar outro emulador de terminal (por exemplo, o antigo xterm ) que deve emitir um bipe.

What's $'\a' here?

Leia o capítulo sobre expansão de shell do manual de Bash. É chamado de citações ANSI-C (conforme comentado por South Parker ).

Why echo prints empty line

o comando echo (leia mais echo (1) ... ) é frequentemente um bash shell embutido (sem -n ) imprime seus argumentos expandidos (aqui o caractere da campainha) seguido por uma nova linha. Mas o emulador de terminal não toca a campainha audível (e o caractere da campainha não é exibido , pois é um caractere de controle )

BTW, dizem que a Apple não gosta da licença GPLv3 +, então você pode atualizar seu bash para um recente versão (por exemplo, 4.4 em agosto de 2017) no seu computador Apple.

Você pode ler o tty desmistificado para uma abordagem histórica dos emuladores de terminal no Unix. Veja também pty (7) .

    
por 22.08.2017 / 08:44