Linux Shell – Dateien und Dateisystem

Der erste Blog hier befasst sich mit den ersten Grundlagen die man braucht, um sich in einer Linux Shell auf einem Rechner bewegen zu können: den Dateioperationen.

Eines noch vorweg. Bei Linux können sogenannte Pipes verwendet werden. D.h. man kann die Ausgabe eines Befehls von einem nachfolgenden weiterverarbeiten lassen. Z.B. bei einem Befehl mit einer langen Ausgabe nach bestimmten Worten filtern. Beispiele folgen weiter unten.

Auflisten des Verzeichnis-Inhalts mit “ls”
Dieser Befehl zeigt in Inhalt des aktuellen Verzeichnisses. Wer mit der Dos-Shell vetraut ist, kennt diesen Befehl noch als “dir”.
Um auch versteckte Dateien sichtbar zu machen, muss man “ls -a” eingeben. Mit der Option “-l” wird hingegen eine Liste erzeugt, in der für jede Datei noch weitere Details aufgelistet werden.
Und hier nun ein Beispiel für Pipes: “ls | grep <suchwort>
Den Befehl “grep” sollte man sich wirklich einprägen. Er ist extrem hilfreich und lässt sich bei allen Befehlen die eine große Ausgabe erzeugen gut einsetzen.
Das oben angeführte Beispiel zeigt nur die Dateien und Ordner an, deren Name das <suchwort> enthält.

Wechseln des Verzeichnisses mit “cd”
Allen die Dos kennen ist das hier ein Begriff. Allerdings sind die Pfade unter Linux anders, was hier zu beachten ist.
cd ./musik” wechselt in den Ordner “musik” im aktuellen Verzeichnis. (Man könnte auch “cd musik” eingeben, es ist aber immer zu empfehlen in einem solchen Fall das “./” voran zu stellen.)
Achtung: Linux ist case-sensitive. D.h. es ist auf Groß- und Kleinschreibung zu achten. Der Ordner könnte also nicht “Musik” heißen.
cd ../” wechselt in das übergeordnete Verzeichnis. Hinter das “../” ließe sich auch schon ein Verzeichnis anhängen, das sich dort befindet.

Ein Verzeichnis erstellen mit “mkdir”
Ist eigentlich selbsterklährend. Dem Befehl kann einfach der Name des Verzeichnisses übergeben werden (“test“), der relative Pfad (“./user/test“) oder der absolute Pfad (“/home/user/test“).

Dateien kopieren mit “cp”
Der Syntax ist “cp <quelle> <ziel>”. Diesen Befehl sollte man oft benutzen um Backups von wichtigen Konfigurations-Dateien zu erstellen, die man ändern möchte.
Es ist auch anzuraten hier mit möglichst vollständigen Pfadangaben zu arbeiten und zumindest ein “./” vor eine Datei zu stellen, die im aktuellen Ordner ist. Es können Wildcards verwendet werden, jedoch muss die Dateiendung angegeben werden. Bei einer Datei “blog-03022008-v3.tar.gz” muss man also “blog*.tar.gz” schreiben. Das gilt für alle Befehle unter Linux.

Löschen einer Datei / eines Ordners mit “rm”
Achtung, das Löschen ist endgültig. Bitte auch hier auf die Pfade achten, man ärgert sich sonst hinterher.
Das Löschen eines Verzeichnisses geschieht mit “rm -r <verzeichnis>“. Es ist dabei egal ob der Ordner noch voll ist.

Umbenennen mit “mv”
Wird wie “cp” verwendet. Also in diesem Fall “mv <alt> <neu>”.

Spezialbefehl zum Kopieren von Dateien “dd”
Dieser Befehl kann wie “cp” benutzt werden, er bietet aber viel mehr Optionen. So lassen sich Dateien z.B. auch konvertieren.
Meist benutzt man “dd” im normalen Gebrauch nicht. Durch die Beschaffenheit von Linux lassen sich damit aber Dinge machen, die nicht so augenscheinlich sind.
So sind die Hardware-Schnittstellen unter Linux auch nur Dateien, die unter “/dev” zu finden sind.
Somit lässt sich z.B. ein *.iso Image einer CD oder DVD im Laufwerk erstellen. Der Befehl hierfür lautet:
dd if=/dev/hdc of=/home/user/iso/linux.iso
Dabei steht “if=” für die Eingabe, also das Laufwerk (Achtung: kann bei jedem System anders heißen!) und “of=” für die Ziel-Datei.
Man bekommt keine Rückmeldung über den Fortschritt. Bei einer DVD kann der Vorgang einige Zeit dauern.
Die erstellten *.iso Images können dann z.B. als Paketquelle eingebunden werden (bei Suse) oder man kann sie direkt in das Dateisystem einhängen. (siehe unten)

In das Dateisystem einhängen mit “mount”
Dies stellt einen Eingriff in das System dar, weshalb man für diesen Befehl Super-User-Rechte benötigt. Daher sollte der Syntax für einen normalen Benutzer eher “sudo mount <quelle> <mountpunkt>” heißen.
Bei den modernen Distributionen braucht man den mount Befehl nur noch sehr selten, da Wechseldatenträger automatisch eingehängt werden, wie man es aus Windows kennt. Ich selber nutze den Befehl nur um *.iso Dateien einzubinden oder zu Testzwecken. Unter Windows benötigt man dafür spezielle Software, die einem dann virtuelle CD-Laufwerke bereit stellt. Unter Linux jedoch, kann man “out of the box” *iso Dateien erstellen und einbinden.
Bevor man jedoch damit beginnt, sollte man sich einen Ordner erstellen der als Mountpunkt dient, entweder im eigenen Home-Verzeichnis oder im Mount-Verzeichnis der Distribution. ( /mnt oder /media)
Ein Mountpunkt ist also ein Verzeichnis, das später den Inhalt des eingehängten Mediums enthält.
Ebenfalls zu beachten ist, dass “mount” nicht dauerhaft ist. Wird das System neu gestartet, geht der Mountpunkt verloren.
Um also ein Gerät zu mounten, gibt man folgendes ein:
mount /dev/hdc /media/cd
Ist man nicht als root eingeloggt, muss man das “sudo” voran stellen. Um eine *.iso Datei  einzuhängen sind zusätzliche Optionen nötig:
mount -o loop /home/user/iso/linux.iso /media/linux-cd

Um ein Medium dauerhaft einzubinden, muss es in der fstab-Datei eingebunden werden. Darauf werde ich ein anderes Mal eingehen.

Aus dem Dateisystem aushängen mit “umount”
Ein im System eingehägtes Medium lässt sich mit diesem Befehl aushängen. Das gilt für alle Medien, unabhängig davon ob sie in der fstab-Datei oder per “mount” Befehl eingebunden wurden. Also Vorsicht, man kann diesen Befehl nur mit Root-Rechten ausführen und es gibt keine Sicherheits-Abfrage.
Der Syntax ist einfach und lautet “umount <mountpunkt>“. Also wenn man das Beispiel von der eingehägten *.iso Datei nimmt, lautet der Befehl: “umount /media/linux-cd“.
Also normaler Benutzer darf man das “sudo” vor dem Befehl nicht vergessen.

Zum Schluss noch der Hinweis, dass man für alle Befehle eine Hilfe aufrufen kann, wenn man den Parameter “– help” anhängt. Dort findet man auch eine Liste mit allen Optionen die ein Befehl bietet und welcher Syntax erforderlich ist. Im Zweifelsfall sollte man also immer zuerst diese Option wählen, bevor man die Sicherheit des Systems gefährdet.
Wer mit dem Umgang der Befehle noch nicht sicher ist, sollte sich immer nur innerhalb des eigenen Home-Verzeichnisses austoben. Ein hantieren mit “sudo” und in System-Verzeichnissen kann schnell schlimme Folgen haben.

Es gibt natürlich noch mehr Dateioperationen unter Linux. Dies soll nur ein erster Einblick sein.
Ich werde in den folgenden Beiträgen zunächst auf weitere Grundlagen eingehen.
Bitte betrachtet dies daher als lose Sammlung.

About these ads
This entry was posted in Linux and tagged , , , , , , , , , , , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s