Bash-Einzeiler

Ein paar Kleinigkeiten, die man immer mal so benötigt und für die es sich nicht lohnt, Scripte anzulesen. Zum Einstieg mal etwas ganz Simples:

Verzeichnisse nach Speicherbedarf sortieren

Man befindet sich irgendwo und fragt sich, in welchem der Unterverzeichnisse wohl am meisten Krempel herumliegt.


du -s * | sort -n

Dateien sichern, die sich seit gestern geändert haben

Backup des eigenen Homeverzeichnisses anlegen, aus Platzgründen aber nur das, was sich in den letzten 24 Stunden geändert hat.


find ~ -type f -mtime 0 | tar cvfz /tmp/my-incremental-backup.tar.gz -T -

Logfiles löschen, die älter als sieben Tage sind

Ein Prozess erzeugt täglich irgendwo Logfiles, die ab einem gewissen Zeitpunkt nicht mehr interessieren. Damit die Platte nicht vollläuft, soll gelegentlich per cronjob aufgeräumt werden. Experten bitte das -i herausnehmen, damit rm nicht mehr nachfragt.


find /das/verzeichnis/der/logfiles -type f -mtime +7 -exec rm -i "{}" ";"

Verzeichnisse finden, die kein Gruppen-Schreibrecht haben

Finde ab dem aktuellen Verzeichnis („.“) Dateisystemeinträge vom Typ „Verzeichnis“ („-type d“) die nicht („!“) das Schreibrecht für die Benutzergruppe („-perm /g=w“) gesetzt haben.


find . -type d ! -perm /g=w

Verzeichnisse finden, die kein Gruppen-Schreibrecht haben und dieses setzen

Finde ab dem aktuellen Verzeichnis („.“) Dateisystemeinträge vom Typ „Verzeichnis“ („-type d“) die nicht („!“) das Schreibrecht für die Benutzergruppe („-perm /g=w“) gesetzt haben, gebe die Treffer aus („-print“) und führe das Hinzufügen der Gruppenschreibrechte aus („-exec“).


find . -type d ! -perm /g=w -print -exec chmod g+w "{}" ";"

Regelmäßige Kleinigkeiten ohne Cronjob erledigen

Will man außerplanmäßig regelmäßige Aufgaben wiederholen und dafür nicht extra einen Cronjob anlegen, tut es auch meist ein Einzeiler.


while true; do make mirror; echo "sleeping..."; sleep 300; done

Hier rufe ich alle fünf Minuten (= 300 Sekunden) eine Synchronisations-Script auf, dass mir Inhalte der Platte eines Rechners auf die eines anderen Rechners spiegelt. Mit Strg+C bricht man den Einzeiler ab.

Am Rande bemerkt: Für Mini-Aktionen schreibe ich mir nicht immer spezielle Scripts, Kleinigkeiten packe ich gerne in ein Makefile. Im Make-Target „mirror“ wartet in diesem Beispiel der Aufruf von rsync mit all seinen Parametern, die ich mir nie auswendig merken kann möchte.

Fortsetzung folgt…

  1. Bisher keine Kommentare
  1. Bisher keine Trackbacks