Nützliche Sammlung von Befehlen für Linux
Wir haben eine kleine Sammlung von Befehlen für die gängigen Linux Distribution (Debian, Ubuntu etc.) zusammengestellt. Die meiste Arbeit geht verloren, wenn jeder Schritt manuell ausgeführt werden muss. Alle Dateien eines Ordner, mit mehr als 5000 Dateien, umzubenennen, kann viel Zeit in Anspruch nehmen. Vielleicht sind die passenden Befehle in unserer Sammlung 😉
Dateien suchen und auflisten, die älter als 2 Tage sind:
1 |
find . -type f -mtime +2 -printf "%f %Tc\\n" |
Dateien löschen, die älter als 2 Tage sind:
1 |
find . -type f -mtime +2 -exec rm -f {} \; |
Dateien mit GZIP packen, die älter als 2 Tage sind und der Dateiname (Dateiendung) nicht mit .gz endet:
1 |
find . -type f -mtime +2 ! -name "*.gz" -exec gzip {} \; |
Dateien mit GZIP packen, die im Unterverzeichnis ordner*/* liegen, *2013* im Namen und nicht mit der Dateiendung *.gz endet:
1 |
find ordner*/* -type f -name "*2013*" -a ! -name "*.gz" -exec gzip {} \; |
Dateien suchen und auflisten, die größer als 1MB sind:
1 |
find . -type f –size +1024k |
Logs mit GZIP packen, die älter als 2 Tage sind und noch nicht gepackt wurden:
1 |
find /opt/fast/datasearch/var/log/querylogs.backup -type f -mtime +2 ! -name "*.gz" -exec gzip {} \; |
Inhalt eines Ordners inkl. mit den Unterverzeichnissen löschen, der zu groß für ein rm -rf ist:
1 |
find /opt/megaverzeichnis/ -mindepth 1 -maxdepth 1 -exec rm -rf {} \; |
Dateien durchsuchen, auch wenn der Pfad oder der Dateiname nicht bekannt ist:
1 |
find /verzeichnis -exec grep -s -l "sucheintrag" {} \; |
Dateien nach Inhalt durchsuchen und löschen, wenn keine Übereinstimmung:
1 |
find . -exec grep -q "spamdomain.net" '{}' \; -exec rm {} \; |
Dieser Befehl ist nützlich, um Mailqueues zu leeren.
Alle Sonderzeichen in Dateien anzeigen:
1 |
cat -A datei | less |
Alle Dateinamen im aktuellen Verzeichnis in Kleinbuchstaben umwandeln:
1 |
for name in * ; do mv -i $name `echo $name | tr [A-ZAeOeUe] [a-zAeOeUe]` ; done |
Erweiterung einer Datei ändern:
1 |
for a in *.TXT ; do echo mv -i $a `basename $a .TXT`.txt ; done |
In unserem Beispiel wird die Dateiendung .TXT in .txt geändert.
Kommandozeile verschleiern:
1 |
doexec AktuellesProgramm NeuesProgramm Parameter |
DoExec verhindert die Anzeige des ausgeführten Programms in der Prozessliste.
SSH-Verbindung tunneln:
1 |
ssh -g -L3389:192.168.100.20:80 deinserver.de |
Bootsektor einer Festplatte überschreiben und durch das richtige Laufwerk ersetzen:
1 2 |
cat /etc/grub.conf dd if=/dev/zero of=/dev/cciss/c1d0 bs=512 count=1 |
Datei mit einer bestimmten Größe erstellen:
1 |
dd if=/dev/zero of=/home/dateiname bs=1024k count=20 |
In unserem Beispiel wird im Home-Verzeichnis eine 20MB große Datei mit dem Dateiname dateiname
erstellt.
Eine Zeile mit awk parsen und ausgeben:
1 |
cat datei.txt | awk -F" " '{ print $1 }' |
In unserem Beispiel ist das Leerzeichen das Feldseparator. Das erste Feld wird ausgegeben.
.patch-File erstellen:
1 |
diff -aur file-alt.c file-neu.c |
Kompletten DNS-Cache leeren:
1 |
rndc flush |
DNS-Cache für eine bestimmte Domain leeren:
1 |
rndc flush domain1.tld domain2.tld |
Reverse-Zonefile des DNS-Servers neu laden:
1 |
rndc reload 192.168.0.in-addr.arpa. |
Alle Dateien und Verzeichnisse auflisten, die mit bestimmten Dateinamen anfangen oder aufhören:
1 |
ls 2013* |
In unserem Beispiel werden alle Dateien nd Verzeichnisse aufgelistet, die mit dem Dateinamen 2013 beginnen. Die Operation *
steht für Match-Self und kann beliebig verwendet werden. Wenn sich der gesuchte Begriff nicht vor oder am Ende des Dateinamens befindet, kann ls *2013*
verwendet werden.
Dateien und Verzeichnisse ohne Unterverzeichnisse auflisten:
1 |
ls -d |
Programme oder Script immer mit einem yes/y bestätigen:
1 |
yes | unzip archiv.zip |
Einige Programme verlangen eine Bestätigung der Eingabe (z.B. yes / no). Durch eine Pipe und YES, ein vorinstalliertes Programm von Linux, können alle Schritte eines Programms oder Script bestätigt werden. Bei Konfigurationsschritten werden die Standardeinstellungen verwendet.
Kommandostack (History) der Bash löschen:
1 |
export HISTSIZE=0 |
Eigene IP-Adresse herausfinden (IPv4 und IPv6):
1 2 |
env LC_ALL=C /sbin/ifconfig eth0 | sed -n '/inet addr:/s/ [^r]*..//gp' env LC_ALL=C /sbin/ifconfig eth0 | sed -n '/inet6 addr:/s/ [^r]*..//gp' |
Dieser Befehl ist nützlich bei Einwahlverbindungen.