从man bash
,
历史-p arg [arg ...]
...
-p
对以下参数执行历史替换并将结果显示在标准输出上。
这里的“历史替代”是什么意思?你能提供一个使用它的例子吗?
谢谢。
我了解命令行历史替换,并且已经尝试过这样的事情:
history -p "!23:1"
但这不依赖于-p,xx "!23:1"
同样的事情也是如此。
从man bash
,
历史-p arg [arg ...]
...
-p
对以下参数执行历史替换并将结果显示在标准输出上。
这里的“历史替代”是什么意思?你能提供一个使用它的例子吗?
谢谢。
我了解命令行历史替换,并且已经尝试过这样的事情:
history -p "!23:1"
但这不依赖于-p,xx "!23:1"
同样的事情也是如此。
历史扩展什么时候发生?
来自 bash 手册
将字符括在双引号 ('"') 中会保留引号内所有字符的字面值,但 '$'、'`'、'\' 以及启用历史扩展时的'!' 除外。
由于解析器在解析阶段识别出双引号,因此解析后必须进行历史扩展是否正确?
如果是,那么关于 shell 扩展(例如大括号扩展、参数扩展、文件名扩展等)何时发生?
但是我认为历史扩展是由shell的readline提供的,所以是在词法分析和解析之前处理的?就像 shell 中的自动完成一样。我错过了什么吗?
谢谢。
如果我可以在脚本中使用 bash 历史修饰符会很方便,例如:
!$:h
获取文件的路径。
有没有办法在脚本中使用它们?例如${1:h}