@Gerry_Ghetto
Ich habe letztens gelesen, daß systemd ja der Emacs der Init-Systeme ist <g>
Eigentlich eine ziemliche Beleidigung für alle Emacsianer...
Außerdem fehlt systemd (noch) der Psycho-Therapeut ... aber ich bin mir sicher das Redhat/Poettering an sowas arbeiten. ;-) //Edit: systemd --dont-cry-on-me z.B.
@OnTopic : Ich hab noch was:
Ein Konzept was ich auch gerne nutze für wiederkehrende Aufgaben ("Tasks"), die ggf. in einer bestimmten Reihenfolge ablaufen müssen sind:
Makefiles
Sehr viele Programmiersprachen/Toolchains bringen diese Taskverarbeitung mit, i.d.R. um Abläufe der Programmerstellung, Kompilieren, Doku erstellen, Testen usw. zentral zu bündeln.
Ein prominentes Beispiel ist GNU make, viele kennen das um ein C/C++ Programm zu kompilieren.
Über diese Taskfiles('Makefile') lassen sich aber auch andere "Aufgaben" erledigen. Z.B. das "Aufräumen" im $HOME (Löschen von alten Dateien). Oder ein Task für den Jahreswechsel, um für das "neue" Jahr bestimmte Strukturen anzulegen oder alte zu archivieren.
//Edit: Oder um strukturiert ein neues Programmier-Projekt-Verzeichnis anzulegen, z.B. inklusive schon benannter Datei-Namen, Klassen-Namen, ggf. weiterer Hilfdateien und zum Schluß startet es den $EDITOR im neuen Projekt.
Das läßt sich natürlich alles auch über eigene Skripts realisieren, der Vorteil von make(oder anderen Tools) als "Taskverarbeitung" ist oftmals, daß Tasks gruppiert werden können. Oder ein Konzept bieten das Task B erst Task A benötigt. Und das man Dinge/Aufgaben "zentral" ablegen/organisieren kann. Sehr viele Implementationen dieser "Mach_was mit einer Task-Datei" Konzepte bringen auch dann auch sehr viele nützliche Funktionalität rund um dieses Konzept mit, manche eine eigene "Sprache"(DSL) für Hilfsmittel wie Ein-/Ausgabe oder Optionen für Tasls usw.
Ein einfaches Beispiel mit make und z.B. /tmp/Makefile wäre:
help:
@echo "Tasks"
@echo "----------------"
@echo "hello -> Say hello"
@echo "create -> Create a directory"
@echo "clean -> Remove a directory, require create tasks"
hello:
@echo "Hello, World"
create:
mkdir -p ./test_test
clean: create
rmdir ./test_test
Wichtig: Für die Einrückungen müssen TAB-Stops verwendet werden bei GNU make!
Ein einfaches
make
im Ordner mit dem Makefile arbeitet den ersten Task("help) ab. Die anderen Tasks werden mit dem Namen gestartet, z.B.
make hello
Wenn für die jeweilige Shell die Autovervollständigung installiert ist kann auf die einzelnen Tasks auch per TAB-Vervollständigung zugegriffen werden.
Ich denke, das grobe Konzept ist klar. GNU make kennt leider in der aktuellen Version 4.4.1 keinen Parameter um alle verfügbaren Tasks aufzulisten, spätere Versionen sollen --print-targets kennen. Deshalb der help-Tasks als erstes. Befehle mit vorangestelltem @ werden in der Ausgabe nicht nochmal angezeigt.
Ein IMHO gutes Tutorial zum GNU make gibt es hier:
https://makefiletutorial.com/#top
GNU make ist nun nicht hauptsächlich als Task-basierter Batchfile Arbeiter gedacht, kann aber wenn man sich mal darauf einläßt für sehr vieles genutzt werden.
Andere "Lieblings-Programmiersprachen" bringen oftmals ihr "eigenes" make/Makefile Konzept mit.
Für Ruby wäre das z.B. rake mit Rakefile
rake -T
zeigt z.B alle Tasks im aktuellen Rakefile an.
Mein Favorit für Ruby ist allerdings thor mit Thorfile - einfach ob der immensen Möglichkeiten die thor bietet. Ich kann es für "einfache" Dinge (auch Shell-Befehle) nutzen oder alles, was mir Ruby als Programmiersprache bietet. Das Ruby on Rails Befehlskonzept (rails --help) ist z.B. mittels thor realisiert worden.
https://github.com/rails/thor/wiki
Ich habe z.B. mein Backup-Konzept mit thor gestrickt.
Kurz: Warum nicht für strukturierte, wiederkehrende -oft sehr einfache - Aufgaben das Konzept der (Lieblings) make/Makefile Implementation nutzen?