Bash shell 中以下内容的文档:!keyword

Bash shell 中以下内容的文档:!keyword

如果你在 Bash 中执行以下操作(也可能在其他 shell 中也是如此),则你将从历​​史记录中执行与提供的关键字匹配的命令:

$ !keyword

我正在寻找此命令的文档。我尝试搜索男子猛击页面,但没有运气。我也试过谷歌,但在谷歌上搜索标点符号几乎是不可能的(对吧?)。

我想知道:

  1. 此命令按照什么顺序搜索您的历史记录?从最旧命令到最新命令?还是反过来?

  2. 我知道添加:p选项位于命令末尾以防止执行,但还有其他选项吗?虽然不确定我想要什么其他选项,但只是好奇。

当然,我可以通过反复试验来解决这个问题,但我宁愿在使用这个简洁的命令之前先查看文档。

也许我找错了地方?如能提供任何帮助以找到文档,我将不胜感激。

答案1

这就是所谓的历史扩展. 大多数历史扩展命令都引用最近匹配的命令行(例外是通过数字引用命令行)。

最有用的形式是扩展到最近的命令,以!prefixprefix,扩展到包含的最新命令!?substring?substring,并取代^from^tofrom经过to在上一个命令中。

你可以通过添加字标识符,例如

ls foo bar *~ *.pdf
rm !*

修饰符可以执行字符串替换并提取单词的部分内容。修饰符:p导致打印但不执行结果命令。

答案2

顺序是从最近到最旧的。

!nn执行带有 的数字的命令history

!-n执行中的倒数第 n 个命令history

!!执行最后一条命令(即!-1)。

您还可以例如sudo !!如果您忘记在某些内容前面加上前缀sudo

您可以通过 Google 搜索bangbang bang来查找有关这些命令的信息,例如或者

还:

大多数现代 shell 都支持 csh 的 bang 命令 - bash、tcsh 和 zsh 都支持。虽然有些 bang 命令在所有这些 shell 中都不起作用,但以下所有命令都起作用

因此您最好查看文档csh

相关内容