Bra*_*rks 5 bash history-expansion
我经常在 bash 提示符下编写命令,我想在其中获取以前的参数,在我输入的 CURRENT 行中,然后放在命令的其他位置。
一个简单的例子,如果我想重命名一个文件。我会
mv命令~/myTestFileWithLongFilename.txt我可以以某种方式使用历史记录或 bash 完成来自动完成第一个参数吗?
$ mv ~/myTestFileWithLongFilename.txt ~/myTestFileWithLongFilename.md
Run Code Online (Sandbox Code Playgroud)
我当然知道我可以执行不完整的命令,将其放入历史记录中,然后用 引用它!$,但是我的历史记录被无效命令污染,我想知道是否有更好的方法
Kus*_*nda 10
为了减少该mv命令所需的输入量,可以使用大括号扩展:
mv ~/myTestFileWithLongFilename.{txt,md}
Run Code Online (Sandbox Code Playgroud)
大括号扩展扩展为~/myTestFileWithLongFilename.txt后跟~/myTestFileWithLongFilename.md({txt,md}确保顺序正确很重要)。
bash无论您是在命令行还是在脚本中键入它们,大括号扩展都有效。
甲括号扩展,prefix{word1,word2,word3}suffix,将重复prefix和suffix串对于每个wordN在实际的支架中,产生三个独立的话prefixword1suffix,prefixword2suffix和prefixword3suffix。您还可以使用范围,例如{1..4}或{p..u}在括号扩展中。
这是可能的,但有点麻烦。在 bash 中!#是指已经输入的整行。您可以在 之后指定要引用的给定单词:,在本例中为!#:1。您可以使用shell-expand-line内置的 readline 键绑定
将它扩展到位Control- Alt- e。