Operation Manual

buch” 2014/9/6 18:56 page 138 #134
3 Arbeiten im Terminal
Textdateien inhaltlich durchsuchen
find berücksichtigt nur formale Kriterien, nicht aber den Inhalt von Dateien. Wenn
Sie Textdateien suchen, die ein bestimmtes Schlüsselwort enthalten, müssen Sie
find
und grep miteinander kombinieren. Das ist oft praktisch, die Syntax ist aber leider
umständlich: In
find können Sie mit -exec ein Kommando angeben, das find für jedes
Ergebnis ausführen soll. Im Weiteren wird
{} durch den gefundenen Dateinamen
ersetzt.
\; gibt das Ende des Kommandos an. Die nachfolgende Option -print ist erfor-
derlich, weil diese sonst standardmäßig aktive Option durch
-exec deaktiviert wurde.
Bei
grep ist wiederum die Option -q erforderlich, damit dieses keine Ausgaben durch-
führt und lediglich
find meldet, ob die gewünschte Datei gefunden wurde oder nicht.
Das folgende Kommando durchsucht das aktuelle Verzeichnis und alle Unterverzeich-
nisse nach
*.c-Dateien, in denen die Zeichenkette 'abc' vorkommt, und gibt die
Dateinamen aus:
find . - type f -name '*. c' - exec grep -q abc {} \; -print
Dateien kopieren, verschieben und löschen
cp kopiert Dateien. Dabei gibt es zwei grundsätzliche Syntaxvarianten, die sich
dadurch unterscheiden, ob der letzte Parameter ein Verzeichnis ist oder nicht:
cp datei1 datei2 erstellt eine Kopie von datei1 und gibt ihr den neuen Namen
datei2.
cp d1 d2 d3 v kopiert die Dateien d1 bis d3 in das Verzeichnis v. Bei dieser Variante
sind beliebig viele Parameter erlaubt. Der letzte Parameter muss ein Verzeichnis
sein, alle anderen Dateien.
cp kann auch ganze Verzeichnisse inklusive ihres Inhalts kopieren. Dazu müssen Sie
aber die Option
-r (recursive)oder-a (archive) angeben. Der Unterschied zwischen
den beiden Optionen besteht darin, dass sich bei der ersten Variante der Besitzer der
Dateien, der Zeitpunkt der letzten Änderung etc. verändern, während diese Metada-
ten bei der zweiten Variante erhalten bleiben. Das folgende Kommando erstellt eine
komplette Sic herheitskopie aller Dateien und Verzeichnisse in
/etc:
sudo cp -a /etc / / root/etc- bak
Um Dateien umzubenennen bzw. in ein anderes Verzeichnis zu verschieben, verwen-
den Sie das Kommando
mv.DieGrundsyntaxistwiebeicp:
mv altername neuername
mv datei1 datei2 datei3 verzeichnis
138
buch” 2014/9/6 18:56 page 139 #135
3
3.7 Verzeichnisse und Dateien
Zum Löschen von Dateien verwenden Sie das Kommando rm. Standardmäßig kann rm
nur Dateien löschen. Wenn Sie auch Verzeichnisse samt ihrem Inhalt löschen möch-
ten, müssen Sie die Option
-r angeben:
rm datei. bak
rm -r backup- verzeichnis
Mit touch erzeugen Sie eine neue, leere Datei. Sollte die Datei bereits existieren, dann
lässt
touch die Datei unverändert, aktualisiert aber die gespeicherte Zeit der letzten
Änderung.
touch neue - leere - datei
Links
Links sind Querverweise auf Dateien oder Verzeichnisse. Unter Linux gibt es zwei
Arten von Links: feste Links und symbolische Links, im Englischen also hard links
und soft/symbolic links. Feste Links werden dateisystemintern effizienter gespeichert,
sind aber schwerer zu handhaben. Symbolische Links sind nicht nur klarer nach-
zuvollziehen, sie haben zudem den Vorteil, dass sie von einem Dateisystem in ein
anderes zeigen dürfen. Im manuellen Betrieb sind symbolische Links daher vorzuzie-
hen. Backup-Systeme, die möglicherweise Tausende von Links erstellen, verwenden
dagegen zumeist feste Links.
Im
/etc-Verzeichnis gibt es unzählige symbolische Links, wovon Sie sich mit find
rasch überzeugen können:
find / etc - type l
Um selbst symbolische Links einzurichten, verwenden Sie das Kommando ln quelle
ziel
. Es erstellt standardmäßig feste Links, mit der Option -s symbolische Links. Am
einfachsten sind Links anhand eines Beispiels zu verstehen: Die folgenden K omman-
dos erzeugen zuerst das Verzeichnis
test und dann darin mit touch die leere Datei
abc.Mitln -s wird nun ein symbolischer Link von abc auf xyz erzeugt. ls -l zeigt den
Link anschaulich an:
mkdir test
cd test
touch abc
ln -s abc xyz
ls -l test
-rw -r--r -- 1 pi pi 0 Jun 14 13:51 abc
lrwxrwxrwx 1 pi pi 8 Jun 14 13:51 xyz -> abc
cd ..
rm -r test
139