Il badge icona del dock del terminale indica il numero di campane (Control-G, ASCII BEL) scritte sui terminali in background. Indica il numero di campane "non lette":
Se la barra delle schede è visibile, vedrai un'icona corrispondente "campana" nella scheda di ciascun terminale con le campane "non lette":
Quando si attiva uno di questi terminali, l'indicatore della campana viene rimosso dalla scheda e il conteggio totale visualizzato nel badge dell'icona del dock diminuirà. Il badge viene rimosso quando il conteggio raggiunge lo zero. (La barra delle schede non deve essere visibile per questo comportamento. È necessaria solo se si desidera vedere l'indicatore della campana per vedere quali terminali hanno campane "non lette".)
C'è anche un indicatore di "testo non letto" visualizzato in schede, sotto forma di ellissi ("..."):
Viene visualizzato quando qualsiasi elemento viene scritto su un terminale in background e, come l'indicatore a campana, cancellato quando si attiva la finestra / scheda del terminale. Un'ellissi "testo non letto" viene visualizzata anche sulle finestre di terminale ridotte al minimo nel Dock:
Ciascuno di questi può essere sufficiente per il tuo caso, a seconda delle tue esigenze specifiche.
Come hai immaginato, il badge (e gli indicatori nella scheda) hanno lo scopo di darti un mezzo per monitorare cosa succede nei terminali in background senza doverli attivare per guardare il contenuto del terminale e le campane hanno un alta priorità visiva nell'interfaccia utente in modo che gli utenti possano utilizzare gli indicatori a campana per notare eventi importanti.
È possibile utilizzare l'indicatore campanello organizzando la scrittura di caratteri ASCII BEL (Control-G) sul terminale quando si verifica qualcosa di interessante. Puoi usare tee
per indirizzare l'output tail
sia al terminale che a qualche altro programma o comando di shell in modo da poter vedere anche i contenuti. Potresti anche essere in grado di utilizzare i comandi screen
o expect
, che possono visualizzare contenuti specifici per attivare un'azione.
Questo semplice esempio emetterà un bip ogni volta che una nuova riga viene scritta in system.log:
tail -F /var/log/system.log | tee >(while read; do printf '\a'; done)
Ovviamente, può suonare molto, anche per le linee inizialmente visualizzate da tail
(di default, dieci). Questa versione salta le righe iniziali ed evita anche i bip più spesso di una volta ogni tre secondi:
# Notify the user when there's activity on stdin.
function activity_notification
{
# Skip the first ten lines (the default for tail)
for ((skip = 0; skip < 10; ++skip)) do read; done;
# Beep when there are new lines.
while read; do
printf '\a';
# Throttle: Ignore activity for the next three seconds. If the
# data contains a BEL (Control-G), stop waiting.
read -d $'\a' -t 3;
done
}
tail -F /var/log/system.log | tee >(activity_notification)
Dopo aver letto una riga ed emesso un BEL, indica read
di leggere tutti gli input fino a quando il carattere specificato non viene letto o trascorrono tre secondi. È possibile impostare il delimitatore su ASCII NUL ( read -d ''
con una stringa vuota causerà l'utilizzo di NUL), il che è improbabile (impossibile?) Da mostrare nel file di log di sistema, ma ho scelto di usare BEL come delimitatore che se il file contiene BEL, produrranno anche un segnale acustico.