Handhabung von Dateien

Block 1

Tipp: Beim Arbeiten in der Shell, können dir Auto-Completion und history gute Dienste leisten. Wenn du dich nicht mehr daran erinnerst, solltest du das jetzt in der Einführung nachlesen.

2.1 Kopieren

cp (copy)

cp file1 file2 erstellt eine Kopie der Datei file1 im aktiven Verzeichnis und nennt sie file2

Wir nehmen nun eine Datei aus einem öffentlichen Ordner und kopieren sie mit dem cp-Befehl in dein unixeinfuehrung-Verzeichnis.

Wechsle als erstes mit cd in dein unixeinfuehrung-Verzeichnis.

cd ~/unixeinfuehrung

Tippe dann

cp ~nchiapol/www/bsp-kurs/science.txt .

Hinweise:

 

Aufgabe 2a

Erstelle eine backup-Kopie von science.txt indem du eine Kopie science.bak erstellst.

2.2 Verschieben

mv (move)

mv file1 file2 verschiebt file1 nach file2 (oder benennt um).

Um eine Datei von einem Ort an einen anderen zu verschieben, verwendest du den Befehl mv. Da dieser Befehl verschiebt, hast du am Ende also immer noch bloss eine Datei, und nicht zwei wie beim Kopieren.

mv kannst du auch verwenden um eine Datei umzubenennen. Du verschiebst dann die Datei innerhalb eines Verzeichnisses zu einem neuen Namen.

Wir verschieben nun die Datei science.bak in dein backup-Verzeichnis.

Wechsle als erstes nach unixeinfuehrung (ich hoffe du erinnerst dich noch wie das geht). Im unixeinfuehrung-Verzeichnis, tippst du dann

mv science.bak backups/

Tippe ls und ls backups um zu sehen ob es geklappt hat.

Hinweis: Kontrolliere das auch mit dem graphischen Dateibrowser. Evtl. musst du [F5] drücken um die Anzeige zu aktualisieren.

2.3 Löschen

rm (remove), rmdir (remove directory)

Um eine Datei zu löschen, verwendest du rm. Als Beispiel erstellen wir eine Kopie von science.txt und löschen diese anschliessend.

Innerhalb von unixeinfuehrung, tippe

cp science.txt tempfile.txt ls rm tempfile.txt ls

Die beiden ls sind da, damit du siehst was passiert ist.

Du kannst rmdir verwenden um einen Ordner zu löschen. Dies klappt aber nur, wenn der Ordner leer ist. Versuche backups zu löschen. Das wird nicht klappen, denn Unix lässt dich ein nicht-leeres Verzeichnis nicht einfach so löschen

 

Exercise 2b

Erstelle mit mkdir ein Verzeichnis temp. Lösche es anschliessend wieder mit rmdir.

2.4 Den Inhalt einer Datei anzeigen

clear (clear screen)

Bevor du mit dem nächsten Abschnitt beginnst, möchtest du wahrscheinlich dein Fenster leeren. Das hilft, zu sehen welcher Output zu den nächsten Befehlen gehört.

In der Shell, tippe

clear

Dies verschiebt die Prompt an den oberen Rand des Fensters. Die meisten Terminal-Emulatoren speichern mehr Zeilen als auf dem Bildschirm sichtbar sind. Wenn du scrollst kannst du die alten Zeilen immer noch erreichen. Verwende die Maus oder [Shift]+[Up] ([Up] meint die Navigationstaste mit dem Pfeil nach oben).

 

cat (concatenate)

Den Befehl cat kannst du verwenden um den Inhalt einer Datei im Terminal anzeigen zu lassen. Tippe:

cat science.txt

Wie du siehst hat nicht der gesamte Inhalt der Datei im Fenster platz. Du kannst ihn also nicht einfach so lesen. Natürlich könntest du wie oben beschrieben nach oben scrollen. Doch auch diese Methode stösst bei sehr langen Dateien an ihre Grenzen.

 

less

less ist ein Pager. Das Programm unterteilt den Inhalt einer Datei in Seiten, so dass du eine Seite nach der Anderen lesen kannst. less bietet aber noch viele weitere nützliche Fähigkeiten. Tippe

less science.txt

Mit [space-bar] kannst du durch die Datei blättern. Du kannst aber auch mit [up] und [down] zeilen-weise navigieren und auch [PageUp], [PageDown], [Home], [End] funktionieren.

Mit [q] (quit) kannst du less wieder beenden.

Du siehst, less ist für grössere Dateien viel praktischer als cat.

 

head

Mit head kannst du die ersten 10 Zeilen einer Datei ausgeben lassen.

Leere zuerst wieder das Fenster deiner Shell. Tippe dann

head science.txt

und dann

head -5 science.txt

Welchen Effekt hat die Option -5?

 

tail

tail funktioniert wie head, aber für das Ende der Datei.

Leere dein Fenster und tippe

tail science.txt

Wie lässt du die letzten 15 Zeilen ausgeben?

 

2.5 Den Inhalt einer Datei durchsuchen

Einfache Suche mit less

Eine besonders nützliche Funktion von less ist die Suche. Lass uns als Beispiel in der Datei science.txt nach dem Wort science suchen. Öffne zuerst science.txt mit less. Tippe dann /science [Enter]. Wie du siehst leitet / eine Suche ein. Less markiert alle Treffer. Mit [n] kannst du zum nächsten, mit [Shift]+[n] zum vorherigen Treffer springen.

grep

grep ist eines der vielen nützlichen Standard-Programmen von Unix-Systemen. Es durchsucht Dateien nach einem bestimmten Wort oder Pattern (Muster). Leere deinen Bildschirm und tippe

grep science science.txt

Wie du siehst hat grep jede Zeile ausgegeben, auf der das Wort science vorkommt.

Oder nicht?

Versuche

grep Science science.txt

grep ist case-sensitive, der Befehl unterscheidet zwischen Gross- und Kleinbuchstaben. Science und science sind also zwei verschiedene Dinge.

Um ein Wort unabhängig der Schreibweise zu suchen, kannst du die -i Option verwenden:

grep -i science science.txt

Um nach einem Pattern zu suchen, das Leer- oder sonstige Sonderzeichen enthält, musst du deine Suche in (einfache) Anführungszeichen setzen. Um zum Beispiel nach spinning top zu suchen, tippe

grep -i 'spinning top' science.txt

Ein paar weitere nützliche Options für grep sind:

-v zeige die Zeilen, die das Pattern NICHT enthalten
-n setze bei der Ausgabe vor jede Trefferzeile ihre Zeilennummer
-c zähle die Treffer und zeige nur das Resultat an

Teste die Optionen und schau was mit dem Resultat passiert. Du kannst auch mehrere Optionen auf einmal angeben. Was macht dieses Beispiel:

grep -ivc science science.txt

Hinweis: Neben grep gibt es auch pdfgrep. pdfgrep funktioniert wie grep bloss für PDF- statt Textdateien. Zusammen mit Wildecards (vgl. später) sind die beiden Programm sehr nützlich.

 

wc (word count)

Ein weiteres nützliches Werkzeug ist wc. Um die Wörter in science.txt zu zählen, tippe

wc -w science.txt

Um die Zeilen zu zählen, tippe

wc -l science.txt

Hast du eine Vermutung was wc ohne Optionen ausgibt? (Du musst nicht nachzählen)

Zusammenfassung

cp file1 file2 kopiert file1 und nennt die Kopie file2
mv file1 file2 Verschiebt file1 nach file2 (oder nennt eine Datei um)
rm file löscht eine Datei
rmdir directory löscht ein Verzeichnis
cat file Zeigt den Inhalt von file
less file Zeig den Inhalt einer Datei, eine Seite aufs Mal
head -N file zeigt die ersten N Zeilen einer Datei
tail -N file zeigt die letzten N Zeilen einer Datei
grep 'keyword' file Sucht in file nach keyword
pdfgrep 'keyword' pdf-file Sucht in pdf-file nach keyword
wc file Zählt die Zeilen/Wörter/Zeichen in file