manifestor Asked: 2017-12-19 13:07:55 +0800 CST2017-12-19 13:07:55 +0800 CST 2017-12-19 13:07:55 +0800 CST ^foo^bar 的组合在 Bash 中有什么作用?[复制] 772 我最近看到一个视频,有人^foo^bar在 Bash 中执行。那个组合是干什么用的? bash 2 个回答 Voted Best Answer Michael Mrozek 2017-12-19T13:13:32+08:002017-12-19T13:13:32+08:00 Bash 将此称为快速替换。它位于 Bash 手册页的“历史扩展”部分,位于“事件指示符”部分(在线手册)下: ^string1^string2^ 快速替换。重复前面的命令,将 string1 替换为 string2。相当于 !!:s/string1/string2/ 因此^foo^bar将运行先前执行的命令,但将第一次出现的替换foo为bar。 请注意,对于s/old/new/, bash 手册页显示“如果最后一个分隔符是事件行的最后一个字符,则它是可选的。” 这就是为什么您可以使用^foo^bar并且不需要使用^foo^bar^. (请参阅this answer以获取其他一些指示符,尽管我没有在那里提到这个)。 Timothy Pulliam 2017-12-19T13:12:59+08:002017-12-19T13:12:59+08:00 ^foo^bar执行最后一个命令,用 替换第一个foo实例bar。例如: $ ech "hello" -bash: ech: command not found $ ^ech^echo echo "hello" hello
Bash 将此称为快速替换。它位于 Bash 手册页的“历史扩展”部分,位于“事件指示符”部分(在线手册)下:
因此
^foo^bar
将运行先前执行的命令,但将第一次出现的替换foo
为bar
。请注意,对于
s/old/new/
, bash 手册页显示“如果最后一个分隔符是事件行的最后一个字符,则它是可选的。” 这就是为什么您可以使用^foo^bar
并且不需要使用^foo^bar^
.(请参阅this answer以获取其他一些指示符,尽管我没有在那里提到这个)。
^foo^bar
执行最后一个命令,用 替换第一个foo
实例bar
。例如: