Linux-Praxisbuch/ Dateien unter Linux
Zurück zum Linux-Praxisbuch
Dieses Kapitel führt im Wesentlichen in die wichtigsten Kommandos für den Umgang mit Dateien ein. Nach einigen einleitenden Bemerkungen wird u.a. erläutert, wie Dateien erzeugt oder umbenannt werden, wie man ihren Inhalt anzeigt und einiges mehr.
Allgemeines
[Bearbeiten]Groß- und Kleinschreibung sind von Bedeutung
[Bearbeiten]Im Unterschied zu Windows wird bei Linux zwischen Groß- und Kleinschreibung unterschieden. Daher ist die Datei test nicht identisch mit der Datei Test. Was am Anfang bei Umsteigern womöglich zur Verwirrung beiträgt, erweist sich nach einer Einarbeitungszeit häufig als eine praktische Eigenschaft.
Der folgende Einzeiler wandelt alle Dateinamen im aktuellen Verzeichnis in Kleinbuchstaben um:
for i in * ; do mv -i $i $(echo $i | tr [A-ZÄÖÜ] [a-zäöü]) ; done
Mit dem ß hat der Einzeiler noch Probleme. (Warum? Es gibt kein großes ß.)
Länge von Dateinamen
[Bearbeiten]Ein Dateiname darf 255 Zeichen lang sein. Damit sollte es jedem gelingen, seine Dokumente aussagekräftig zu benennen. Wie die Erfahrung zeigt, sind Dateinamen in der Praxis selten auch nur annähernd so lang.
Dateiendungen
[Bearbeiten]Eine Datei muss unter Linux keine bestimmte Endung haben, wie dies bei Windows der Fall ist (beispiel.exe oder beispiel.txt). Auch dies verwirrt am Anfang den Umsteiger, doch gewöhnt man sich auch daran.
Die meisten Dateien haben aber eine Endung, nicht ungewöhnlich sind auch mehrere - durch Punkte getrennte - Endungen (beispiel.tar.bz2).
Kommandos für den Umgang mit Dateien
[Bearbeiten]touch
[Bearbeiten]Das Kommando touch legt eine neue Datei mit der Größe 0 an, sofern noch keine Datei gleichen Namens existiert. Existiert die Datei schon, so ändert touch das Datum der letzten Änderung.
user@linux ~/testdir$ ls user@linux ~/testdir$ touch test1 user@linux ~/testdir$ ls -l insgesamt 0 -rw-r--r-- 1 user users 0 Mai 29 17:34 test1 user@linux ~/testdir$ touch profile user@linux ~/testdir$ ls -l insgesamt 0 -rw-r--r-- 1 user users 335 Mai 29 17:36 profile -rw-r--r-- 1 user users 0 Mai 29 17:34 test1
cat
[Bearbeiten]Das Kommando cat liest eine oder mehrere Dateien und gibt diese auf der Standardausgabe aus. Die Standardausgabe ist normalerweise das (evtl. virtuelle) Terminal, in welchem sich auch die aktuelle Shell befindet.
user@linux ~/testdir$ ls test1 user@linux ~/testdir$ cat test1 Dies ist Testdatei 1.
cat kann aber auch Daten von der Standardeingabe (normalerweise ist dies die Tastatur) lesen und diese in eine Datei schreiben. Das Zeichen > bewirkt eine Umlenkung des Standardausgabekanals und schreibt alles, was man über die Tastatur eingibt, in die Datei test2. Der Befehl 'cat' kommt von dem englischen Wort 'concatenate', was 'verknüpfen' oder 'verketten' heißt.
user@linux ~/testdir$ cat > test2 Dies ist Testdatei 2.
(Die Eingabe wird mit Strg+D beendet) user@linux ~/testdir$ cat test2 Dies ist Testdatei 2.
Man kann den Operator > aber auch dazu verwenden, mehrere Dateien in eine einzige umzuleiten. Die beiden Zeilen, die von cat ausgegeben werden, erscheinen so nicht auf dem Bildschirm, sondern werden in die Datei test3 geschrieben.
user@linux ~/testdir$ cat test1 test2 > test3 user@linux ~/testdir$ cat test3 Dies ist Testdatei 1. Dies ist Testdatei 2.
cp
[Bearbeiten]Das Kommando cp (copy) kopiert Dateien und Verzeichnisse. Wenn nur zwei Dateinamen als Parameter angegeben werden, wird die erstgenannte Datei in die zweite kopiert. Werden mehrere angegeben, nimmt cp an, dass die letzte Angabe der Name eines Verzeichnisses ist und kopiert alle angegebenen Dateien in dieses Verzeichnis, falls es existiert.
cp hat eine Menge Optionen, die in der Manpage zu finden sind. Hier sind die wichtigsten:
cp -i: Vor dem Überschreiben von Zieldateien nachfragen. cp -d: Symbolische Links als solche kopieren, nicht die Dateien, auf die verwiesen wird. cp -R: Rekursiv kopieren, d. h. auch Unterverzeichnisse.
Das folgende Beispiel kopiert die Datei test1 nach Datei test5:
user@linux ~/testdir$ ls test1 user@linux ~/testdir$ cp test1 test5 user@linux ~/testdir$ ls test1 test5
Das folgende Beispiel kopiert die Dateien test1 test2 test3 in das Verzeichnis test4:
user@linux ~/testdir$ ls -lR .: insgesamt 12 -rw-r--r-- 1 user users 22 Mai 29 17:56 test1 -rw-r--r-- 1 user users 22 Mai 29 17:59 test2 -rw-r--r-- 1 user users 44 Mai 29 18:00 test3 drwxr-xr-x 2 user users 48 Mai 29 18:11 test4
./test4: insgesamt 0 user@linux ~/testdir$ cp test1 test2 test3 test4 user@linux ~/testdir$ ls -lR .: insgesamt 12 -rw-r--r-- 1 user users 22 Mai 29 17:56 test1 -rw-r--r-- 1 user users 22 Mai 29 17:59 test2 -rw-r--r-- 1 user users 44 Mai 29 18:00 test3 drwxr-xr-x 2 user users 120 Mai 29 18:11 test4
./test4: insgesamt 12 -rw-r--r-- 1 user users 22 Mai 29 18:11 test1 -rw-r--r-- 1 user users 22 Mai 29 18:11 test2 -rw-r--r-- 1 user users 44 Mai 29 18:11 test3
Siehe auch Linux-Praxisbuch:_cp
mv
[Bearbeiten]Das Kommando mv (move) verschiebt Dateien und Verzeichnisse. Für die Behandlung der angegebenen Dateien und Verzeichnisse gilt das bei cp gesagte. mv wird auch zum Umbenennen von Dateien und Verzeichnissen verwendet.
mv -i: Vor dem Überschreiben von Zieldateien nachfragen.
Hierzu ein Beispiel:
user@linux ~/testdir$ ls test1 user@linux ~/testdir$ mv test1 datei1 user@linux ~/testdir$ ls datei1
Die Datei test1 wurde in datei1 umbenannt.
Siehe auch Linux-Praxisbuch:_mv
rm
[Bearbeiten]Siehe Linux-Praxisbuch:_rm
Jokerzeichen
[Bearbeiten]Um Gruppen von Dateien bearbeiten zu können, benötigt man die sogenannten Jokerzeichen. Diese können z.B. verwendet werden, um eine Dateiauswahl zu treffen.
Man unterscheidet folgende Jokerzeichen:
? genau ein beliebiges Zeichen * beliebig viele Zeichen [abc] genau eines der angegebenen Zeichen [a-d] ein Zeichen aus dem angegebenen Bereich [!abc] keines des angegebenen Zeichen *.html würde alle html Dateien auswählen *buch* würde alle Dateien auswählen, in deren Namen "buch" vorkommt
Durch die Angabe mit eckigen Klammern kann die Auswahl weiter eingeschränkt werden.
more und less
[Bearbeiten]more und less sind sogenannte Pager (engl. to page: weiterblättern). Sie geben den Inhalt einer Datei auf dem Bildschirm aus und halten jeweils nach einer Bildschirmseite an. less ist das leistungsfähigere Programm und kann alles, was more auch kann (engl. "less is more": "Weniger ist mehr.").
Beide Programme können mit der Taste q beendet werden. Die Leertaste blättert seitenweise und die Returntaste zeilenweise vorwärts.
Siehe auch Linux-Praxisbuch:_less
Weitere Informationen zu diesen Programmen findet man in der jeweiligen Manpage.
find
[Bearbeiten]Suchen unter Linux mit dem Befehl find ist komfortabel aber auch etwas kompliziert. Will man das ganze Filesystem nach einer Datei Test durchsuchen, dann geht das am einfachsten mit
find / -name Test 2>/dev/null
Der Abschnitt 2>/dev/null wird benötigt, damit "Permission denied"-Meldungen nicht am Bildschirm ausgegeben werden. Wenn man find als root ausführt, wird dies nicht benötigt.
Mit / wird bestimmt, dass die Suche im Rootverzeichnis beginnt und von dort aus alle Unterverzeichnisse durchsucht werden, mit -name wird angegeben, daß nach einem Namen (Dateinamen) gesucht wird.
Mit . (= Punkt) wird das aktuelle Verzeichnis bezeichnet .
Der Suchvorgang kann mit Strg + C abgebrochen werden.
Siehe auch Linux-Praxisbuch:_find
file
[Bearbeiten]Das Kommando file stellt fest, um was für einen Dateityp es sich handelt, da unter Linux im Gegensatz zu Windows der Dateityp ja nicht an der Endung zu erkennen ist. Dazu ein paar Beispiele:
user@linux ~/testdir$ file test test: empty user@linux ~/testdir$ ls -l insgesamt 0 -rw-r--r-- 1 user users 0 Mai 29 20:10 test user@linux ~$ file testdir testdir: directory user@linux ~$ file "übersicht texte" übersicht texte: ISO-8859 text user@linux ~/selflinux$ file slcompile slcompile: Bourne-Again shell script text user@linux ~/daten1/c++$ file BSP4 BSP4: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), not stripped user@linux ~/daten1/c++$ file BSP4.cpp BSP4.cpp: ASCII C program text user@linux ~/daten1/c++$ file BSP4.o BSP4.o: ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not stripped
Diese Daten bezieht das Kommando dabei aus der Datei /etc/magic. Ausführliche Information dazu findet sich in man file und man magic.