Wie können Sie Ihr Terminal dazu bringen, einen Ton abzuspielen oder eine Benachrichtigung anzubieten, wenn es seinen Befehl ausgeführt hat? [Duplikat]

8

Ich mache von Zeit zu Zeit sudo apt-get update und finde es frustrierend zu sehen, wann es erledigt ist. Gibt es trotzdem eine Möglichkeit, ein Benachrichtigungs-Popup anzubieten oder einen Sound abzuspielen, wenn die Ausführung abgeschlossen ist, damit ich mit meiner Arbeit fortfahren kann?

    
Akiva 21.04.2015, 05:50

5 Antworten

2

Ich habe ein kleines Skript geschrieben, um es zu machen. Das Skript befindet sich in github .

Hier ist die Installationsanleitung:

Installation

Herunterladen oder einfach das Repo klonen

 $ git clone [email protected]:c0rp-aubakirov/notify_after_command_executed.git

Fügen Sie Ihrem postexec_notify nun die Beschaffung des Skripts .bashrc hinzu.

Hier ist git clone Installationsbeispiel:

 $ cd ~
 $ git clone [email protected]:c0rp-aubakirov/notify_after_command_executed.git
 $ cd ~/notify_after_command_executed
 $ echo "source $(pwd)/postexec_notify" >> ~/.bashrc

Starten Sie jetzt Ihr Terminal neu. Nach dem Neustart sollten Sie diese Meldungen sehen:

preexec.sh is not exist
Trying to download it from github

Versuchen Sie nun zu testen, ob eine Benachrichtigung angezeigt wird:

$ sleep 6

Bitte lassen Sie mich wissen, wenn etwas unklar ist oder Sie Probleme haben.

    
c0rp 21.04.2015, 23:19
16

Ton, mit dem ich dir nicht helfen kann. Wenn Sie jedoch etwas wie

anhängen
  && notify-send "Task complete."

Nach dem Befehl sollte in der oberen rechten Ecke eine Benachrichtigung angezeigt werden. Wenn das erforderliche Paket nicht standardmäßig installiert ist, sollte es von sudo apt-get install libnotify-bin für Sie installiert werden. && führt einen zweiten Befehl aus, wenn der erste Befehl erfolgreich abgeschlossen wurde.

    
Marc 21.04.2015 06:07
7

Sie möchten sudo apt-get update; alert . Was folgt, ist Erklärung und Begründung.

  • Vom Terminal aus können Sie viele Befehle auflisten, die nacheinander ausgeführt werden sollen. Was Sie also wollen, ist erstens der Befehl, der lange dauert, und zweitens einen Benachrichtigungsbefehl.
  • Um Befehle nacheinander auszuführen, trennen Sie sie entweder mit && oder ; . Diese haben zwei unterschiedliche Bedeutungen: command-a && command-b bedeutet, dass Befehl-a zuerst ausgeführt wird, und , falls er erfolgreich war , wird Befehl-b ausgeführt. command-a; command-b bedeutet, dass Befehl-a zuerst ausgeführt wird und dann Befehl-b ausgeführt wird, , ob Befehl-a erfolgreich war oder nicht. Möglicherweise möchten Sie das Semikolon: Sie möchten benachrichtigt werden, wenn das Update oder Upgrade nicht mehr ausgeführt wird, ob es erfolgreich beendet wurde oder nicht.
  • Andere Antworter haben Ihnen Vorschläge zu Audio- und Bildschirmwarnungen gegeben. Meine eigene Präferenz ist notify-send , die zwei Parameter benötigt: einen Titel und einen Inhalt: sudo apt-get update; notify-send update finished (wenn einer der Parameter Leerzeichen enthält, setzen Sie diese in Anführungszeichen).
  • Viel schneller und einfacher einzugeben als notify-send title content ist alert . Dieser Alias ist standardmäßig in mindestens einigen Ubuntu-Versionen in bash integriert und kann leicht hinzugefügt werden, wenn er in Ihrer fehlt (verwenden Sie type alert , um zu prüfen, ob er vorhanden ist). Sie sollten die Antwort erhalten,

    alert is aliased to 'notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e 's/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//')"'
    

    Dies bedeutet, dass der letzte Befehl einfach herausgezogen und an notify-send gesendet wird. Das zugehörige Symbol ist ein Abbild eines Terminals (für einen erfolgreichen Befehl) oder ein Fehlerbild (für einen fehlgeschlagenen Befehl). .

    Das Leben ist jetzt noch einfacher geworden: command; alert lässt sich sehr schnell und einfach eingeben. Es wird eine Warnung ausgegeben, ob der Befehl erfolgreich war oder nicht, und die Warnung enthält eine Angabe, ob der Befehl erfolgreich war oder nicht.

Übrigens hat es mich gelegentlich geärgert, dass ich die Ausgabe nicht an notify-send weiterleiten kann. Deshalb habe ich eine kleine Funktion geschrieben, die das für mich erledigt:

notify () 
{ 
    while read input; do
        notify-send -i $(ls /usr/share/icons/gnome/32x32/emotes | sed 's/\(.*\)\..*//' | shuf -n1) "message" "$input";
    done
}

Dadurch kann ich command | notify eingeben. In diesem Fall ist das Symbol jedoch zufällig. Außerdem erhalten Sie für jede Ausgabezeile eine Benachrichtigung. Dies ist wahrscheinlich keine gute Wahl für apt-get update .

    
TRiG 21.04.2015 12:07
2

Für aplaykompatible Dateien

Um einen benutzerdefinierten Sound über die Lautsprecher wiederzugeben, können Sie

ausführen
aplay <path_to_sound_file>

* < path_to_sound_file > = Pfad zur Sounddatei

, um die ausgewählte Sounddatei abzuspielen; Dann können Sie playsound -Alias zu ~/.bashrc hinzufügen:

alias playsound='aplay <path_to_sound_file>'

* < path_to_sound_file > = Pfad zur Sounddatei

Auf diese Weise können Sie sudo apt-get update && playsound ausführen, um den ausgewählten Sound abzuspielen, wenn sudo apt-get update beendet ist.

Für nicht wiedergegebene Dateien (z. B. .ogg-Dateien) (Systemtöne)

Um einen benutzerdefinierten Sound über die Lautsprecher wiederzugeben, können Sie

ausführen
pacmd list-sinks | grep -E 'index|device.product.name'

, um alle verfügbaren Sink-Indizes von pulseaudio mit ihrem entsprechenden Gerät aufzulisten; dann können Sie

ausführen
pacmd play-file /usr/share/sounds/ubuntu/stereo/bell.ogg <sink_index> > /dev/null

* < sink_index > = pulseaudio sinks Index

um /usr/share/sounds/ubuntu/stereo/bell.ogg durch die ausgewählte Senke zu spielen. (Natürlich können Sie jeden gewünschten Sound abspielen); Dann können Sie playsound -Alias zu ~/.bashrc hinzufügen:

alias playsound='pacmd play-file /usr/share/sounds/ubuntu/stereo/bell.ogg <sink_index> > /dev/null'

* < sink_index > = pulseaudio sinks Index

Auf diese Weise können Sie sudo apt-get update && playsound ausführen, um den ausgewählten Sound abzuspielen, wenn sudo apt-get update beendet ist.

    
kos 21.04.2015 09:48
1

Sie können etwas hinzufügen wie

&& echo -e "
sudo apt-get update && sudo apt-get -y upgrade && echo -e "%pre%7"
7"

bis zum Ende Ihrer Zeile. Versuchen Sie es mit

%pre%

Hoffe, das hilft

    
Terrance 21.04.2015 06:12