Auf Eingaben im Terminal lauschen und bei bestimmten Wörtern Automatisierungsskript starten

adevnoob

Mitglied
Thread Starter
Dabei seit
09.11.2021
Beiträge
30
Reaktionspunkte
7
Hallo zusammen,

ich suche nach einer Möglichkeit, eine Automatisierung zu starten, wenn bestimmte Eingaben im Terminal gemacht werden:

- Beispiel:
$> git fetch --all

Bei git fetch soll bspw. eine Mitteilung auf dem Desktop erscheinen.

Lässt sich sowas überhaupt mit dem Automator bewerkstelligen?

Übersetzt hieße das ja:
Trigger: User gibt eine bestimmte Zeichenfolge im Terminal ein
Prozess: Zeige Mitteilung
 
Mach ein Script, das die Eingabe macht und dann die Mitteilung.
Oder ein Alias.
 
Also mit einem Skript lässt sich das nicht so umsetzen, vermute ich.

Ich brauche sowas wie einen Service, der die Eingaben ausliest, die ich bspw. im Terminal mache.
Und der soll dann auf bestimmte Eingaben reagieren und einen Automatisierungsprozess anstossen.
 
Du könntest die .zsh_history überwachen und sobald hier ein neue Zeile kommt diese auswerten und reagieren.
 
  • Gefällt mir
Reaktionen: efx
Also die Überwachung der zsh-history ist eine coole Idee. Mal gucken, ob der Automator auf solche Datei-Beobachtungs-Events reagiert.

Launchd kenne ich nicht. Werde ich mir direkt nach dem Absetzen dieses Posts anschauen :)

Danke für die ultraschnellen Anregungen!!
 
Du könntest die .zsh_history überwachen und sobald hier ein neue Zeile kommt diese auswerten und reagieren.

Ziemlich sicher, dass die BASH jedenfalls die histfile erst updated wenn die shell geschlossen wird. Das muss man sicher erst umkonfigulieren, falls man das wirklich so machen will.
 
  • Gefällt mir
Reaktionen: Schiffversenker
Also mit einem Skript lässt sich das nicht so umsetzen, vermute ich.

Ich brauche sowas wie einen Service, der die Eingaben ausliest, die ich bspw. im Terminal mache.
Und der soll dann auf bestimmte Eingaben reagieren und einen Automatisierungsprozess anstossen.

Das mit dem Script, besser mit Scripten, ist doch der einfachste Weg.

Wenn du also z.Bsp für 'git fetch --all' eine Aktion ausführen willst, dann kannst du das doch so realisieren, dass du ein script names "git" erstellst, dass in einem Verzeichnis ist, dass im PATH vor /usr/bin dran ist und in etwa so aussieht.

Code:
#!/bin/zsh

aktion()
{
do_something
}

if [ "$1" = "fetch" ] && [ "$2" = "--all" ]; then
  /usr/bin/git fetch -all
  aktion
else
  /usr/bin/git "$@"
fi

Wenn du mehrere git Aufrufe "abfangen" willst, kann es einfacher werden, das mit einer while Schleife zu machen wie z.Bsp

Code:
while [ "$#" -gt 0 ] ; do
  case "$1" in
    fetch) /usr/bin/git fetch -all
      [ "$2" = "--all" ] && aktion
      shift 2
      ;;
    push) /usr/bin/git push
      aktion2
      shift
      ;;
....
    *) /usr/bin/git "$@"
       exit
       ;;
  esac
done
 
  • Gefällt mir
Reaktionen: tigion
Zurück
Oben Unten