Argumente wiederholen

Escape Punkt

Mal angenommen, ich will den Inhalt eines Logs ansehen:

$ cat /var/log/nginx/access.log

Oops, cat war vielleicht eine dumme Idee – vielleicht wären tail oder less geschickter gewesen. Also <Ctrl>-C, Befehl wieder herholen, Cursor an Anfang, cat löschen, less tippen.
Oder alternativ einfach “less ” eingeben, und dann <Esc> und “.”.

Die Tastenkombination Escape Punkt fügt immer das letzte Argument des letzten ausgeführten Kommandos ein. Praktisch!

Bang Bang Bang!

Alternativ geht auch

$ less !$
$ less /var/log/nginx/access.log

Also less !$ eingeben, Enter drücken, er expandiert !$ und Du kannst nochmal kontrollieren, bevor Du den Befehl abschickst.

Das Symbol “Bang Dollar” expandiert zum letzten Argument des letzten Befehls, also identisch mit Escape Punkt.

Beides wirklich sehr praktisch, wenn man z.B. eine Datei kopieren will, und anschließend Owner ändern und Rechte ändern:

$ cp /home/userA/some/dir/foo.txt /home/userB/other/dir/foo.txt
$ chown userB:developer /home/userB/other/dir/foo.txt
$ chmod 644 /home/userB/other/dir/foo.txt

Oder einfach:

$ cp /home/userA/some/dir/foo.txt /home/userB/other/dir/foo.txt
$ chown userB:developer <Esc>.
$ chmod 644 <Esc>.

Weniger häufig braucht man die Kollegen von Bang Dollar, nämlich Bang Hat (!^), Bang Star (!*) und Bang Colon (!:). Was machen die?

Bang Hat Das erste Argument des letzten Befehls
Bang Star Alle Argumente des letzten Befehls
Bang Colon !:2 liefert das zweite Argument des letzten Befehls

About the author

People Enabler at CHECK24

Comments

  1. “Also less !$ eingeben, Enter drücken, er expandiert !$ und Du kannst nochmal kontrollieren, bevor Du den Befehl abschickst.”

    Nee, mit !$ wird direkt ausgeführt. Da ist nix mehr mit kontrollieren.

    1. Dann ist das Shell-abhängig: in der ZSh wird es erst mal nur expandiert. Gerade noch mal in der Bash probiert, dort wird es tatsächlich direkt ausgeführt. Danke für den Hinweis. Und noch ein Grund, die ZSh zu verwenden statt Bash 😀

Leave a Reply

Your email address will not be published. Required fields are marked *