linux - 从终端历史记录中搜索和替换命令

标签 linux shell unix

我想知道如何/是否可以重用我的终端历史记录中的命令,但在修改后的版本中。这是一个例子:

$ filter_script file2 > output_file2
$ # ...
# now run the same command, but replace '2' with '4'
$ filter_script file4 > output_file4

这是一个非常简单的示例,当然我可以简单地从历史记录中访问命令并手动替换两个2,但是有没有更优雅的方法?

非常感谢您的宝贵时间!

最佳答案

如果只有 一个 您想替换的实例,bash(1) 有一个简单的功能,该功能首先在 csh(1):

^old^new

old 的第一个实例替换为 new:

$ filter_script file2 > output_file2
$ ^2^4
filter_script file4 > output_file2

如果你想替换所有实例,那需要更多的输入:

$ filter_script file2 > output_file2
$ !:gs/2/4/
filter_script file4 > output_file4

g 指定命令行上的全局 替换。 ! 指的是历史记录中的一行——如果您想从更早的历史记录中提取一条命令,那么它可能会更具体。请参阅 bash(1) 关于事件指示符 的部分。

关于linux - 从终端历史记录中搜索和替换命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8224441/

相关文章:

ubuntu - espdiff - 它是什么以及如何使用它?

IN6ADDR_ANY_INIT 可以自动绑定(bind)到链接本地地址吗?

linux - 根据文件中的时间戳对文件进行排序

linux - 使用内置 printf 以毫秒或纳秒为单位打印当前时间

shell - GCP Dataproc - 在初始化操作中使用 connectors.sh 时集群创建失败

regex - 递归搜索和替换文本的 Unix 命令

macos - 从粘贴板中的输入字符串中去除换行符的最简单方法

linux - 限制在 sys_read 上读取的字符数

linux - 使用不同用户将文件从一台服务器复制到远程服务器的 Shell 命令

linux - Bash - 获取命令的输出