Câu trả lời:
Bạn có thể sử dụng !!:gs/search/replace/ký hiệu để làm những gì bạn muốn. Điều này sử dụng tìm kiếm toàn cầu & thay thế ( :gs):
trước
$ echo "harm warm swarm barm"
harm warm swarm barm
sau
$ !!:gs/arm/orn/
echo "horn worn sworn born"
horn worn sworn born
[subhrcho@slc04lyo pcbpel]$ echo "hat that bat" hat that bat [subhrcho@slc04lyo pcbpel]$ !!:gs/at/xx/ echo "hxx that bat" hxx that bat. Tôi đang thiếu gì?
bash --version= 4.2,45 (1) - giải phóng.
Tôi không tin rằng có một cách dễ dàng để thêm một cái gì đó để ^string1^string2làm bashthay thế mỗi lần xuất hiện. Như slm chỉ ra, bạn phải viết !!:gs/string1/string1.
Nhưng trong zsh, bạn chỉ có thể thêm :G:
$ echo foo foo
foo foo
$ ^foo^bar^:G
echo bar bar
bar bar
Trong cả hai bashvà zsh, bạn cũng có thể sử dụng fc -snhư thế này:
$ echo foo foo
foo foo
$ fc -s foo=bar
echo bar bar
bar bar
Điều này thường được tạo thành một bí danh được gọi rđể bạn có thể thực hiện:
$ echo foo foo
foo foo
$ r foo=bar
echo bar bar
bar bar
Tôi tin rằng tùy chọn tốt nhất là sử dụng ": &"
$ echo "dog cat dog"
$ ^dog^cat^:&
echo "cat cat cat"
cat cat cat
:&lần để thay thế.
command-historythẻ cho điều đó. Thêm. Ngoài ra, tôi giả sử bạn đang đề cập đếnbashvỏ?