Wie erstelle ich ein Meldungsfeld über die Befehlszeile?

65

Entweder GUI-Meldungsfelder oder Meldungsfelder, die im Terminal angezeigt werden.

Es wäre auch interessant, wenn der Benutzer einfach Eingaben zurückholen könnte, z. B. Ja / Nein oder Optionsfelder.

user62511
quelle
8
Was meinst du mit "Message Box"? Ein grafisches Benachrichtigungsfeld, ein Popup-Meldungsfeld? Etwas anderes?
Polym

Antworten:

110

Verwenden Sie für ein Standard "Feld um eine Nachricht" boxes:

echo 'This is a test' | boxes

boxeswird so aussehen (Erste. Zweite ist ein Brauch wie cowsay):

Screenshot eines Asterix-Kästchens und eines ASCII-art-Hundes mit einem Textzeichen


Wenn Sie ein Warnungsfeld meinen, verwenden Sie notify-send:

notify-send 'title' 'message'

notify-send sieht aus wie das:

Popup-Nachricht mit der Aufschrift "Hallo Ashframe ..."


Sie können auch zenityfür ein Popup-Fenster Folgendes verwenden:

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

Zenity ist grafischer und bietet mehr Optionen, z. B. das Anzeigen des Fensters als Frage. Verwenden Sie dazu:

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

oder sogar Fortschrittsbalken mit:

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

zenity sieht aus wie das:

Fehler-, Fragen-, Info- und Warndialogfelder mit Schaltflächen


Oder verwenden Sie dialogfür ein Befehlszeilen-Meldungsfeld:

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

dialog sieht aus wie das:

dialog TUI mit 4 Optionen


Eine andere Option ist whiptail:

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

whiptail sieht aus wie das:

Whiptail-Popup-Box mit zwei Textschaltflächen


Und wenn Sie wirklich verrückt sind, verwenden Sie toilet:

toilet -F border -F gay "CRAZY"

toilet sieht aus wie das:

bunte Textbox mit der Aufschrift "CRAZY"

Polym
quelle
3
Wirklich vollständige Antwort, es ist nützlich! Danke!
Ausgezeichnetes Schreiben, @polym - Ich werde zenityeinmal im Monat in der Update- und Upgrade-Abteilung auf eigene Faust nerven ...
Frank Nocke
27

xmessage

Dies ist der Urvater der GUI-Warnungen:

xmessage -center "Hello, World!"

Reine Retro-Güte.

Ich wette auch, dass es auf X11-Systemen allgemein verfügbar sein sollte.

SO-Thread: Wie zeige ich ein GUI-Meldungsfeld in einem Bash-Skript unter Linux an? | Paketüberfluss

Getestet in Ubuntu 18.04.

Ciro Santilli ist ein Schauspieler
quelle
Hat bei meiner Openbox-Installation sofort funktioniert. Vielen Dank!
Aexl
xmessageist standardmäßig sogar auf Ubuntu Server installiert. So kann ich mich ssh -Y <host> beim Weiterleiten von x-Verbindungen am Computer anmelden und dann some-command; xmessage "some-command is done"eine Benachrichtigung auf meinem Desktop anzeigen, wenn der Befehl für lange Ausführung abgeschlossen ist.
Stephen Ostermiller
@StephenOstermiller ja, das ist ein guter tipp!
Ciro Santilli
1
Cooler Befehl. Um auto-deaktivieren Sie die Nachricht nach einigen Sekunden: xmessage -timeout 10 "Goodbye in 10s!".
AlainD
8

Und dann, nur weil @polyms Antwort völlig übertrieben ist, hat er die klassische Botschaft verpasst:

write <username> [<terminal>]- Senden Sie eine Nachricht an einen anderen Benutzer. Entweder interaktiv oder als Teil einer Pipe mitecho "message" | write username

schreiben


Und die Ergänzung zu schreiben, wallum eine Nachricht an alle Benutzer zu senden

Wand

HBruijn
quelle
1

Wenn Sie bereit sind, den Text an einen Python-Wrapper weiterzuleiten, können Sie Folgendes verwenden terminaltables:

pip3 install colorclass
pip3 install terminaltables

Dann können Sie in GitHub Repo eines der Beispiele verwenden, um einen Python-Wrapper zu schreiben.

Bildbeschreibung hier eingeben

not2qubit
quelle