如果我刚刚在Bash中输入以下命令:
echo foo
Run Code Online (Sandbox Code Playgroud)
我可以输入以下命令将foo更改为bar:
^foo^bar
Run Code Online (Sandbox Code Playgroud)
这导致执行以下命令:
echo bar
Run Code Online (Sandbox Code Playgroud)
现在,如果我输入:
echo foo foo
Run Code Online (Sandbox Code Playgroud)
有没有办法只使用caret(^
)运算符将foo的两个实例更改为bar ?
另外,shell运营商的手册页是否有^
?man ^
导致"没有手动输入^".
Ada*_*eld 59
该特殊功能称为快速替换 ; 其文档可以在Bash手册的Event Designators部分找到.快速替换你不能做你想做的事; 你将不得不诉诸一些更冗长的东西:
!!:gs/foo/bar/
Run Code Online (Sandbox Code Playgroud)
R S*_*hko 34
也不确定如何用插入符号替换,但这是你如何用历史记录做到的:
!!:gs/foo/bar/
Run Code Online (Sandbox Code Playgroud)
让我打破这个:
! - 重新运行最后一个命令.你也可以使用!-2来运行两个命令,!echo来运行以echo开头的最后一个命令
:gs表示要进行全局(所有实例)搜索/替换.如果你想替换第一个实例,你会使用':s'
最后,/ foo/bar /说要用bar替换foo
小智 23
尝试:
^foo^bar^:&
Run Code Online (Sandbox Code Playgroud)
如您所知,^foo^bar^
只执行一次替换,:&
修饰符会重复它.
归档时间: |
|
查看次数: |
13726 次 |
最近记录: |