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.DIRkann 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
cdin Ihr Home-Verzeichnis, das normalerweise den absoluten Pfad/home/$USERhat, wobei$USERfü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
DIRan. ls -l DIR- Zeigt den Inhalt des Verzeichnises
DIRdetailiert an. ls -la DIR- Zeigt den Inhalt des Verzeichnises
DIRdetailiert einschließlich versteckter Dateien und Verzeichnisse an. ls -l FILE1- Zeigt Details zur Datei
FILE1an. 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
FILE1mit dem PfadFILE2. cp -r DIR1 DIR2- Erstellt das Verzeichnis
DIR2als Kopie des VerzeichnissesDIR1, einschließlich seines ganzen Inhaltes. mv FILE1 FILE2- Benennt die Datei oder das Verzeichnis
FILE1um und/oder verschiebt sie/es in ein anderes Oberverzeichnis, sodassFILE2ihr/sein neuer Pfad wird. rm FILE- Löscht die Datei
FILE. Das ist unwiderruflich, also Vorsicht! rm -rf DIR- Löscht das Verzeichnis
DIRund 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
FILEaus. cat FILE1 FILE2 ...- Gibt den Inhalt mehrerer Dateien hintereinander aus.
cat- Ohne Argument liest
catseinen Input direkt vom Terminal. Es wartet dann kommentarlos darauf, dass Sie etwas eingeben. Schließen Sie die Eingaben mitStrg+Dab. 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
FILEstehen (eins pro Zeile). Gibt die Zeilen aus, in denen eine Entsprechung für irgendeins der Muster gefunden wird. sed -re 's/PATTERN/REPLACEMENT/g'egrepsucht;sedsucht und ersetzt. Und zwar ersetzt das Beispielkommando alle Vorkommnisse des MustersPATTERNdurch die alsREPLACEMENTangegebenen 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
cutauf 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-dangegeben 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
SET1wird durch das n-te Zeichen inSET2ersetzt.SET2kann auch aus nur einem Zeichen bestehen, dann wird jedes Zeichen inSET1durch dasselbe Zeichen ersetzt. head -n N- Gibt die ersten
NZeilen des Inputs aus. tail -n N- Gibt die letzten
NZeilen 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
sortangewendet, 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)*2sein.bcgibt 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
lesslessist nebenheadundtaileine weitere Möglichkeit, in lange Dateien hineinzuschauen, ohne den ganzen Inhalt dauerhaft ins Terminal abzuladen.lessist ein sogenannter Pager, ein interaktives Programm, mit dem Sie eine Textdatei anzeigen können. Wie beimankönnen Sie mit den Pfeiltasten hoch- und runterscrollen, mit dem Schrägstrich können Sie suchen, und mitqbeenden 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)