Zsh

History

  • !13 -> ruft den 13 Befehl der History aus

  • !-1 -> genau wie !!-> ruft den gesamten letzten Befehl auf

  • !-2 -> ruft den vorletzten Befehl auf usw.

  • !:2 -> ruft nur das 2 Argument des letzten Befehls auf

  • !:2:h -> ruft den vorderen Teil des letzten Arguments auf

  • !-2:2:t -> ruft den hinteren Teil des vorletzten Befehls auf

  • !:2:r.pdf -> ändert das Suffix des letzten Befehls (z.B txt) in pdf

  • !!:s/z/y/ -> ändere im letzten Befehl das ERSTE z in y

  • !!:gs/z/y/ -> ändere im letzten Befehl ALLE z in y

  • history -D -> zeigt letzten Befehle an mit Nummer und Startzeit

  • history -40 -20 -> zeigt alle letzten Eintrage zwischen dem 20 - 40

  • !ca -> letzter Befehl der mit ca anfing z.B cal 12 2011

  • !?pwd -> sucht nach dem letzten Befehl in dem pwd vorkam und führt ihn aus

  • history -EDd shows history with timestamps and how long a command had run

  • vom letzten Befehl bestimmte Zeichen löschen oder ersetzen

cal 1222 2011
  • ^12 -> ruft cal 12 2011 auf

  • ^cal^echo -> ersetzt das erste cal mit echo und gibt 12 2011 in stdout aus

  • Pfade wiederverwenden

ls /usr/local/src
!!/blub                -> ls /usr/local/src/blub              -> Wiederverwendung des gesamten letzten Befehls und hängt
                                                                 hinten "blub" an
cp !$/something .      -> cp /usr/local/blub/something .      -> wiederverwenden des letzten Arguments des letzten Befehls

Output redirect

  • cat bla > file.txt > error.txt-> redirect output to file.txt and errors to error.txt

  • cat bla >| filename -> redirect output to File nur wenn diese NICHT existiert

  • mehrere Pfade /Dateien hintereinander ausgeben

ls /etc /bin /usr -> gibt hintereinander /etc dann /bin dann /usr aus
cp file file0 file1 file3 /home  -> kopiert alle Dateien nach /home
  • nach dem Anfang oder Ende eines Befehls oder Datei suchen

ls /usr/bin /bin | grep 'sh$'     -> findet alle Dateien die mit sh Enden in /usr/bin und /bin
ls /home | grep  test*                  -> findet alle Dateien mit dem Anfang test im /home
  • alles in einem Verzeichnis ausgeben bis auf gestimmte Sachen

ls /usr/bin /bin | grep -v 'sh$'      -> gibt alles in den Verzeichnissen /usr/bin und /bin aus bis auf das was mit sh endet
  • Sachen sortiert ausgeben mit sort

ls /usr/bin /bin | grep 'sh$' | sort  -> gibt die Dateien von a - z sortiert aus
  • Ausgabe in mehrere Spalten mit column

ls /usr/bin /bin | grep 'sh$'| column -> gibt die Dateien in so vielen Spalten wie auf den Bildschirm passen aus
  • im Befehl cat kann die Spalten Anzahl mitten -c angeben werden

cat -c 1-3 bla           -> Ausgabe von bla in 3 Spalten
  • lange Befehleketten können mittels newline unterteilt werden

ls /usr/bin /bin | \
grep 'sh$' | \
sort | \
column \

Prozesse eines Terminals

  • Ctrg+z -> Prozess im Vordergrund im Hintergrund schlafen legen (suspend)

  • Ctrg+c -> Tötet den Prozess im Vordergrund

  • Ctrg+-> Tötet den Prozess + Core Dump

  • Ctrg+R -> Rückwärts suchen

  • jobs -> zeigt alle Prozesse des Terminals mit Nummern an

  • bg %Prozessnummer -> Restartet schlafende Prozesse im Hintergrund

  • fg %Prozessnummer -> holt Prozesse aus dem Hintergrund in den Vordergrund

  • Ctrg+z + bg %Prozessnummer -> Prozesse in den Hintergrund schieben die im Vordergrund laufen

ZSh Bindings

  • bindkey -L -> listet alle zsh Bindings auf

  • bindkey ‘C-w’ kill-region -> setzt zsh keybinding für kill-region auf Ctrg+w (für dauerhafte Bindings einfach in die .zshrc eintragen)

  • read -> liest einen Buchstaben ein und gibt seine escapde Form aus für ein bindkey

  • bindkey -s ‘C-ff’ “firefox” -> Bindet den String firefox an die Tastenkürtzel Ctrg+ff

  • stty -a -> zeigt alle Terminal bindings und mehr an

  • Terminal bindings ändern mit

  • stty intr ‘^t’ -> Interrupt jetzt nicht mehr Ctrg+c sondern Ctrg+t

Keybindings für BASH ZSH und Emacs

  • Alt + b -> Wort zurück springen

  • Alt + f -> Wort vor springen

  • Alt + Backspace -> Wort vor Cursor löschen

  • Alt + d -> Wort nach Cursor löschen

  • Alt + h -> manpage des Befehls aufrufen

  • Alt + Q -> Befehl für eine Zeile in den Hintergrund schieben

  • Strg + l -> clean screen

  • Strg + x Strg +x -> Zeile von Cursor bis Anfang der Zeile markieren (EMACS markiert Block)

  • Alt + . -> Argumente der vorhergehenden Befehle abrufen (nur BASH und ZSH)

  • Strg + Space -> Marke setzen

  • Strg + k -> Ende der Zeile löschen von Cursor

  • Strg + w -> Anfang der Zeile löschen bis Cursor

  • Strg + u -> ganze Zeile löschen

  • Strg + s -> suche vorwärts

  • Strg + r -> suche rückwärts

  • Strg + s -> Output Pause und Strg + Q -> Fortsetzen der Ausgabe

Directory Stack

  • dirs -v -> zeigt alle Directory des Stacks an

  • ~ -> Home dir

  • ~person -> home dir von person

  • ~- -> letztes Verzeichnis

  • ~3 -> 2 Verzeichnis im Stack

Befehle finden

  • type acroread -> zeigt das Verzeichnis vom Adobe Reader an

  • which firefox -> “” von Firefox

  • whence -M *fg -> gibt alle Befehle die auf fg-enden mit vollen Pfad aus

  • ls *.{c,h,o} -> gibt alle Dateien aus die auf c, h oder o enden

  • echo {1..10} -> gibt alle Zahlen von 1 bis 10 aus

Pattern Matching

  • Dateien finden & Pattern Matching (ls ist doch Befehle wie chmod, print oder echo etc. ersetzbar)

  • ls * -> alle Dateien und Verzeichnisse in diesem Verzeichnis (0 bis n Zeichen) ausgeschlossen sind . Dateien!

  • ls **/ -> alle Dateien und Verzeichnisse in diesem Verzeichnis und allen Unterverzeichnissen ausgenommen . Dateien

  • ls /*/ -> -> alle Dateien und Verzeichnisse in allen Unterverzeichnissen ausgenommen . Dateien

  • ls .* -> listet alle .Dateien diese Verzeichnisses

  • ? -> ein Zeichen

  • [abc] -> ein a,b, oder c

  • [a-z] -> ein Zeichen zwischen a bis z

  • [1A-Z] -> 1 oder ein Zeichen zwischen A bis Z

  • [^a-z] -> kein Zeichen zwischen a bis z das selbe wie

  • (doc|txt) -> entweder txt oder doc

  • <1-9> -> Zahlen zwischen 1 - 9

  • pat1~pat2 -> das Pattern vor der ~ soll gesucht werden und danach alle Ergebnisse mit dem Pattern nach der ~ entfernt werden

  • # -> 0, 1 oder mehrfaches auftreten von Zeichen oder [] ()

  • (i#)read(I#) -> sucht nach allen groß und klein geschriebenen read

  • Globale Qualifier müssen immer am ende des Pattern in () Klammern stehen

  • . -> nur reguläre Dateien keine Verzeichnisse oder Links

  • @ -> nur Links

  • / -> nur Verzeichnisse

    • -> ausführbare Dateien (keine Verzeichnisse)

  • f:u+rwx,o-rwx: -> Dateirechte (hier User hat read write execute others haben kein read write execute

  • Lk+100 -> Filegröße (hier Kilobyte größer 100) m für Megabyte, - für kleiner

  • mh-1 -> File Timestamp (hier kleiner eine Stunde) m für Minuten, + für mehr als

  • on -> sortierte Ausgabe

  • Coluom Modifiers as Qualifiers (müssen in den global Qualifiers ganz am Ende stehen)

  • :t -> zeigt nur den Hintern Teil der Ausgabe an (z.b. nur Dateinamen nicht den Pfad)

  • :t:s/z/ZED/ -> zeigt nur den hinteren Teil der Ausgabe an und ersetzt in jeder Zeile das erste z mit ZED

  • :t:gs/z/ZED/ -> zeigt nur den hinteren Teil der Ausgabe an und ersetzt in jeder Zeile alle z mit ZED

Misc