BASH命令中^符号有什么作用?^old^new语法如何替换历史命令?
Bash
^old^new 替换命令原理解答 你遇到的是Bash内置的*历史扩展(History Expansion)*功能中提供的快速替换语法,具体规则和运行逻辑如下:
语法规则
^旧字符串^新字符串^ (末尾的^可以省略)的作用是:取出上一条执行过的命令,把命令中第一个匹配到的旧字符串替换为新字符串,自动执行替换后的新命令。
场景逻辑还原
- 你执行两条替换命令之前,必然先运行了
ln file.txt link_hard.txt来创建硬链接,这是替换的基础命令 - 输入
^ln^stat时,Bash将上一条命令开头的ln替换为stat,最终执行stat file.txt link_hard.txt - 此时你最近执行的命令已经变为
stat file.txt link_hard.txt,再输入^stat^ls -l^时,就会把开头的stat替换为ls -l,最终得到ls -l file.txt link_hard.txt
实用补充
- 该语法默认仅替换第一个匹配的字符串,若需要全局替换所有匹配内容,可使用
!!:gs/旧字符串/新字符串/写法 - 若仅想预览替换结果、不想直接执行命令,可在替换语法末尾加
:p参数,例如输入^ln^stat:p只会打印替换后的命令,不会自动运行
内容的提问来源于stack exchange,提问作者Sciadi
相关产品推荐
相关产品推荐

