Come posso suonare la campana audio all'interno di uno script bash in esecuzione sotto lo schermo di GNU?


19

In una finestra del terminale konsole al di fuori dello schermo che esegue una shell bash con TERM impostato su konsole-256color se digito:

echo -n $ '\ a' o
echo -n $ '\ eg' o
./ringbell dove si trovano i contenuti di ./ringbell

#! / Bin / bash
echo -n $ '\ eg'; echo -n $ '\ a'

Tutti provocano lo spegnimento della campana audio configurata. Se entro in una sessione dello schermo (il mio .screenrc imposta anche il termine su konsole-256color), solo il secondo dei 3 comandi precedenti (echo -n $ '\ eg') fa sì che la campana audio venga ascoltata. Devo modificare lo script o si tratta di un problema con lo schermo?

La versione di Ubuntu del pacchetto schermo che ho è 4.1.0 ~ 20120320gitdb59704-9.


1
Fai riferimento anche a questa domanda , anche se in realtà preferisco la risposta di Keith.
Franklin Yu,

Risposte:


25

Dalla memoria, Ctrl-G è il personaggio della campana, quindi penso che sia per questo che il secondo ha funzionato. Ma lo schermo può essere schizzinoso su quali caratteri accetta poiché prende Ctrl-A come codice di comando.

Prova questo

#!/bin/sh
# Ring the terminal bell
# echo "\a" # does not work in some shells
tput bel

L'ho trovato su rosettacode , speriamo che ti dia alcune opzioni


Questo non funziona né all'interno né all'esterno dello schermo. Se uso infocmp mi mostra che la funzionalità bel non è definita per TERM konsole-256color, quindi questo ha senso. Anche se la voce terminfo dello schermo definisce bel a tput -T anche lo schermo bel non funziona.
Bob,

1
Dopo ulteriori test sembra che lo schermo tput -T funzioni dopo tutto. Il mio test iniziale non è andato a buon fine perché stavo eseguendo uno schermo all'interno di uno schermo e lo schermo esterno non era inattivo. Grazie per il suggerimento.
Bob,

0

Soluzione migliore: printf '\a'

Questo perché la printfmaggior parte delle shell integrate funziona bene e esiste anche una versione eseguibile equivalente di printfinstallata con sistemi Linux / Mac.

Altre opzioni: Se hai maledizioni installate, puoi anche usare: tput bel Se usi una versione recente di bash, puoi usare:echo -n '\a'

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.