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

IT-Teamleiter bei CHECK24.
Hasst es, Dinge selber zu tun, die auch automatisch gehen.
Will nie wieder Code von Hand formatieren müssen.
Will schon beim Schreiben merken, wenn er Blödsinn macht, nicht erst im Fehlerlog nach dem Deployment.

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 😀

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen