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

04/2019
TV & Multimedia

Diese Ausgabe als PDF kaufen

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

Stellenmarkt

Neuigkeiten

  • Finger weg

    Ein Temperatursensor verrät, ob Sie einen Gegenstand gefahrlos berühren dürfen. Beim Messen brauchen Sie dabei noch nicht einmal Kontakt zum Objekt.

  • Aus einer Hand

    Um einen Mikrocontroller zu programmieren, genügt ein Raspberry Pi. Wir zeigen, was Sie dazu noch benötigen.

  • Im Gleichtakt

    Synchronisierte Live-Loops und selbst erstellte Funktionen helfen dabei, Sonic Pi wie ein Live-Instrument zu spielen.

  • Mach mal

    Das Ftduino-Modul schlägt die Brücke zu Fischertechnik und ermöglicht es unter anderem, einen Drei-Achsen-Roboter anzusteuern.

  • Eleganter Diener

    Jeden Morgen dieselben Handgriffe, um zu sehen, ob die S-Bahn fährt und wie das Wetter wird? Ein cleverer Infoscreen auf RasPi-Basis automatisiert den Vorgang.

  • Bienenflüsterer

    Bienenzüchter, die ihre Völker besser kennenlernen möchten, müssen die fleißigen Insekten nicht pausenlos stören. Mit einem Raspberry Pi und verschiedenen Sensoren überwachen sie Temperatur, Luftfeuchtigkeit und bald auch das Gewicht des Bienenstocks.

  • Beerige Musik

    Für echten Hi-Fi-Sound braucht es mehr als einen kleinen Bluetooth-Brüllwürfel. Mit Volumio und einem Raspberry Pi rüsten Sie Ihre klassische Hi-Fi-Anlage mit smarten Funktionen auf.

  • Ton ab!

    Auf den ersten Blick erscheint der RasPi zu schwachbrüstig für den Betrieb leistungshungriger DAW-Software. Doch der Schein trügt.

  • Himbeer-TV

    Der DVB TV µHAT rüstet den Raspberry Pi mit einem DVB-T/T2-Tuner auf. Die deutsche TV-Landschaft schränkt dessen Möglichkeiten allerdings ein.

  • Git à la RasPi

    Mit wenigen Handgriffen zum Git-Hoster: Die dezentrale Arbeitsweise von Git erleichtert in Kombination mit der Netzwerkfähigkeit des RasPi das Verwalten von Quellcode.