^foo^bar 组合在 Bash 中起什么作用?

^foo^bar 组合在 Bash 中起什么作用?

我最近看到一个视频,其中有人^foo^bar在 Bash 中被处决。这个组合有什么用?

答案1

Bash 称其为快速替换。它位于 Bash 手册页的“历史扩展”部分中的“事件指示符”部分下(在线手册):

^string1^string2^

快速替换。重复上一个命令,将 string1 替换为 string2。相当于 !!:s/string1/string2/

因此^foo^bar将运行之前执行的命令,但将第一次出现的 替换foobar

请注意,对于s/old/new/,bash 手册页显示“如果最后的分隔符是事件行的最后一个字符,则它是可选的”。这就是为什么您可以使用^foo^bar但不需要使用^foo^bar^.

(看这个答案对于一堆其他指示符,尽管我在那里没有提到这个)。

答案2

^foo^bar执行最后一个命令,将第一个实例替换foobar。例如:

$ ech "hello"
-bash: ech: command not found
$ ^ech^echo
echo "hello"
hello

相关内容