【发布时间】:2015-10-30 20:24:35
【问题描述】:
像 zsh 和 bash 这样的 Shell 有 bang 命令,这些命令以感叹号开头并扩展到用户历史记录中的项目。
要获取最后运行的命令的最后一个参数,可以使用!$,例如
$ echo one two three
$ echo !$ !$ !$
> three three three
在 zsh 中,可以交互地扩展这些 bang 命令:
touch foo bar
ls !$<TAB>
!$ 将扩展到 foo 内联。
这非常有用,因为它经常防止我出错:我按tab 展开并确保我做对了,当我有信心时按C-/ 撤消展开。
bash中有没有实现bang命令交互扩展的设置?
关于这个问题的子shell和一般变量的扩展怎么样(即echo $(uname)<TAB>到echo Linux和echo $SHELL<TAB>到echo /bin/bash)。
【问题讨论】:
-
您的问题假设读者了解 zsh 中的 bang 命令是什么。如果您描述了您所追求的功能,您可能会接触到更广泛的受众。我猜M-。带有前缀参数的参数接近你想要的,但我没有用谷歌搜索。
-
structure.usc.edu/bash/bashref_8.html#SEC106 解释了可用的绑定。 M-C-e 进行一般扩展,因此您的第二个问题或多或少是什么。 (以后每篇帖子只有一个问题,拜托!)
-
那么是的,M-。这样做。虽然我不明白为什么在你的第二个例子中结果是
foo——我希望bar。 -
我没有信心发布基于此的答案,但如果您可以从这些指针中拼凑出一个令自己满意的答案,请受邀自己回答问题并将答案标记为已接受(我认为经过一段冷却期后)这样这个问题就不会再出现没有答案了。
-
我经常遇到这个问题,在How to search for dollar sign or exclamation mark?问过。他们告诉我symbolhound.com 是您想要进行此类搜索时的解决方案。