Przewodnik instalacyjny dla ack sugeruje instalację skryptu ack za pomocą tego polecenia:
curl http://beyondgrep.com/ack-2.14-single-file > ~/bin/ack && chmod 0755 !#:3
Zakładam, że !#:3
na końcu jest jakiś odnośnik, ale co to znaczy? Czy istnieje odpowiednik w Zsh? Google nie był pomocny.
bash
command-history
Matt Pfefferle
źródło
źródło
man bash
, następnie wyszukaj ROZSZERZENIE HISTORIIOdpowiedzi:
Jest to specjalna składnia, rozwinięta przez bash. Działa również dla Zsh.
Zgodnie ze stroną podręcznika bash (sekcja ROZSZERZENIE HISTORII) wzorzec rozwija się w następujący sposób:
!#
odnosi się do całego wpisanego do tej pory wiersza polecenia, którym jestcurl http://beyondgrep.com/ack-2.14-single-file > ~/bin/ack && chmod 0755
:
dzieli się między desygnatorem zdarzenia (w tym przypadku całą linię) a desygnatorem słowa (wybiera podczęść)3
, które wybiera trzeci słowo / argumentów (licząc od słowa Zaczyna się od zera), w tym przypadku~/bin/ack
.Linia komend końcowy (zwykle wyświetlane przed stracony) wynosi:
curl http://beyondgrep.com/ack-2.14-single-file > ~/bin/ack && chmod 0755 ~/bin/ack
.Aby uzyskać szczegółowe informacje, zobacz instrukcję bash lub bardzo podobny podręcznik zsh
źródło
!#
dużo, ale!!
,!$
,!*
,!sud:p
i wielu innych, są niezwykle przydatne i używam ich cały czas. Sprawdź unix.stackexchange.com/a/67/135943W
bash
to podstawienie historii (wszystkie podstawienia historii zaczynają się od!
). W szczególności!#
oznacza wszystko do tej pory w wierszu polecenia, a dodanie „: 3” oznacza trzecie słowo (liczenie początkowe od 0).Tak więc powyższe polecenie przekłada się
!#:3
na~/bin/ack
.źródło