Dateien und Ordner auf der Kommandozeile verwalten

© Dafouti, Photocase.com

Kleines Einmaleins

Die Dateiverwaltung auf der Kommandozeile stellt das kleine Einmaleins des Linux-Anwenders dar. Wer es beherrscht, agiert schnell und effizient mit Dateien und Verzeichnissen.

README

Der effektive Umgang mit den Dateiverwaltungsbefehlen auf der Kommandozeile erfordert etwas Übung. Als Lohn der Mühe winkt eine Effizienz im Umgang mit Dateien und Verzeichnissen, die sich in der grafischen Oberfläche so nicht erzielen lässt.

Linux behandelt alles als Datei. Daher zählt der Umgang mit den Kommandozeilenbefehlen zur Dateiverwaltung zu den wichtigsten Kenntnissen, die man sich als Linux-Einsteiger aneignen muss. Erfreulicherweise tragen die meisten Befehle mnemonische Namen, die sich aus der englischen Bezeichnung für ihre Funktion ableiten. So gibt ls ("list") den Inhalt eines Verzeichnisses an, mv ("move") verschiebt Dateien und Ordner von einem Ort zum anderen.

Grundsätzlich gliedern sich die Befehle zur Dateiverwaltung auf der Shell in drei Kategorien: Verzeichnis- und Dateiverwaltung, Navigation und Bearbeitung sowie Kompression. Eins haben die Befehle aus allen drei Bereichen gemeinsam: Sie sind wesentlich leistungsfähiger als ihre Pendants auf der grafischen Oberfläche und verursachen bei Bedienungsfehlern potenziell einen höheren Schaden. Beides liegt nicht zuletzt daran, dass sie sich mithilfe von Wildcards und regulären Ausdrücken gleichzeitig auf sehr viele Dateien anwenden lassen (dazu später noch mehr).

Umbenennen und verschieben

Das grundlegendste Kommando zum Umgang mit Dateien und Ordnern ist wohl cp ("copy") mit der simplen Syntax cp Optionen Quelle Ziel. Sofern Sie nicht explizit etwas anderes angeben, überschreibt cp dabei gleichnamige Dateien im Zielverzeichnis. Wünschen Sie das nicht, gibt es zwei Möglichkeiten, das zu umgehen. Zum einen können Sie cp mit der Option -b ("backup") anweisen, vor dem Überschreiben Backups der fraglichen Dateien anzulegen. Zum andern sorgt der Schalter -u ("update") dafür, dass cp nur solche Dateien überschreibt, die älter sind als das zu kopierende File.

Mit der Option -p ("preserve") sorgen Sie dafür, dass beim Kopieren der Dateimodus, der Besitzer und der Zeitstempel der Datei erhalten bleiben. Das kann zum Beispiel dann ratsam sein, wenn Sie als Root die Dateien anderer Benutzer kopieren, etwa für ein Backup. Um gezielt einzelne Dateiattribute beim Kopieren zu beeinflussen, kennt cp die beiden ausgeschriebenen Optionen --preserve=Parameter und --no-preserve=Parameter, denen Sie die Parameter mode, ownership, timestamps, context, links, xattr oder ganz einfach all mitgeben (Abbildung 1).

Abbildung 1: Der Befehl cp erlaubt Ihnen, sowohl vorsichtig als auch flexibel zu agieren. Hier sorgen die Optionen -u und --preserve dafür, dass keine neuere Datei überschrieben wird und der Besitzer der Datei sich nicht ändert.

Manchmal möchten Sie eine Datei an mehreren Stellen im Dateisystem bereitstellen, möglichst aber, ohne dabei Speicherplatz zu verschwenden. Genau das erreichen Sie, in dem Sie mithilfe des Kommandos ln -s an der gewünschten Stelle einen symbolischen Link auf das fragliche File anlegen. Ein solcher "Zeiger" spart je nach Größe der Zieldatei unter Umständen beträchtlichen Speicherplatz ein (Abbildung 2). Möchten Sie später etwa bei einem Backup statt des Symlinks die Originaldatei mitkopieren, geben sie cp dazu die Option -L mit.

Abbildung 2: 1,4 MByte gespart: Symbolische Links bieten eine einfache Möglichkeit, um Dateien platzsparend an mehreren Stellen im Dateisystem bereitzustellen.

Der Befehl mv dient dazu, eine Datei in ein anderes Verzeichnis zu verschieben, anstatt sie zu kopieren. Er folgt derselben Syntax wie cp und akzeptiert auch viele derselben Optionen. Liegen Quelle und Ziel im selben Verzeichnis, entspricht das "Verschieben" einem Umbenennen:

$ mv image.png bild.png

Als Ziel für das Kopieren und Verschieben von Dateien legen Sie bei Bedarf neue Verzeichnisse mithilfe des Befehls mkdir ("make directory") an. Als Argument geben Sie den anzulegenden Pfad an. Dabei müssen jedoch alle übergeordneten Verzeichnisse des angegebenen Ordners bereits existieren. Sind Sie sich dessen nicht ganz sicher, ergänzen Sie den Befehl um die Option -p ("parent"). Er legt gegebenenfalls noch fehlende Verzeichnisse gleich mit an:

$ mkdir ./rpg/2015/01/txt/

Zum Löschen von Dateien und Verzeichnissen dienen die beiden Befehle rm ("remove") und rmdir ("remove directory"). Bevor Sie einen der beiden ausführen, sollten Sie sich noch einmal kurz ins Gedächtnis rufen, dass es auf der Kommandozeile anders als in der grafischen Oberfläche keinen Mülleimer gibt, aus dem sich Gelöschtes wieder aufklauben lässt: Was Sie am Prompt entsorgen, das wandert direkt ins Nirwana.

Geben Sie nicht explizit etwas anderes vor, dann löscht rm ausschließlich Dateien. Soll es auch Verzeichnisse entfernen, müssen Sie ihm dazu den Schalter -r ("recursive") mitgeben. Dann aber ist Vorsicht angebracht, denn ein rm -r an der falschen Stelle beseitigt nur allzu schnell auch eigentlich noch gebrauchte (System-)Dateien. Die vorsichtigeren Naturen unter den Administratoren spendieren dem Kommando deshalb noch die Zusatzoption --preserve-root, wenn Löscharbeiten irgendwo in der Nähe des Wurzelverzeichnisses anstehen. Weitaus ungefährlicher gestaltet sich da der Umgang mit rmdir, das ausschließlich leere Verzeichnisse entfernt, solange Sie ihm nicht ausdrücklich etwas anderes befehlen.

Einen gänzlich anderen Ansatz des Kopierens verfolgt das Tool dd ("data dump"): Statt Dateien oder Verzeichnisse kopiert es Bytes oder Byte-Blöcke. aus diesem Grund verwendet es auch eine wesentlich komplexere Syntax als die bisher vorgestellten Werkzeuge. Es kommt hauptsächlich für administrative Zwecke zum Einsatz, etwa um aus einem optischen Datenträger ein ISO-Image zu erstellen, Partitionen zu kopieren oder ihren Inhalt durch Überschreiben mit zufälligen Daten zu löschen oder einen Master Boot Record zu kopieren [1]. Bei unbedachter Anwendung kann sich dd noch zerstörerischer auswirken als selbst rm .

Navigation

Die Navigation im Verzeichnisbaum mit cd ("change directory") kennen Sie natürlich schon. Zwar kennt cd keine Optionen – Sie übergeben ihm einfach das Zielverzeichnis, das Sie anspringen möchten –, wohl aber diese Option: Mit cd .. wechseln Sie ins übergeordnete Verzeichnis, cd - bringt Sie ins vorige Verzeichnis und cd ~ in Ihr Home-Verzeichnis. Kombinieren Sie das mit der History-Funktion der Shell, bietet das Terminal schon beinahe so viel Komfort wie ein Webbrowser mit seinen Vorwärts- und Rückwarts-Buttons.

Den Inhalt eines Verzeichnisses sehen Sie sich mit ls ("list") an. Viele Distributionen setzen ls als Alias für ls --color, sodass der Befehl verschiedene Dateitypen in unterschiedlichen Farben anzeigt. Die Option --classify oder kurz -F hängt zusätzlich Zeichen wie einen Schrägstrich, ein Sternchen oder einen Klammeraffen an den Dateinamen an, um auf diese Weise Verzeichnisse, ausführbare Dateien oder Symlinks zu kennzeichnen (Abbildung 3).

Abbildung 3: Viele Distributionen liefern bereits ein Alias für ls, das verschiedene Dateitypen mit Farben kennzeichnet. Über diverse Optionen kitzeln Sie noch weitere Informationen aus ls heraus.

Für den Hausgebrauch sind Sie damit fürs Erste schon ganz gut bedient, doch früher oder später benötigen Sie unausweichlich auch erweiterte Optionen wie -a, das auch versteckte Dateien anzeigt, -l, um die Dateiattribute anzusehen, oder <-h>, das die Dateigröße in besser lesbarer Form ("human readable") ausgibt. In manchen Fällen erweist sich auch eine sortierte Ausgabe des Inhalts als übersichtlicher, die Sie mit Optionen wie -S ("size"), -t ("time") oder -X ("extension") angeben.

In umfangreichen Verzeichnissen liefert ls mehr Ausgabezeilen, als ins Terminalfenster passen. Hier hilft es weiter, die Ausgabe über ls | less durch das Programm Less zu leiten, wo Sie mit den Pfeil- und Bildlauftasten beliebig durch die Anzeige blättern, bis Sie die Ausgabe mit [Q] abbrechen. Als nützlicher Helfer für ls erweist sich file, das Ihnen den Typ einer Datei anzeigt. Mit dem Schalter -L ergänzt, zeigt es für Symlinks auch den Typ der Zieldatei an. Die Option -z identifiziert darüber hinaus den Inhalt von Archiven (dazu später mehr).

Abbildung 4: Mithilfe des Kommandos file stellen Sie den Typ einer Datei fest.

Zur Suche nach Dateien dient das Kommando find mit der Syntax find Optionen Pfad Name. Der Name darf Wildcards und reguläre Ausdrücke einschließen. Die wichtigsten Optionen – Find kennt noch viel mehr – fasst die Tabelle "Optionen für Find" zusammen.

Das Kommando touch dient normalerweise dazu, den Zeitstempel einer Datei auf den aktuellen Zeitpunkt zu setzen. Dazu genügt der Aufruf touch Datei. Existiert die fragliche Datei noch nicht, legt Touch sie freundlicherweise gleich als leeres File an – ein gern genutztes Feature. Daneben lässt sich Touch auch nutzen, um Dateien vor- oder zurückzudatieren. So setzen Sie mit der Option -t den Zeitstempel und mit -a das Datum des letzten Zugriffs auf den in der Form jjJJMMTThhmm.ss angegebenen Zeitpunkt. So setzt etwa das letzte Touch-Kommando in Abbildung 5 den Zeitstempel von touch.txt auf 09:08:07 Uhr am 10. November 2014. Die Angabe des Jahrhunderts (jj), des Jahrs (JJ) und der Sekunden (.ss) ist optional.

Abbildung 5: Zeitreise: Mittels touch lassen sich Dateien vor- oder zurückdatieren.

Optionen für Find

Option

Bedeutung

-iname

Schreibweisenunabhängige Suche

-amin Min

Minuten seit dem letzten Dateizugriff

-cmin Min

Minuten seit der letzten Dateiänderung

-atime Tage

Anzahl von Tagen, vor denen zuletzt auf die Datei zugegriffen wurde

-amin Tage

Anzahl von Tagen, vor denen die Datei zuletzt geändert wurde

-group Gruppe

Dateien einer bestimmten Benutzergruppe

-user User

Dateien eines bestimmten Benutzers

-maxdepth Anzahl

Maximale Anzahl der Verzeichnisebenen für die Suche

-mindepth Anzahl

Suche erst ab der angegebenen Anzahl von Unterverzeichnisebenen

-perm Rechte

Dateien mit einer bestimmten Rechtekonstellation

-e Typ

Dateien des angegebenen Typs (etwa ascii oder compress) von der Suche ausschließen

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 6 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Aktuelle Ausgabe

10/2019
Raspberry Pi 4B

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Sonnige Zeiten

    UV-Strahlung ist für das menschliche Auge unsichtbar, was sie umso gefährlicher macht. Die Höhe der tatsächlichen Belastung verrät Ihnen das Selbstbauprojekt UV-Sensor.

  • Gut verpackt

    Für das Ansteuern kleiner Displays gibt es keine Programme von der Stange. Mit Python und einer Pygame-Bibliothek erstellen Sie trotzdem im Handumdrehen Anwendungen.

  • Macro-Mini-Micro-Bit

    Was dem Raspberry Pi für die Computerwelt gelungen ist, versucht der BBC Micro:bit für Mikrocontroller zu wiederholen. Das für Schüler entwickelte Kit hilft beim Einstieg in die hardwarenahe Programmierung.

  • Vorhang auf

    Mit dem modernen Video-Codec HEVC (H.265) erstellte Filme spielen bisherige RasPi-Modelle oft nur ruckelnd ab. Wir testen, ob der neue Raspberry Pi 4B das besser kann.

  • Überraschung!

    Eine optimierte Architektur und mehr RAM beschleunigen den RasPi 4B deutlich. Wir prüfen, wie gut sich der Neuling als Desktop-Rechner schlägt.

  • Durchgestartet

    Ein Stresstest zeigt, wie sich der neue Raspberry Pi 4 Modell B gegenüber den älteren Modellen abhebt.

  • Vierte Generation

    Eine schnellere CPU, USB 3.0 und Gigabit-Ethernet sind nur die Highlights des Raspberry Pi 4B: Das Board bringt viele weitere Neuerungen mit.

  • Tiefenmesser

    Um die Pumpe in einem Brunnenschacht möglichst genau zu positionieren, brauchen Sie dessen Tiefe. Die ermitteln Sie mithilfe eines präzisen Messgeräts aus einem Luftdrucksensor und einem Mikrocontroller.

  • Faktencheck

    Das via DVB-T2 ausgestrahlte Digital-TV liefert Bilder in HD-Qualität. Der dabei eingesetzte H.265-Standard überfordert allerdings kleine Mini-Rechner wie den Raspberry Pi – oder geht es doch?

  • Zugriff von außen

    React Native erlaubt es, Apps mit wenigen Zeilen Code zu programmieren. Mit einem entsprechenden Server sprechen Sie so den RasPi vom Smartphone aus an.