我似乎记得bash在同一行中引用某些内容时有一个快捷方式.我经常知道和使用!$,!!和朋友.我记得阅读能够做如下的事情:
mkdir tmp && cd !_
哪里!_代表我不记得的组合.(上述目标是成功创建一个目录并立即cd进入.)Google只会产生相同的2个参考表的重新发布,这些参考表没有这种组合.
现在我正在使用效率较低的
mkdir tmp
cd !$
完成工作但不是我想要的方式.
有谁知道这个难以捉摸的捷径?
在这重要的情况下,我用zsh用oh-my-zsh,不香草bash.
mkdir tmp && cd "$_"
我相信你正在寻找的东西(如果你确定不需要报价,你可以放弃双引号).
$_在不同的上下文中扩展不同,但在这里重要的是(来自man bash,v3.2.51):
扩展后扩展到上一个命令的最后一个参数.
背景:
注意:以下讨论bash,但似乎zsh原则上也适用.
$_是一个所谓的特殊参数,您可以$在以下Special Parameters部分列出其中(没有前缀)列出的参数man bash:
相比之下,!-prefixed令牌(例如!$回顾最近线的最后一个令牌)涉及壳的[指令]历史扩展(部分HISTORY EXPANSION的man bash):
set -o history和set -o histexpand(感谢@chepner)更改.Enter击键提交的所有内容,无论它包含多少个别命令或行).!# 是指到目前为止的命令行,您可以从中提取特定的单词:
mkdir tmp && cd !#:1
相同的语法也适用zsh.