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.
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 .
Erstelle eine backup-Kopie von science.txt indem du eine Kopie science.bak erstellst.
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.
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
Erstelle mit mkdir ein Verzeichnis temp. Lösche es anschliessend wieder mit rmdir.
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).
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 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.
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 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?
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 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.
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)
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 |