Arbeiten mit Dateien und Verzeichnissen
In diesem Artikel stelle ich grundlegende Befehle vor, die zum Arbeiten mit Dateien und Verzeichnissen notwendig sind.
Viele Befehle können ohne Optionen oder Parameter aufgerufen werden. Durch die Angabe von Optionen oder Parametern kann das Verhalten des Programmes beeinflusst werden. Für viele Optionen gibt es eine kurze und eine lange Schreibweise. Die Kurzschreibweise wird meist durch einen Bindestrich und ein folgendes Zeichen repräsentiert, während die lange Form mit zwei Bindestrichen beginnt.
pwd – Den Namen des aktuellen Arbeitsverzeichnisses ausgeben
Der Prompt der Shell zeigt nicht immer den vollständigen Pfad des aktuellen Verzeichnisses an. Mit dem Befehl pwd wird dieser ausgehend vom Wurzelverzeichnis angezeigt:
pwd
/home/simon
simon@debian:~$
Im gezeigten Beispiel befindet man sich in seinem heimatverzeichnis, dass ja durch die Raute dargestellt wird. Der Prompt der Shell könnte aber auch so eingestellt sein, dass nur der letzte Name des Pfades angezeigt wird:
pwd
/var/cache/apt/archives
simon@debian:archives$
cd – Wechselt das Verzeichnis
Möchte man in ein anderes Verzeichnis wechseln, ist der Befehl cd zu verwenden. Ruft man ihn ohne Parameter auf, wechselt man in sein Heimatverzeichnis. Mit dem Bindestrich wechselt man in das zuletzt aktuelle Verzeichnis und mit zwei Punkten wandert man in der Hirarchie nach oben:
simon@debian:~$ cd ..
simon@debian:/home$ cd ..
simon@debian:/$ cd -
/home
simon@debian:/home$ cd -
/
simon@debian:/$ cd
simon@debian:~$
Sein heimatverzeichnis kann man auch mit der Tilde ansprechen:
cd ~/testordner
simon@debian:~/testordner$
ls – Verzeichnisinhalt anzeigen
Der Befehl ls gibt den Inhalt eines Verzeichnisses aus. Es gilt folgende Syntax:
ls [OPTION]... [DATEI]...
Wird der Befehl ohne Optionen und Parameter aufgerufen, gibt er den inhalt des aktuellen Verzeichnisses in alphabetischer Reihenfolge in verschiedenen Spalten aus. Einträge, die mit einem Punkt beginnen werden ausgeblendet.
Hier eine Auswahl der möglichen Optionen:
- -a oder --all
- Einträge, die mit einem . Beginnen, nicht verstecken.
- -A oder --almost-all
- Die Einträge . und .. werden ausgeblendet.
- -B oder --ignore-backups
- Einträge, die mit ~ enden, werden ignoriert. Bei diesen Dateien handelt es sich meist um eine Sicherungskopie (Backup).
- -d 0der --directory
- Der Name des Verzeichnisses wird statt seinem Inhalt ausgegeben.
- -F oder --classify oder -p oder --file-type
- Anhängen eines Zeichens zur Typisierung jedes Eintrags (eines aus /=@|).
- --full-time
- Datum und Uhrzeit werden vollständig angezeigt.
- -G oder --no-group
- Die Ausgabe von Gruppeninformationen wird unterdrückt.
- -h oder --human-readable
- Die Ausgabe von Dateigrößen geschieht in einem besser lesbaren Format (zum Beispiel 1K, 14M, 2G).
- -i oder --inode
- Die INode-Nummer wird ausgegeben.
- -i MUSTER oder --ignore=MUSTER
- Einträge, die auf das angegebene Muster passen, werden ignoriert.
- -l
- Eine ausführliche Liste wird angezeigt.
- -L oder --dereference
- Bei symbolischen Verknüpfungen die Eigenschaften der jeweiligen Zieldatei anzeigen.
- -m
- so viele Einträge wie möglich, durch Kommata getrennt, in einr Zeile ausgeben.
- -n oder --numeric-uid-gid
- Die User- und Gruppen-IDs werden nicht in Namen aufgelöst, sondern als Nummern ausgegeben.
- -o
- Es wird ein langes Listenformat ohne die Ausgabe der Gruppen-Informationen verwendet.
- -r
- Die Ausgabe wird in umgekehrter Reihenfolge vorgenommen.
- -r oder --reverse
- Umgekehrte Reihenfolge beim Sortieren.
- -R oder --recursive
- Rekursive Ausgabe von Unterverzeichnissen.
- -S
- Die Ausgabe wird nach der Dateigröße sortiert.
- -t
- Die Dateien werden nach ihrer Änderungszeit sortiert.
- -u
- Die Dateien werden nach ihrer Zugriffszeit sortiert.
- -v
- Die Dateien werden nach ihrer Version sortiert.
- -X
- Die Einträge werden nach ihrer Dateierweiterung sortiert.
- -1
- Ein Eintrag pro Zeile wird ausgegeben.
Das folgende Beispiel sortiert die Dateien im Ordner /var/log/apache/ nach ihrem Änderungszeitpunkt und zeigt die Einträge in einer ausführlichen Liste an:
ls -lt /var/log/apache/
insgesamt 512
-rw-r--r-- 1 root root 267714 30. Sep 11:20 access.log
-rw-r--r-- 1 root root 37380 30. Sep 11:20 agent.log
-rw-r--r-- 1 root root 24353 30. Sep 11:20 referer.log
-rw-r--r-- 1 root root 187488 30. Sep 09:22 error.log
Das Ergebnis des gezeigten Befehls ist eine siebenspaltige Ausgabe. Die Bedeutung der Spalten wird im Folgenden beschrieben. Die Werte in Klammern beziehen sich auf die obige Ausgabe.
1. Spalte (rw-rr-)
Das erste Zeichen bestimmt den Typ des Eintrages. Folgende Zeichen sind möglich:
- -
- Es handelt sich um eine normale Datei.
- c
- Es handelt sich um ein zeichenorientiertes Gerät (zum Beispiel /dev/vcs1).
- d
- Der Eintrag ist ein Verzeichnis.
- l
- Es handelt sich um einen symbolischen Link.
- s
- Es handelt sich um einen Socket.
Die nächsten drei Zeichen stehen für die Rechte des Eintrag-Eigentümers, weitere drei Zeichen für die Rechte der Gruppenmitglieder und die letzten drei für die Rechte aller anderen Benutzer. Es sind jeweils folgende Zeichen möglich:
- r
- Ist der Buchstabe r gesetzt, verfügt man über das Leserecht für die Datei oder das Verzeichnis.
- w
- Ein w bedeutet bei Dateien, dass man deren Inhalt verändern kann. Bei einem Verzeichnis darf man neue Einträge hinzufügen oder entfernen.
- x
- Ein x bei einer Datei bedeutet, dass man das Programm ausführen darf. Ist das x bei einem Verzeichnis gesetzt, darf man in das Verzeichnis wechseln.
2. Spalte (1)
Diese Zahl gibt die Anzahl der Hardlinks aus.
3. Spalte (root)
Hier steht der Name des Eigentümers des Eintrages.
4. Spalte (root)
Der Eintrag gehört der angegebenen Benutzergruppe.
5. Spalte (267714)
In der 5. Spalte steht die Dateigröße.
6. Spalte (30. Sep 11:20)
In dieser Spalte steht, wenn nicht anders angegeben, das Datum der letzten Änderung.
7. Spalte (access.log)
In der letzten Spalte steht der Name des Eintrages. Handelt es sich um einen symbolischen Link, wird der Name des Eintrages und der Pfad zum Ziel ausgegeben.
touch – Zugriffs- und Aktualisierungszeit einer Datei verändern
Mit dem Befehl touch kann man die Zugriffs- und Aktualisierungszeit einer Datei auf das aktuelle Datum setzen. Beim Aufruf muß mindestens ein Dateiname
angegeben werden. Es gilt folgende Syntax:
touch [OPTION]... DATEI...
Als zwingendes Argument ist ein Dateiname mitzugeben. Folgende Optionen sind möglich:
- -a
- Es wird nur die Zugriffszeit geändert.
- -c oder --no-create
- Es werden keine neuen Dateien erstellt.
- -d Zeichenkette oder --date=Zeichenkette
- Statt der aktuellen Zeit wird die übergebene Zeichenkette verwendet.
- -m
- Es wird nur die Modifikationszeit aktualisiert.
- -r Datei oder --reference=Datei
- Es werden die Zeiten der angegebenen Datei verwendet.
Ist die angegebene Datei noch nicht vorhanden, wird sie angelegt.
mkdir – Verzeichnisse anlegen
Mit dem Befehl mkdir kann ein neues Verzeichnis angelegt werden, wenn dieses noch nicht existiert. Das Programm verwendet folgende Syntax:
mkdir [OPTION] VERZEICHNIS...
Als zwingendes Argument ist ein Verzeichnisname anzugeben. Folgende Optionen stehen zur Verfügung:
- -m Modus oder --modus=Modus
- Mit dieser Option können die Zugriffsrechte gesetzt werden.
- -p oder --parents
- Übergeordnete Verzeichnisse werden, falls noch nicht vorhanden, erstellt.
- -v oder --verbose
- Für jedes angelegte Verzeichnis wird eine Meldung ausgegeben.
- --help
- eine Kurze Hilfe wird angezeigt.
- --version
- Informationsinformationen werden ausgegeben.
rm – Dateien oder Verzeichnisse löschen
Mit dem Befehl rm können Dateien und Verzeichnisse gelöscht werden. Es gilt folgende Syntax:
rm [OPTION]... DATEI...
Es muss also zwingend ein Datei- oder Verzeichnisname angegeben werden. Es gibt folgende Optionen:
- -f oder --force
- Das Programm führt die Anweisung ohne vorige Nachfragen aus.
- -i oder --interactive
- Vor jeder Entfernung wird nachgefragt.
- -r oder -R oder --recursive
- Verzeichniseinträge werden rekursiv entfernt.
- -v oder --verbose
- Durchgeführte Tätigkeiten erklären.
Das folgende Beispiel entfernt alle Dateien mit der Erweiterung .exe und gibt Informationen am Bildschirm aus:
rm -v *.exe
Entfernen von »install.exe«
Entfernen von »jfw.exe«
Entfernen von »setup_pkx.exe«
Das folgende Beispiel löscht den Ordner test mit all seinen Einträgen:
rm -r test/
rmdir – leere Verzeichnisse löschen
Mit diesem Programm können leere Verzeichnisse gelöscht werden. Dieser Befehl verwendet folgende Syntax:
rmdir [OPTION]... VERZEICHNIS...
Als zwingendes Argument ist ein verzeichnis anzugeben. Folgende Optionen stehen zur Verfügung:
- --ignore-fail-on-non-empty
- Ignorieren von Fehlschlägen, denen ausschließlich nicht-leere Verzeichnisse zugrunde liegen.
- -p oder --parents
- Entfernen von VERZEICHNIS, dann versuchen, jede Verzeichniskomponente im Pfadnamen zu entfernen. Zum Beispiel ist »rmdir -p a/b/c« das gleiche wie »rmdir a/b/c a/b a«.
- -v oder --verbose
- Ausgabe einer Diagnose für jedes bearbeitete Verzeichnis.
cp – Dateien/Verzeichnisse kopieren
Mit dem Befehl cp können Dateien und Verzeichnisse kopiert werden. Es gilt folgende Syntax:
cp [OPTION]... QUELLE ZIEL
Der Befehl erwartet also zwei Argumente. Folgende Optionen sind verfügbar:
- -a oder --archive
- Genau wie -dpR.
- --backup[=KONTROLLE]
- Erzeugen einer Sicherung von existierenden Zieldateien.
- -b
- Wie --backup, akzeptiert aber kein Argument.
- -d oder --no-dereference
- nie symbolischen Verknüpfungen folgen.
- -f oder --force
- Wenn eine existierende Zieldatei nicht geöffnet werden kann wird sie gelöscht und es noch einmal versucht.
- -i oder --interactive
- Vor einem Überschreiben nachfragen.
- -H
- Symbolischen Verknüpfungen der Kommandozeile folgen.
- -l oder --link
- Verknüpfung auf Datei statt Kopie erstellen.
- -L oder --dereference
- Folge symbolischen Verknüpfungen immer.
- -p oder --preserve
- Datei-Attribute wenn möglich erhalten.
- --parents
- Quell-Pfad an VERZEICHNIS anhängen.
- --remove-destination
- Löschen jeder Zieldatei vor dem Versuch sie zu öffnen. (Im Kontrast zu --force)
- -R oder --recursive
- Rekursives Kopieren von Verzeichnissen.
- --strip-trailing-slashes
- Entfernen von folgenden Schrägstrichen von allen QUELLE Argumenten.
- -s oder --symbolic-link
- Erzeugen von symbolischen Verknüpfungen statt kopieren.
- -S SUFFIX oder --suffix=SUFFIX
- Überschreiben der normalen Anhänge für Sicherungen.
- --target-directory=VERZ
- Verschieben aller QUELLE Argumente in das Verzeichnis VERZ.
- -u oder --update
- Nur kopieren, wenn die QUELL-Datei neuer ist als die Zieldatei oder die Zieldatei nicht existiert.
- -v oder --verbose
- Durchgeführte Tätigkeiten erklären.
- -x oder --one-file-system
- In diesem Dateisystem verbleiben.
Das folgende Beispiel kopiert alle Dateien des Ordners /var/log/apache/ in das aktuelle Arbeitsverzeichnis des Benutzers. Unterverzeichnisse werden nicht kopiert:
cp /var/log/apache/* .
mv – Dateien/Verzeichnisse umbenennen/verschieben
Mit diesem Befehl können Dateien und Verzeichnisse umbenannt oder verschoben werden. Es gilt folgende Syntax:
mv [OPTION]... QUELLE ZIEL
Folgende Optionen sind möglich:
- --backup[=KONTROLLE]
- Anlegen von Sicherung vor Entfernen.
- -b
- Wie --backup, akzeptiert aber keine Argumente
- -f oder --force
- Existierende Ziele entfernen, nie fragen.
- -i oder --interactive
- Vor Überschreiben nachfragen.
- --strip-trailing-slashes
- Entfernen von Schrägstrichen vom Ende jedes QUELLE-Arguments.
- -S SUFFIX oder --suffix=SUFFIX
- Die normale Sicherungs-Erweiterung überschreiben.
- --target-directory=VERZ
- Verschieben aller Quellen in Verzeichnis VERZ.
- -u oder --update
- Nur ältere oder brandneue Dateien verschieben.
- -v oder --verbose
- Erklärung über Abläufe ausgeben.
- -V WORD oder --version-control=WORD
- Die normale Versionskontrolle überschreiben.
file – Dateityp ermitteln
Unter Linux hat die Dateierweiterung nicht zwingend etwas mit dem Typ einer Datei zu tun. Daher kann man mit dem Befehl file den Dateityp ermitteln. Hier ein paar Beispiele:
file ai.wav
ai.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 44100 Hz
file dvdaudioextractor.exe
dvdaudioextractor.exe: MS-DOS executable (EXE), OS/2 or MS Windows
file /lib/libcrypt-2.3.2.so
/lib/libcrypt-2.3.2.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), stripped
file fußball.ogg
fußball.ogg: Ogg data, Vorbis audio, stereo, 44100 Hz, ~96000 bps, created by: Xiph.Org libVorbis I (1.0)
file backup.sh
backup.sh: Bourne shell script text executable
Weitere Informationen zu den vorgestellten Befehlen findest du in den jeweiligen Manual- oder Info-Seiten. Diese lassen sich mit den Kommandos “man Befehl” oder “info Befehl” aufrufen.
Datum der Veröffentlichung: Samstag, 25.11.2006