Introduzione

wall è un'utilità della riga di comando che visualizza un messaggio sui terminali di tutti gli utenti che hanno effettuato l'accesso. I messaggi possono essere digitati sul terminale o all'interno di un file. wall sta per scrivi tutto, per inviare un messaggio solo a un utente specifico usa il comando write.

Di solito, gli amministratori di sistema inviano messaggi per annunciare la manutenzione e chiedono agli utenti di disconnettersi e chiudere tutti i programmi aperti. I messaggi vengono mostrati a tutti gli utenti registrati con un terminale aperto. Gli utenti che utilizzano un ambiente desktop grafico senza terminale aperto non vedranno i messaggi. Ogni utente può controllare l'accesso in scrittura al proprio terminale con l'utilità mesg. Quando il superutente invoca il comando wall, tutti gli utenti ricevono i messaggi, indipendentemente dalle loro impostazioni di mesg.

Trasmettere un messaggio

La sintassi del comando wall è la seguente:

wall [OPTIONS] [<FILE>|<MESSAGE>]

Se non viene specificato alcun file, wall legge il messaggio dallo standard input.

Il modo più semplice per trasmettere un messaggio è invocare il comando wall con il messaggio come argomento:

wall "The system will be restarted in 10 minutes."
Broadcast message from [email protected] (pts/0) (Tue Oct  6 19:31:26 2020):

The system will be restarted in 10 minutes.

Il messaggio verrà trasmesso a tutti gli utenti attualmente connessi.

Per vedere tutti gli utenti che hanno effettuato l'accesso, eseguire il comando w o who.

Per sopprimere il banner e mostrare solo il testo digitato agli utenti che hanno effettuato l'accesso, invoca il comando con l'opzione -n (--nobanner):

wall -n "The system will be restarted in 10 minutes."
The system will be restarted in 10 minutes.

Se vuoi scrivere messaggi su più righe, richiama il comando senza argomenti:

wall

Il comando wall aspetterà che tu inserisca il testo. Quando hai finito di digitare il messaggio, premi Ctrl+D per terminare il programma e trasmettere il messaggio.

Puoi anche usare il reindirizzamento here-string o reindirizzare l'output di un altro comando a wall. Ecco un esempio che mostra come utilizzare il comando echo per trasmettere messaggi su più righe:

echo "The system will be restarted in 10 minutes. \nPlease save your work."  | wall

Trasmettere un messaggio da un file

Se invii regolarmente gli stessi messaggi, puoi scrivere ciascuno di essi in un file, in modo da non dover digitare nuovamente lo stesso testo. wall legge dal file solo se invocato come root.

Per trasmettere il contenuto di un file, invoca il comando wall seguito dal nome del file:

The system will be restarted in 10 minutes.
message_file.txt
wall message_file.txt
Broadcast message from [email protected] (pts/0) (Tue Oct  6 19:31:26 2020):

The system will be restarted in 10 minutes.

Trasmettere un messaggio a un gruppo

Per inviare un messaggio solo ai membri di un determinato gruppo, eseguire il comando con l'opzione -g(--group), seguito dal nome del gruppo. Ad esempio, per scrivere solo sui terminali dei membri del gruppo devs, dovresti eseguire:

wall -g devs "The system will be restarted in 10 minutes."

Il gruppo può anche essere specificato dal suo GID (ID gruppo).

Conclusione

Il comando wall scrive un messaggio sui terminali di tutti gli utenti attualmente connessi.