La guía de instalación para ack sugiere instalar el script ack usando este comando:
curl http://beyondgrep.com/ack-2.14-single-file > ~/bin/ack && chmod 0755 !#:3
Supongo que !#:3
al final hay algún tipo de referencia, pero ¿qué significa? ¿Hay un equivalente en zsh? Google no ha sido útil.
bash
command-history
Matt Pfefferle
fuente
fuente
man bash
, luego busque HISTORY EXPANSIONRespuestas:
Esta es una sintaxis especial, expandida por bash. También funciona para zsh.
De acuerdo con la página de manual de bash (sección EXPANSIÓN DE HISTORIA), el patrón se expande de la siguiente manera:
!#
refiere a la línea de comando completa escrita hasta ahora, que escurl http://beyondgrep.com/ack-2.14-single-file > ~/bin/ack && chmod 0755
:
se divide entre el designador de eventos (en este caso, la línea completa) y el designador de palabras (selecciona una subparte)3
que selecciona la tercera palabra / argumento (el recuento de palabras comienza en cero), en este caso~/bin/ack
.La línea de comandos final (por lo general aparece antes ejecutado) es:
curl http://beyondgrep.com/ack-2.14-single-file > ~/bin/ack && chmod 0755 ~/bin/ack
.Para más detalles, consulte el manual de bash o muy similar al manual de zsh
fuente
!#
mucho, pero!!
,!$
,!*
,!sud:p
y muchos otros son extremadamente útiles y los utilizo todo el tiempo. Echa un vistazo a unix.stackexchange.com/a/67/135943En
bash
, es sustitución de historia (todas las sustituciones de historia comienzan con!
). Específicamente,!#
significa todo en la línea de comando hasta ahora, y la adición ': 3' significa la tercera palabra (comenzando a contar en 0).Entonces, el comando anterior se traduce
!#:3
en~/bin/ack
.fuente