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