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^string2
làm bash
thay 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 bash
và zsh
, bạn cũng có thể sử dụng fc -s
như 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-history
thẻ cho điều đó. Thêm. Ngoài ra, tôi giả sử bạn đang đề cập đếnbash
vỏ?