Panduan instalasi untuk ack menyarankan untuk menginstal skrip ack menggunakan perintah ini:
curl http://beyondgrep.com/ack-2.14-single-file > ~/bin/ack && chmod 0755 !#:3
Saya berasumsi bahwa !#:3
pada akhirnya adalah semacam referensi balik, tetapi apa artinya? Apakah ada yang setara di zsh? Google belum membantu.
bash
command-history
Matt Pfefferle
sumber
sumber
man bash
, kemudian cari EXPANSION SEJARAHJawaban:
Ini adalah sintaks khusus, diperluas oleh bash. Ini juga berfungsi untuk zsh.
Menurut halaman manual bash (bagian HISTORY EXPANSION), polanya mengembang sebagai berikut:
!#
mengacu seluruh lini perintah diketik sejauh yangcurl http://beyondgrep.com/ack-2.14-single-file > ~/bin/ack && chmod 0755
:
memisahkan antara penunjuk acara (hal ini seluruh baris) dan penunjuk kata (memilih sub-bagian)3
yang memilih ketiga kata / argumen (penghitungan kata dimulai pada nol), dalam hal ini~/bin/ack
.Baris perintah akhir (biasanya ditampilkan sebelum dieksekusi) adalah:
curl http://beyondgrep.com/ack-2.14-single-file > ~/bin/ack && chmod 0755 ~/bin/ack
.Untuk detailnya, lihat manual bash atau sangat mirip dengan manual zsh
sumber
!#
banyak, tapi!!
,!$
,!*
,!sud:p
dan banyak lainnya semua sangat berguna dan saya menggunakannya sepanjang waktu. Lihat unix.stackexchange.com/a/67/135943Dalam
bash
, itu adalah substitusi sejarah (semua pergantian sejarah dimulai dengan!
). Secara khusus,!#
berarti segala sesuatu pada baris perintah sejauh ini, dan penambahan ': 3' berarti kata ketiga (mulai hitungan pada 0).Jadi, perintah di atas diterjemahkan
!#:3
menjadi~/bin/ack
.sumber