我似乎记得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
:
在交互式shell和脚本中都可以使用.
在单个命令级别工作,而不是在行级别.
相比之下,!
-prefixed令牌(例如!$
回顾最近线的最后一个令牌)涉及壳的[指令]历史扩展(部分HISTORY EXPANSION
的man bash
):
默认情况下,它们仅在交互式shell中工作,但可以使用set -o history
和set -o histexpand
(感谢@chepner)更改.
在线级工作(更准确地说:通过一次Enter
击键提交的所有内容,无论它包含多少个别命令或行).
!#
是指到目前为止的命令行,您可以从中提取特定的单词:
mkdir tmp && cd !#:1
相同的语法也适用zsh
.