Come creare una finestra di messaggio dalla riga di comando?


65

Caselle di messaggi della GUI o caselle di messaggi visualizzate all'interno del terminale.

Sarebbe anche interessante poter ottenere un semplice input dall'utente, ad es. Sì / no o pulsanti di opzione.


8
Cosa intendi con "finestra di messaggio"? Una finestra di avviso grafica, una finestra di messaggio popup? Qualcos'altro?
polimero

Risposte:


110

Per una "casella attorno a un messaggio" standard, utilizzare boxes:

echo 'This is a test' | boxes

boxessarà simile a questo (il primo. Il secondo è un tipo personalizzato cowsay):

Schermata di una scatola di asterix e un cane di arte ASCII con un segno di testo


Se intendi una casella di avviso, utilizza notify-send:

notify-send 'title' 'message'

notify-send Somiglia a questo:

Messaggio pop-up che legge "Hello Ashframe ..."


È inoltre possibile utilizzare zenityper una finestra popup:

zenity --error --text="An error occurred\!" --title="Warning\!"

Zenity è più grafico e ha più opzioni, come far apparire la finestra come una domanda, usando:

zenity --question --text="Do you wish to continue/?"

o persino barre di avanzamento, usando:

find /usr | zenity --progress --pulsate --auto-close --auto-kill --text="Working..."

zenity Somiglia a questo:

finestre di dialogo di errore, domanda, informazioni e avvertenza con pulsanti


O utilizzare dialog, per una finestra di messaggio solo da riga di comando:

dialog --checklist "Choose OS:" 15 40 5 \
1 Linux off \
2 Solaris on \
3 'HP UX' off \
4 AIX off

dialog Somiglia a questo:

dialogo TUI con 4 opzioni


Un'altra opzione è whiptail:

whiptail --title "Example Dialog" --msgbox "This is an example of a message box. You must hit OK to continue." 8 78

whiptail Somiglia a questo:

pop-up box con coda a due pulsanti di testo


E se sei veramente pazzo, usa toilet:

toilet -F border -F gay "CRAZY"

toilet Somiglia a questo:

casella di testo colorata con la scritta "CRAZY"


3
Risposta davvero completa, è utile! Grazie!

Scrittura eccellente, @polym - Ho intenzione di innervosirmi zenityuna volta al mese nel reparto aggiornamento e aggiornamento ...
Frank Nocke,

27

xmessage

Questo è il nonno degli avvisi della GUI:

xmessage -center "Hello, World!"

Pura bontà retrò.

Scommetto anche che dovrebbe essere ampiamente disponibile sui sistemi X11.

Discussione SO: Come mostrare una finestra di messaggio della GUI da uno script bash in Linux? | Stack Overflow

Testato su Ubuntu 18.04.


Ha funzionato fuori dalla mia installazione Openbox. Grazie!
escluso il

xmessageè persino installato su Ubuntu Server per impostazione predefinita. Quindi posso usare ssh -Y <host> per accedere alla macchina mentre inoltro x connessioni e quindi eseguire some-command; xmessage "some-command is done"per visualizzare una notifica sul mio desktop al termine del comando di lunga durata.
Stephen Ostermiller

@StephenOstermiller sì, questo è un buon consiglio!
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

1
Ottimo comando. Per auto-cancellare il messaggio dopo pochi secondi: xmessage -timeout 10 "Goodbye in 10s!".
Annunciato l'

8

E poi solo perché @ polym è completamente al di sopra della risposta più alta del classico messaggio:

write <username> [<terminal>]- invia un messaggio a un altro utente. O interattivamente o come parte di una pipe conecho "message" | write username

Scrivi


E il complemento da scrivere, wallper inviare un messaggio a tutti gli utenti

parete


1

Se sei disposto a reindirizzare il testo a un wrapper Python, puoi utilizzare terminaltables:

pip3 install colorclass
pip3 install terminaltables

Quindi in GitHub Repo , puoi usare uno degli esempi per scrivere un wrapper Python.

inserisci qui la descrizione dell'immagine

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.