Meccanismo del carattere BELL ' \ a '?

Sto leggendo un libro sulla programmazione della shell e sto imparando che i seguenti comandi sono equivalenti, che emettono un segnale acustico sul mio Mac ma non emettono alcun suono su Ubuntu:

$ echo $"\a" $ echo -e "\a" $ 

tuttavia, in entrambi i casi, il terminale richiede una riga vuota. Le mie domande sono:

  1. Cosa “s $"\a" qui? Espansione dei parametri, sostituzione dei comandi o qualcosaltro?
  2. Perché echo stampa una riga vuota come se il parametro non fosse definito, come ad esempio, nel caso di

$ echo $NONSENSE quale richiede una riga vuota? Grazie!

Risposta

don “t fare qualsiasi suono su Ubuntu:

forse perché il tuo particolare emulatore di terminale è configurato per evitare i suoni o perché il modulo del kernel pcspkr è scaricato, ecc … Potresti usare un altro emulatore di terminale (ad esempio il vecchio xterm) che dovrebbe emettere un segnale acustico.

Cosa cè “$"\a" qui?

Leggi il capitolo sullespansione della shell del manuale di Bash. Si chiama ANSI-C quoting (come commentato da South Parker ).

Perché echo stampa una riga vuota

il comando echo (ulteriori informazioni echo (1) …) è spesso un shell bash integrato quindi (senza alcun -n) stampa i suoi argomenti espansi (qui il carattere campana) seguiti da una nuova riga. Ma lemulatore di terminale non fa suonare il campanello (e il carattere della campana non viene visualizzato, poiché è un carattere di controllo )

A proposito, si dice che Apple non gradisca la licenza GPLv3 +, quindi potresti aggiornare la tua bash a una versione recente (ad esempio 4.4 nellagosto 2017) sul tuo computer Apple.

Potresti leggere tty demistificato per un approccio storico agli emulatori di terminale su Unix. Vedi anche pty (7) .

Commenti

  • Questo ' è estremamente informativo, grazie enormi! 🙂
  • $'...' non è ' t ha chiamato " rimozione citazione ", ma il manuale bash ' t gli dà un nome. Questa forma di citazione è supportata almeno da ksh93 shell ma non da pdksh. Credo che ' sia unestensione della sintassi POSIX.
  • Kusalananda Penso che tu abbia ragione, la sintassi si chiama ASCI-C quoting: gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html
  • @SouthParker Ah, questo ' è il nome di esso. Grazie per avermi aiutato a ricordare!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *