Tutorial: Die Unix-Shell (Arbeit mit Dateien und Verzeichnissen)

Shellbefehle für alle Tage...

Werbung
Über die Kommandozeile (Shell) können Sie schnell und bequem Befehle an das Betriebssystem Ihres Computers oder Servers senden. Wir zeigen Ihnen viele praktische Tipps, wie Sie sich als Admin die Arbeit leicht machen können.
Über die Kommandozeile (Shell) können Sie schnell und bequem Befehle an das Betriebssystem Ihres Computers oder Servers senden. Wir zeigen Ihnen viele praktische Tipps, wie Sie sich als Admin die Arbeit leicht machen können.

Ganz gleich ob Systemadministrator oder Gelegenheits-User: Die Arbeit mit Dateien und Verzeichnissen gehört zu den grundlegendsten Dingen, die man auf Kommandozeilen-Ebene beherrschen sollte.

Im Folgenden haben wir die am häufigsten verwendeten Befehle zusammengestellt und kurz erklärt.

Dateien auflisten, suchen und sortieren

Alle Dateien und Verzeichnisse auflisten (inklusive versteckter Dateien; findet also beispielsweise auch .htaccess und andere Systemdateien, die mit einem Punkt beginnen):

ls -la

Dasselbe, aber in grün… und rot und blau – nämlich farblich aufgehübscht und so übersichtlicher:

ls -laG

Alle Dateien mit einer bestimmten Endung (z.B. .jpg) finden:

ls -la *.jpg

Das Zeichen * dient als Platzhalter für ein beliebiges Zeichen (kein, ein oder mehrere). Der Platzhalter ? steht für genau ein beliebiges Zeichen:

ls -la quelle?.jpg

Das obige Beispiel findet nur die Datei quellen.jpg (quelle.jpg hingegen nicht, dafür müsste man den Platzhalter * verwenden, der auch auf „kein Zeichen“ passt).

Dateien und Verzeichnisse nach Datum der Erstellung sortieren:

ls -laU

Dateien und Verzeichnisse nach Datum des letzten Zugriffs sortieren:

ls -lau

Dateien und Verzeichnisse nach Datum der letzten Änderung sortieren:

ls -lat

Dateien kopieren und verschieben

Es gibt zwei grundsätzlich verschiedene Möglichkeiten, Dateien zu bewegen: Kopieren und Verschieben.

Beim Kopieren bleibt das Original erhalten; es wird immer ein gleichwertiges Duplikat erstellt. Beim Verschieben wird das Original gelöscht; die neu erzeugte Datei ist das einzig verbliebene Exemplar.

Datei in das darüberliegende Elternverzeichnis kopieren:

cp datei.ext ../

Datei in ein Verzeichnis mittels absoluter Pfadangabe kopieren:

cp datei.ext /var/hierhin/

Datei im gleichen Verzeichnis unter einem anderen Namen duplizieren (eine bereits vorhandene Datei wird ohne vorherige Rückfrage überschrieben):

cp datei.ext duplikat.ext

Datei an einen anderen Ort kopieren und gleichzeitig umbenennen:

cp datei.ext /var/hierhin/datei-kopie.ext

Datei in das darüberliegende Elternverzeichnis verschieben:

mv datei.ext ../

Datei in ein Verzeichnis mittels absoluter Pfadangabe verschieben:

mv datei.ext /var/hierhin/

Datei an einen anderen Ort verschieben und gleichzeitig umbenennen:

mv datei.ext /var/hierhin/datei-backup.ext

Dateien umbenennen

Eine Sonderform des Verschiebens einer Datei mit dem mv-Befehl ist das Umbenennen. Existiert bereits eine Datei gleichen Namens, wird diese vorher gelöscht.

mv alter-name.ext neuer-name.ext

Dateien löschen

Dateien oder ganze Verzeichnisse (einschließlich deren Inhalt) ohne Rückfrage entfernen:

rm -rf datei.ext
rm -rf datei.*
rm -rf /var/beispiel/alt/

Der Parameter -r löscht komplette Verzeichniszweige, -f verhindert weitestgehend Rückfragen zum Löschen (ignoriert also gesetzte Dateiberechtigungen).

Dateitypen bestimmen

Üblicherweise wird der Dateityp anhand der Dateiendung ermittelt. Blöd nur, wenn eine Dateiendung mehrdeutig ist (z.B. definiert .jpg als Norm viele verschiedene Verfahren zur Speicherung von Bilddaten).

Besonders bei Textdateien steht man häufig vor dem Problem, den verwendeten Zeichensatz herausfinden zu müssen. Da heißt es dann probieren, probieren, probieren – oder folgenden Befehl tippen:

file was-bin-ich.txt
file foto.jpg

Der file-Befehl versucht durch ein mehrstufiges Verfahren das exakte Format zu ermitteln.

So spezifiziert es das für diesen Beitrag verwendete Bild nicht nur als simples JPEG, sondern liefert als Ausgabe: JPEG image data, JFIF standard 1.01, resolution (DPI), density 300×300, segment length 16, baseline, precision 8, 678×381, frames 3.

Das geniale an file ist aber, dass es die Dateien selbst dann noch (meistens) richtig klassifiziert, wenn die Dateiendung fehlt oder eine ungültige ist.

Inhalt von Textdateien durchsuchen

Mit dem grep-Befehl lassen sich Dateien (oder auch der Inhalt ganzer Verzeichnisse) nach einem bestimmten Muster durchsuchen:

grep -n "datei.ext" -e "findmich"
grep -n "*.html" -e "findmich"
grep -nr "/var/quelle/" -e "findmich"

Der Parameter -n gibt die Zeilennummer des Treffers aus und der Parameter -e erlaubt die Verwendung von regulären Ausdrücken im Suchmuster. Wie üblich bei Shell-Kommandos steht -r für „rekursiv“, also für das Durchsuchen des gesamten Verzeichniszweigs.

Länge des Inhalts von Textdateien ermitteln

Mit dem wc-Befehl kann die Anzahl von Zeilen, Wörtern und Zeichen errechnet werden:

wc datei.txt

Verzeichnisse

Ein neues Verzeichnis erstellen:

mkdir neues-verzeichnis

Einen neuen Verzeichnisast erstellen (noch nicht vorhandene Ordner werden automatisch hinzugefügt):

mkdir -p hier/sind/wir/jetzt/

Anmerkung zur Arbeit mit Verzeichnissen

Unix behandelt Verzeichnisse und Dateien in technischer Hinsicht nahezu identisch.

Alle in diesem Tutorial angeführten Befehle zum Umbenennen, Kopieren, Verschieben und Löschen von Dateien können deshalb analog auch auf Verzeichnisse angewendet werden.

Das war’s…

… jetzt sind erst einmal Sie dran. Wir wünschen viel Spaß beim Ausprobieren! 🙂


Autor: Tobias Eichner | Datum der Veröffentlichung: Januar 2018
Wichtig: Bitte beachten Sie die Nutzungsbedingungen und rechtlichen Hinweise für diesen Beitrag!