Comment créer une boîte de message à partir de la ligne de commande?


65

Les boîtes de message de l'interface graphique ou les boîtes de message qui apparaissent à l'intérieur du terminal.

Il serait également intéressant de pouvoir obtenir une simple entrée de la part de l'utilisateur, par exemple des boutons oui / non ou des boutons radio.


8
Qu'entendez-vous par "boîte de message"? Une boîte d'alerte graphique, une boîte de message contextuelle? Autre chose?
polym

Réponses:


110

Pour un "cadre autour d'un message" standard, utilisez boxes:

echo 'This is a test' | boxes

boxesressemblera à ceci (Premier. Le second est une coutume comme cowsay):

Capture d'écran d'un astérisque et d'un chien d'art ASCII tenant une pancarte de texte


Si vous voulez parler d'une boîte d'alerte, utilisez notify-send:

notify-send 'title' 'message'

notify-send ressemble à ça:

Un message contextuel indiquant "Hello Ashframe ..."


Vous pouvez également utiliser zenitypour une fenêtre contextuelle:

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

Zenity est plus graphique et a plus d'options, comme avoir la fenêtre sous forme de question, en utilisant:

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

ou même des barres de progression, en utilisant:

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

zenity ressemble à ça:

boîtes de dialogue d'erreur, de question, d'information et d'avertissement avec des boutons


Ou utilisez dialog, pour une boîte de message en ligne de commande uniquement:

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

dialog ressemble à ça:

dialogue TUI avec 4 options


Une autre option est whiptail:

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

whiptail ressemble à ça:

boîte de courrier électronique whiptail avec deux boutons de texte


Et si vous êtes vraiment fou, utilisez toilet:

toilet -F border -F gay "CRAZY"

toilet ressemble à ça:

Boîte de texte colorée "CRAZY"


3
Réponse vraiment complète, c'est utile! Je vous remercie!

Excellente rédaction, @polym - Je vais zenityavoir tendance à m'énerver une fois par mois dans le service de mise à jour et mise à niveau ...
Frank Nocke

27

xmessage

Voici le grand-père des alertes d'interface graphique:

xmessage -center "Hello, World!"

Bonté rétro pure.

Je parie également qu'il devrait être largement disponible sur les systèmes X11.

SO thread: Comment afficher une boîte de message d'interface graphique à partir d'un script bash sous Linux? | Débordement de pile

Testé dans Ubuntu 18.04.


Travaillé hors de la boîte sur mon installation Openbox. Merci!
aexl

xmessageest même installé sur le serveur Ubuntu par défaut. Je peux donc utiliser ssh -Y <host> pour me connecter à la machine lors du transfert de x connexions, puis exécuter some-command; xmessage "some-command is done"pour afficher une notification sur mon bureau lorsque la commande d'exécution longue est terminée.
Stephen Ostermiller

@StephenOstermiller oui, c'est un bon conseil!
Ciro Santilli

1
Commande cool. Pour l' auto-effacer le message après quelques secondes: xmessage -timeout 10 "Goodbye in 10s!".
AlainD

8

Et puis juste parce que @ polym a complètement dépassé la réponse, il a manqué la messagerie classique:

write <username> [<terminal>]- envoyer un message à un autre utilisateur. De manière interactive ou dans le cadre d’un tuyau avececho "message" | write username

écrire


Et le complément à écrire, wallpour envoyer un message à tous les utilisateurs

mur


1

Si vous souhaitez diriger le texte vers un wrapper Python, vous pouvez utiliser terminaltables:

pip3 install colorclass
pip3 install terminaltables

Ensuite, dans le référentiel GitHub , vous pouvez utiliser l'un des exemples pour écrire un wrapper Python.

entrez la description de l'image ici

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.