Salah satu trik Unix favorit saya adalah ^x^y
, yang akan mengambil perintah terakhir dan mengganti instance pertama dari "x" dengan "y". Namun, saya bertanya-tanya apakah trik yang sama berfungsi untuk mengganti semua contoh "x" dengan "y" pada perintah terakhir?
bash
shell
command-line
command-history
Tukang batu
sumber
sumber
command-history
tag untuk itu. Ditambahkan. Juga, saya menganggap Anda mengacu padabash
shell?Jawaban:
Anda dapat menggunakan
!!:gs/search/replace/
notasi untuk melakukan apa yang Anda inginkan. Ini menggunakan pencarian global & ganti (:gs
):sebelum
setelah
Referensi
sumber
[subhrcho@slc04lyo pcbpel]$ echo "hat that bat" hat that bat [subhrcho@slc04lyo pcbpel]$ !!:gs/at/xx/ echo "hxx that bat" hxx that bat
. Apa yang saya lewatkan?bash --version
= 4.2.45 (1) -lepas.Saya tidak percaya ada cara mudah untuk menambahkan sesuatu untuk
^string1^string2
membuatbash
menggantikan setiap terjadinya. Seperti yang ditunjukkan oleh slm, Anda harus menulis!!:gs/string1/string1
.Namun
zsh
, Anda dapat menambahkan:G
:Dalam keduanya
bash
danzsh
, Anda juga dapat menggunakanfc -s
seperti ini:Ini sering dibuat menjadi alias yang disebut
r
sehingga Anda bisa melakukan:sumber
Saya percaya bahwa opsi terbaik adalah menggunakan ": &"
sumber
:&
ada lebih banyak kejadian yang harus diganti.