Vorlesungsskript 05
Unix-Cheatsheet
Dies ist eine kompakte Übersicht über die wichtigsten Kommandos und anderes,
das man auf der Unix-Kommandozeile braucht. Die Kommandos werden in Form von
Beispielen vorgestellt, wobei Wörter in Großbuchstaben wie z.B. FILE1
oder FILE2
Beispiel-Argumente sind, die
Sie beim Gebrauch der Kommandos durch Ihre eigenen Dateinamen
oder andere Argumente ersetzen sollten.
Manpages
Vorweg: Viele Kommandos haben viel mehr Optionen, als wir hier vorstellen
können. Die wichtigste Quelle für Informationen darüber sind die manual
pages (kurz manpages), die Sie direkt von der
Kommandozeile aus abrufen können. Dazu erteilen Sie das Kommando man PAGE
, wobei PAGE
z.B.
für den Namen eines Kommandos steht. Zum Beispiel: man
ls
, oder auch: man man
. Es wird dann eine
Manpage mit Informationen zu dem angegebenen Kommando angezeigt.
Auf Manpages können Sie mit den Pfeiltasten hoch und runter scrollen. Nach
einem Begriff können Sie suchen, indem Sie /
tippen,
den Begriff eingeben und Enter drücken. Mit q
verlassen Sie die Manpage und kehren zur Kommandozeile zurück.
Wichtige Programme und Kommandos – Dateisystem
cd DIR
- Wechselt in das Verzeichnis
DIR
.DIR
kann als absoluter Pfad oder als relativer Pfad (relativ zum aktuellen Arbeitsverzeichnis) angegeben werden. cd -
- Wechselt zurück in Ihr vorheriges Arbeitsverzeichnis.
cd ..
- Wechselt in das Verzeichnis, von dem das aktuelle Arbeitsverzeichnis ein Unterverzeichnis ist, geht also eine Ebene höher in der Hierarchie.
cd
- Ohne Argument wechselt
cd
in Ihr Home-Verzeichnis, das normalerweise den absoluten Pfad/home/$USER
hat, wobei$USER
für Ihren Benutzernamen steht. Hier legt man normalerweise alle persönlichen Dateien ab. Beachten Sie jedoch, dass im PC-Pool das Home-Verzeichnis bei jedem Neustart gelöscht wird. ls
- Zeigt den Inhalt des aktuellen Arbeitsverzeichnisses an.
ls -l
- Zeigt den Inhalt des aktuellen Arbeitsverzeichnisses detailiert an.
ls -a
- Zeigt den Inhalt des aktuellen Arbeitsverzeichnisses einschließlich versteckter Dateien und Verzeichnisse an.
ls -la
- Zeigt den Inhalt des aktuellen Arbeitsverzeichnisses detailiert einschließlich versteckter Dateien und Verzeichnisse an.
ls DIR
- Zeigt den Inhalt des Verzeichnises
DIR
an. ls -l DIR
- Zeigt den Inhalt des Verzeichnises
DIR
detailiert an. ls -la DIR
- Zeigt den Inhalt des Verzeichnises
DIR
detailiert einschließlich versteckter Dateien und Verzeichnisse an. ls -l FILE1
- Zeigt Details zur Datei
FILE1
an. mkdir DIR
- Erstelt ein neues Verzeichnis mit dem
Pfad
DIR
. touch FILE
- Erstelt eine leere Datei
FILE
. Wenn die Datei bereits existiert, wird lediglich ihr Bearbeitungsdatum aktualisiert. cp FILE1 FILE2
- Erstellt eine Kopie der Datei
FILE1
mit dem PfadFILE2
. cp -r DIR1 DIR2
- Erstellt das Verzeichnis
DIR2
als Kopie des VerzeichnissesDIR1
, einschließlich seines ganzen Inhaltes. mv FILE1 FILE2
- Benennt die Datei oder das Verzeichnis
FILE1
um und/oder verschiebt sie/es in ein anderes Oberverzeichnis, sodassFILE2
ihr/sein neuer Pfad wird. rm FILE
- Löscht die Datei
FILE
. Das ist unwiderruflich, also Vorsicht! rm -rf DIR
- Löscht das Verzeichnis
DIR
und seinen ganzen Inhalt. Das ist unwiderruflich, also Vorsicht!
Absolute und relative Pfade
Jedes Verzeichnis und jede Datei auf dem Computer hat einen absoluten Pfad.
Das oberste Verzeichnis, das sogenannte Wurzelverzeichnis (engl.
root directory), hat zum Beispiel den Pfad /
. Sein Unterzeichnis mit dem Namen home
hat den absoluten Pfad /home
.
Darin befindet sich auf meinem Laptop mein Homeverzeichnis; mein Benutzername
ist ke
, also hat mein Homeverzeichnis den absoluten
Pfad /home/ke
. In meinem Homeverzeichnis habe ich
wiederum viele Unterverzeichnisse, eins davon heißt python
und hat natürlich den absoluten Pfad /home/ke/python
. Darin liegt u.a. eine Datei mit dem Namen
notes.txt
, deren absoluter Pfad ist also /home/ke/python/notes.txt
.
Hier sind die absoluten Pfade von ein paar wichtigen Verzeichnissen, die es auf jedem Ubuntu-System gibt:
/
- Das Wurzelverzeichnis. Oberstes Verzeichnis. Ist als einziges Verzeichnis kein Unterverzeichnis von irgendeinem anderen Verzeichnis.
/home
- Hierin liegen alle Benutzerverzeichnisse.
/media
- Hier liegen externe Datenträger wie z.B. USB-Sticks.
/usr/bin
- Hier liegen die meisten Standardprogramme.
Meistens arbeiten wir aber mit relativen Pfaden. Relative Pfade
beginnen nicht im Wurzelverzeichnis, sondern im aktuellen Arbeitsverzeichnis.
Wenn ich mich also in meinem Homeverzeichnis befinde, steht der
relative Pfad python
für das Verzeichnis
namens python
darin, und der relative Pfad
python/notes.txt
steht für die Datei namens
notes.txt
in ebenjenem Verzeichnis.
Zwei spezielle Pfade sind .
und ..
. .
steht für das aktuelle Verzeichnis; ..
für das ihm übergeordnete Verzeichnis. Es sind sozusagen
Abkürzungen; man kann sie z.B. Programmen als Argumente
übergeben, die Pfade als Argumente erwarten. So zeigt ls ..
den Inhalt des dem
Arbeitsverzeichnis übergeordneten Verzeichnisses an. Sie lassen
sich aber auch als einzelne Komponenten innerhalb von
Pfaden verwenden. Zum Beispiel steht der absolute Pfad
/home/ke/..
für dasselbe
Verzeichnis wie /home
. Und
wenn ich mich im Verzeichnis /home/ke/scratch
befinde, erreiche
ich mit dem relativen Pfad ../python/notes.txt
dieselbe Datei
wie mit dem absoluten Pfad /home/ke/python/notes.txt
Eine weitere Abkürzung ist ~
, die Tilde. Sie steht
für das Homeverzeichnis der jeweiligen Benutzerin.
Wichtige Programme und Kommandos – Textverarbeitung
cat FILE
- Gibt den Inhalt der Datei
FILE
aus. cat FILE1 FILE2 ...
- Gibt den Inhalt mehrerer Dateien hintereinander aus.
cat
- Ohne Argument liest
cat
seinen Input direkt vom Terminal. Es wartet dann kommentarlos darauf, dass Sie etwas eingeben. Schließen Sie die Eingaben mitStrg+D
ab. wc -l
- Zählt die Zeilen im Input.
wc -c
- Zählt die Zeichen im Input.
wc -w
- Zählt die Wörter im Input.
egrep PATTERN
- Sucht im Input nach Vorkommnissen des angegebenen Musters. Gibt die Zeilen aus, in denen eine Entsprechung für das Muster gefunden wird.
egrep -x PATTERN
- Sucht im Input nach Zeilen, die dem angegebenen Muster vollständig entsprechen, und gibt sie aus.
egrep -v PATTERN
- Sucht im Input nach Vorkommnissen des angegebenen Musters. Gibt die Zeilen aus, in denen keine Entsprechung für das Muster gefunden wird.
egrep -f FILE
- Sucht im Input nach Vorkommnissen der Muster, die in der Datei
FILE
stehen (eins pro Zeile). Gibt die Zeilen aus, in denen eine Entsprechung für irgendeins der Muster gefunden wird. sed -re 's/PATTERN/REPLACEMENT/g'
egrep
sucht;sed
sucht und ersetzt. Und zwar ersetzt das Beispielkommando alle Vorkommnisse des MustersPATTERN
durch die alsREPLACEMENT
angegebenen Zeichen. Die Syntax ist etwas komplex; das liegt u.a. daran, dasssed
(„stream editor“) zahlreiche weitere Funktionen hat. Sein häufigster Einsatzzweck ist aber wohl das Suchen und Ersetzen.cut -f N
- Bei mehrspaltigem Input entfernt
cut
auf jeder Zeile jedes Feld außer demN
-ten. Statt einer einzelnen Zahl können auch Ausdrücke wie z.B.1-2,4,7-
angegeben werden, um mehrere Spalten zu erhalten. Als Trennzeichen zwischen den Feldern jeder Zeile dient standardmäßig das Tabzeichen. Wenn das Trennzeichen im Input ein anderes ist, muss das mit Hilfe der Option-d
angegeben werden. Wenn z.B. das Leerzeichen das Trennzeichen ist, so:-d ' '
. Wenn das Semikolon das Trennzeichen ist, so:-d ';'
. Usw. tr SET1 SET2
- Ersetzt einzelne Zeichen im Input. Jedes Vorkommen des n-ten
Zeichens in
SET1
wird durch das n-te Zeichen inSET2
ersetzt.SET2
kann auch aus nur einem Zeichen bestehen, dann wird jedes Zeichen inSET1
durch dasselbe Zeichen ersetzt. head -n N
- Gibt die ersten
N
Zeilen des Inputs aus. tail -n N
- Gibt die letzten
N
Zeilen des Inputs aus. head -n -N
- Gibt alle Zeilen des Inputs aus bis auf die letzten
N
. tail -n +N
- Gibt alle Zeilen des Inputs ab der
N
-ten aus. sort
- Sortiert die Zeilen des Inputs alphabetisch.
sort -n
- Sortiert die Zeilen des Inputs numerisch.
sort -k N
- Sortiert die Zeilen des mehrzeiligen Inputs alphabetisch nach der
N
-ten Spalte. sort -nk N
- Sortiert die Zeilen des mehrzeiligen Inputs numerisch nach der
N
-ten Spalte. uniq
- Fasst identische Zeilen, die direkt untereinander stehen, zu einer zusammen.
Wird oft auf den Output von
sort
angewendet, um Duplikate zu entfernen. uniq -c
- Wie oben, fügt aber am Anfang eine Spalte hinzu, die angibt, wie viele identische Zeilen jeweils zusammengefasst wurden.
bc
- Der „Taschenrechner“ für die Kommandozeile. Der Input muss ein
arithmetischer Term wie
(1+1)*2
sein.bc
gibt dann das Ergebnis aus.
Alle diese Programme können Sie auch direkt mit einem Dateipfad als Argument aufrufen.
Sie lesen ihren Input dann direkt aus der Datei und man muss kein cat
-Kommando
davorsetzen. Ich finde es in den meisten Fällen allerdings mit cat
einheitlicher und klarer.
Wenn Sie die Programme ohne cat
und ohne Dateiargument aufrufen,
lesen sie ihren Input vom Terminal, wie cat
ohne Argument (s.o.).
Wichtige Programme und Kommandos – Verschiedenes
less
less
ist nebenhead
undtail
eine weitere Möglichkeit, in lange Dateien hineinzuschauen, ohne den ganzen Inhalt dauerhaft ins Terminal abzuladen.less
ist ein sogenannter Pager, ein interaktives Programm, mit dem Sie eine Textdatei anzeigen können. Wie beiman
können Sie mit den Pfeiltasten hoch- und runterscrollen, mit dem Schrägstrich können Sie suchen, und mitq
beenden Sie den Pager und kehren zur Kommandozeile zurück.wget URL
- Lädt die Datei mit der angegebenen Internetadresse herunter und speichert sie im aktuellen Arbeitsverzeichnis.
Tastenkombinationen für die Kommandozeile
Tab
- Mit der Tabulatortaste können Sie sich viel Tipparbeit auf der Kommandozeile sparen. Geben Sie die ersten paar Buchstaben eines Kommandos oder eines Dateinamens ein und drücken Sie dann die Tabulatortaste. Das Kommando oder der Dateiname wird automatisch vervollständigt, wenn möglich. Wenn nicht, zeigt Ihnen ein zweiter Druck auf die Tabulatortaste eine Auswahl an möglichen Vervollständigungen an. Probieren Sie es aus!
- Pfeiltasten ↑/↓
- Hiermit können Sie durch die zuletzt eingegebenen Kommandos blättern. Dann einfach Enter drücken, um das aktuell ausgewählte Kommando noch einmal auszuführen.
Strg+W
- Hiermit löschen Sie das zuletzt eingegebene Wort auf der Kommandozeile. Nützlich z.B., wenn Sie mit Hilfe der Pfeiltasten ein altes Kommando erneut ausgewählt haben, aber nun das letzte Argument verändern wollen.
Strg+U
- Hiermit löschen Sie Ihre gesamte Eingabe auf der Kommandozeile und können von vorn beginnen, Ihr Kommando einzugeben.
Strg+C
- Wenn gerade ein Programm läuft, können Sie es mit dieser Tastenkombination in den
meisten Fällen abbrechen. Wenn dagegen die Shell gerade auf Ihre Eingabe wartet, hat
sie einen ähnlichen Effekt wie
Strg+U
, nur dass die abgebrochene Eingabe stehenbleibt und darunter ein neues Prompt angezeigt wird. Strg+D
- Hiermit beenden Sie die aktuelle Shell (und damit das Terminal-Fenster/den Terminal-Tab, in dem sie läuft).
Strg+Shift+C
- In die Zwischenablage kopieren.
Strg+Shift+V
- Aus der Zwischenablage einfügen.
Hilfe und Ressourcen
- UNIX Tutorial for Beginners
- Command Line Magic (ein Twitteraccount, der regelmäßig Kommandozeilentricks postet)
- Unix tool tip (noch ein Twitteraccount, der regelmäßig Kommandozeilentricks postet)