In der Installationsanleitung für ack wird vorgeschlagen, das ack-Skript mit folgendem Befehl zu installieren:
curl http://beyondgrep.com/ack-2.14-single-file > ~/bin/ack && chmod 0755 !#:3
Ich gehe davon aus, dass das !#:3
am Ende eine Art Rückverweis ist, aber was bedeutet das? Gibt es ein Äquivalent in zsh? Google war nicht hilfreich.
bash
command-history
Matt Pfefferle
quelle
quelle
man bash
, dann suche nach HISTORY EXPANSIONAntworten:
Dies ist eine spezielle Syntax, die um bash erweitert wird. Es funktioniert auch für zsh.
Entsprechend der Bash-Manpage (Abschnitt HISTORY EXPANSION) wird das Muster wie folgt erweitert:
!#
bezieht sich auf die gesamte bisher eingegebene Kommandozeilecurl http://beyondgrep.com/ack-2.14-single-file > ~/bin/ack && chmod 0755
:
Aufteilung zwischen dem Ereignisbezeichner (in diesem Fall die gesamte Zeile) und dem Wortbezeichner (wählt einen Unterteil aus)3
, die das auswählt dritte Wort / Argument (Zählen von Worten beginnen bei Null), in diesem Fall~/bin/ack
.Der letzte Befehlszeile ( in der Regel vor der Ausführung angezeigt) ist:
curl http://beyondgrep.com/ack-2.14-single-file > ~/bin/ack && chmod 0755 ~/bin/ack
.Einzelheiten finden Sie im bash-Handbuch oder sehr ähnlich im zsh-Handbuch
quelle
!#
viel, aber!!
,!$
,!*
,!sud:p
und viele andere sind alle sehr nützlich und ich sie die ganze Zeit. Check out unix.stackexchange.com/a/67/135943In
bash
ist es die Historiensubstitution (alle Historiensubstitutionen beginnen mit!
). Konkret!#
bedeutet dies alles in der Befehlszeile, und der Zusatz ': 3' bedeutet das dritte Wort (beginnend mit 0).Also übersetzt der obige Befehl
!#:3
in~/bin/ack
.quelle