claim.gif
Linux Magazin Linux User Easy Linux Ubuntu User International Linux Community
Erschienen in EasyLinux 05/2004   »   Ausgabe bestellen

Guru-Training

Ordnung ist das halbe Leben...

von Heike Jurzik


... und die andere Hälfte ist wohl organisiertes Chaos. Zumindest in den meisten Home-Verzeichnissen. Wir stellen Kommandos vor, die beim Aufräumen helfen.

In den meisten Home-Verzeichnissen sammeln sich mit der Zeit unzählige Dateien an. Übersichtlicher wird das Ganze, wenn man die Daten in Unterverzeichnisse sortiert. Natürlich können Sie diese Aufgabe in KDEs Dateimanager Konqueror lösen -- allerdings nur mit vielen Mausklicks.

Durch den Verzeichnisdschungel navigieren, neue Verzeichnisse anlegen und wieder löschen, Dateien kopieren oder verschieben bzw. umbenennen -- bei all diesen Aufgaben arbeiten Sie auf der Kommandozeile viel effizienter als mit grafischen Tools. Die Befehle cd, mkdir, rmdir, cp und mv helfen dabei und bringen Übersicht ins Datenchaos.

Navigationskünstler

Mit dem Befehl cd (englisch: change directory) navigieren Sie schnell durch die Verzeichnishierarchie. Unter Linux ist diese wie ein Baum aufgebaut: Ganz oben liegt das Wurzelverzeichnis /, das auch Root-Verzeichnis genannt wird (nicht mit dem Administrator root zu verwechseln). Das Wurzelverzeichnis enthält (neben Dateien) Unterverzeichnisse aus, die ihrerseits wieder Verzeichnisse und Dateien enthalten können -- der Verzweigung sind keine Grenzen gesetzt.

Wer das gern etwas anschaulicher hätte, öffnet den Dateimanager Konqueror: Wechseln Sie über das Menü Ansicht / Anzeigemodus zur Baum-Ansicht. Um ins Wurzelverzeichnis zu gelangen, klicken Sie entweder mit der Maus solange auf den Aufwärts-Knopf, bis es nicht weiter nach oben geht, oder tippen in die Adresszeile file:/ (Abbildung 1).

Abb. 1: Den Wald vor lauter Bäumen nicht? -- Konqueror in Baumansicht.

Was auf den ersten Blick recht unübersichtlich wirkt, folgt doch festen Regeln. Der so genannte "Filesystem Hierarchy Standard" legt fest, was in welchen Verzeichnissen liegen sollte. So finden sich Bibliotheken beispielsweise in /lib oder /usr/lib. In /bin und /sbin liegen ausführbare Programme (englisch: binaries), wobei /sbin Programme enthält, die der Administrator verwendet. Systemweite Konfigurationsdateien finden Sie in /etc, Gerätedateien in /dev. Ihr Home-Verzeichnis und das von anderen Benutzern befindet sich unterhalb der /home-Hierarchie.

Mit dem Befehl cd wandern Sie von Verzeichnis zu Verzeichnis. Dabei können Sie vom Wurzelverzeichnis aus starten und sich von dort bis ins Zielverzeichnis "herabhangeln", also den absoluten Pfad angeben:

cd /etc/MPlayer

Alternativ gehen Sie den relativen Pfad -- relativ von Ihrem derzeitigen Aufenthaltsort aus. In welchem Verzeichnis Sie sich gerade befinden, verrät das Kommando pwd (englisch: print working directory):

suse9@transpluto:~> pwd
/home/suse9

Um den relativen Pfad zu verwenden, wandern Sie zuerst schrittweise nach oben bis zur Wurzel und von da ins Zielverzeichnis. Dazu sollten Sie wissen, dass .. jeweils das nächst höher liegende Verzeichnis meint. Der relative Pfad von /home/suse9 zu /etc/MPlayer lautet also:

cd ../../etc/MPlayer/

Übrigens: Wer noch unter MS-DOS auf der Kommandozeile gearbeitet hat, wird sich an cd.. (ohne Leerzeichen zwischen Befehl und den beiden Punkten) erinnern. Unter Linux geht das nicht, da die Bash cd.. als ein Kommando identifiziert und nach dem entsprechenden Befehl vergeblich sucht. Sie können aber einen Alias definieren, eine Art "Abkürzung", um ein Programm (mit seinen Optionen) unter einem anderen Namen starten zu können:

alias cd..="cd .."

Da auf diese Weise definierte Alias-Namen nur für die Shell gelten, in der sie definiert wurden, und nach dem Ausloggen wieder verloren gehen, können Sie die Definition in eine der Startdateien in Ihrem Home-Verzeichnis, z. B. .profile oder .bashrc eintragen.

Der Befehl cd ohne weitere Angaben bringt Sie ins eigene Home-Verzeichnis zurück. Die Bash speichert außerdem, in welchem Verzeichnis Sie zuletzt waren -- mit cd - kommen Sie dorthin zurück. Dabei merkt sich die Shell immer nur den jeweils letzten Aufenthalt -- wiederholtes cd - lässt Sie also vor und zurück springen:

suse9@transpluto:~> cd OpenOffice.org1.1/user/gallery/
suse9@transpluto:~/OpenOffice.org1.1/user/gallery> cd
suse9@transpluto:~> cd -
suse9@transpluto:~/OpenOffice.org1.1/user/gallery>

Gut sortiert

Das Kommando mkdir (englisch: make directory) erstellt ein neues Verzeichnis. Geben Sie einen einfachen Namen ohne Pfadbezeichnung an, wird der neue Ordner im aktuellen Verzeichnis angelegt:

mkdir bilder

Wer weitere Unterverzeichnisse in bilder erstellen möchte, muss aber nicht mit dem cd-Befehl in das neue Verzeichnis hineinwechseln und von dort weiterarbeiten -- mkdir versteht auch Pfadangaben:

mkdir bilder/party

Praktisch: Für eine ganze Verzeichnishierarchie, also z. B. bilder/party/karneval/2004, müssen Sie nicht mehrfach mkdir aufrufen und sämtliche Verzeichnisnamen tippen. Stattdessen nutzen Sie die Option -p, die den kompletten Pfad zum neuen Verzeichnis erstellt, falls er noch nicht existiert. Anstelle von

mkdir bilder
mkdir bilder/party
mkdir bilder/party/karneval
mkdir bilder/party/karneval/2004

reicht ein einziger Befehl:

mkdir -p bilder/party/karneval/2004

Und tschüss!

Das Kommando zum Löschen von Verzeichnissen heißt rmdir (englisch: remove directory). Dabei entfernt der Befehl aber nur Ordner, die vollständig leer sind:

suse9@transpluto:~> rmdir bilder
rmdir: »bilder/«: Das Verzeichnis ist nicht leer

Das ls-Kommando hilft dabei, auch versteckte Dateien oder Verzeichnisse, die mit einem Punkt anfangen, aufzuspüren. Verwenden Sie dazu die Option -a:

suse9@transpluto:~> ls -a bilder
.  ..  .petronella.jpg

Natürlich können Sie jetzt erst aufwändig mit rm alle Dateien einzeln entfernen -- praktischer ist es, wenn Sie dem Befehl die Option -r mit auf den Weg geben: Dann räumt rm rekursiv bis in den letzten Winkel auf. Um das Verzeichnis bilder inklusive aller Unterverzeichnisse leer zu putzen, verwenden Sie also den Befehl rm -r bilder, und wenn Sie zusätzlich die Option -v anhängen, erfahren Sie, was hinter den Kulissen abläuft (Abbildung 2).

Abb. 2: Bis in den letzten Winkel -- rekursives "rm".

rmdir bietet genau wie mkdir den Parameter -p, der eine ganze Hierarchie von Verzeichnissen löscht. Lautet der Befehl beispielsweise

rmdir -p bilder/party/karneval/2004

versucht rmdir zunächst, das unterste Verzeichnis, also 2004, zu löschen. Hat das geklappt, entfernt der Befehl das nächst höher liegende Verzeichnis (karneval), usw. Sobald rmdir allerdings auf Dateien in einem der Verzeichnisse trifft, bricht das Kommando die Arbeit ab.

Kopierorgie

Eine oder mehrere Dateien kopieren Sie mit dem Befehl cp (englisch: copy). Der Aufruf lautet cp datei ziel, wobei Sie als Ziel entweder einen Dateinamen oder ein Verzeichnis angeben können. Um im aktuellen Verzeichnis eine Kopie einer Datei anzulegen, tippen Sie:

cp bild.jpg kopie-bild.jpg

Vorsicht: Gibt es schon eine Datei mit Namen kopie-bild.jpg, wird diese einfach überschrieben. Auf der sicheren Seite sind Sie, wenn Sie cp mit der Option -i (interaktiv) verwenden:

suse9@transpluto:~> cp -i bild.jpg kopie-bild.jpg
cp: »kopie-bild.jpg« überschreiben? 

Diese Frage können Sie bestätigen, indem Sie mit j, J, y oder Y antworten -- alles andere wird als "Nein" interpretiert. Wer bei den ersten Kopierversuchen noch unsicher ist, kann stattdessen den Parameter -b (Backup) einsetzen. Der Befehl cp -b bild.jpg kopie-bild.jpg legt ein Backup an, falls die Zieldatei bereits vorhanden ist. Auf diese Weise "gesicherte" Dateien erkennen Sie an der angehängten Tilde ~, also beispielsweise kopie-bild.jpg~.

Um mehrere Dateien in ein Verzeichnis zu kopieren, hängen Sie zunächst die Dateinamen hintereinander und geben als letztes Argument das Zielverzeichnis an:

cp bild.jpg kopie-bild.jpg bilder_kopien/

Das Zielverzeichnis muss vorhanden sein, andernfalls meldet das Kommando:

cp: Kopieren mehrerer Dateien, aber der letzte Parameter »bilder_kopie«
ist kein Verzeichnis
»cp --help« gibt weitere Informationen.

Wildcards, so genannte Jokerzeichen, erleichtern die Arbeit. Mit diesen Platzhaltern ersetzen Sie Teile von Zeichenketten. Ein Fragezeichen ? lässt dabei genau einen Buchstaben unbestimmt (z. B. h?llo => hallo, hGllo, h7llo, ...), während das Sternchen * für beliebig viele verschiedene Zeichen steht (z. B. G*ss => Guss, Genuss). Um also alle Dateien, die auf .jpg enden, in das Verzeichnis bilder_kopien zu kopieren, tippen Sie einfach cp *.jpg bilder_kopien/.

Der Versuch, ganze Verzeichnisse zu kopieren, scheitert im ersten Anlauf:

suse9@transpluto:~> cp bilder_kopien/ neue_kopien/
cp: Verzeichnis »bilder_kopien/« ausgelassen

Erst mit der Option -r (rekursiv) erledigt cp diese Aufgabe:

suse9@transpluto:~> cp -r bilder_kopien/ neue_kopien/
suse9@transpluto:~> ls neue_kopien/
bild1.jpg  bild2.jpg [...]

Umzugspläne

Der Befehl mv verschiebt Dateien oder gibt ihnen einen neuen Namen. Diese doppelte Funktion des Befehls wirkt zunächst etwas verwirrend, ist aber schnell erklärt.

Als ersten Parameter (die Quelle) geben Sie eine Datei oder ein Verzeichnis an. Der zweite Parameter ist das Ziel -- entweder ein schon vorhandenes Verzeichnis oder ein Datei- bzw. Verzeichnisname. Tabelle 1 gibt eine Übersicht und Beispiele für die verschiedenen Szenarien.

Tabelle 1: Möglichkeiten mit mv
mv a b a ist eine Datei, z. B. /home/suse9/datei1.txt a ist ein Verzeichnis, z. B. /home/suse9/dir1/
b ist eine Datei, z. B. /tmp/datei2.txt Datei a wird verschoben und heißt jetzt b, Im Beispiel wandert datei1.txt nach /tmp und heißt /tmp/datei2.txt geht nicht
b ist ein Verzeichnis, z. B. /home/suse9/dir2/ Datei a wird in Verzeichnis b hinein geschoben, das Ergebnis ist /home/suse9/dir2/datei1.txt Verzeichnis a wird in Verzeichnis b verschoben. Das Ergebnis ist: /home/suse9/dir2/dir1
b ist nicht vorhanden, aber b ist von der Form /x/y/z/B und /x/y/z/ gibt es Datei a wird nach /x/y/z/ verschoben und heißt danach B, Ergebnis /x/y/z/B Verzeichnis a wird nach /x/y/z/ verschoben und umbenannt, Ergebnis: a heißt jetzt B: /x/y/z/B/

Um im aktuellen Verzeichnis eine Datei namens bild.jpg in panorama.jpg umzubenennen, tippen Sie:

mv bild.jpg panorama.jpg

Auch ganzen Verzeichnissen können Sie auf diese Weise einen neuen Namen geben. Um beispielsweise das Verzeichnis bilder_kopien/backup/ in bilder_kopien/backup.alt/ umzubenennen, verwenden Sie:

mv bilder_kopien/backup bilder_kopien/backup.alt

Achten Sie auch bei den mv-Befehlen immer auf den richtigen Pfad, damit das Verzeichnis wirklich umbenannt und nicht verschoben wird. Wenn Sie anstelle des gerade gezeigten Befehls

mv bilder_kopien/backup backup.alt

eingeben, bleibt backup.alt nicht etwa unterhalb von bilder_kopien, sondern landet im aktuellen Verzeichnis.

Für das Verschieben von Dateien kennt mv ebenfalls die Option -i (interaktiv), die nachfragt, wenn im Zielverzeichnis bereits eine Datei mit gleichem Namen liegt:

suse9@transpluto:~> mv -i bilder_kopien/bild.jpg neue_kopien/
mv: »neue_kopien/bild.jpg« überschreiben?

Übung macht den Aufräummeister

Die hier vorgestellten Kommandos helfen dabei, die eigenen Daten besser zu sortieren und zu organisieren. Damit Sie im Ernstfall nicht versehentlich das komplette Home-Verzeichnis entrümpeln, experimentieren Sie ruhig ein bisschen mit den Befehlen und Optionen. Und natürlich gilt wie immer: Backups nicht vergessen -- sicher ist sicher. (hge)

Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.

Druckerfreundliche Version | Feedback zu dieser Seite | Datenschutz | © 2017 COMPUTEC MEDIA GmbH | Last modified: 2007-01-25 17:13

Nutzungsbasierte Onlinewerbung

[Linux-Magazin] [LinuxUser] [Linux-Community] [Admin-Magazin] [Ubuntu User] [Smart Developer] [Linux Events] [Linux Magazine] [Ubuntu User] [Admin Magazine] [Smart Developer] [Linux Magazine Poland] [Linux Community Poland] [Linux Magazine Brasil] [Linux Magazine Spain] [Linux Technical Review]