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

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

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.

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

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

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.

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

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.