我似乎记得bash有一个快捷方式,用于引用同一行中的某些内容.我知道并使用!$,!!和朋友们经常我记得阅读能够做如下的事情:
mkdir tmp && cd !_
哪里!_代表我不记得的组合. (上面的目标是创建一个目录,并在成功时立即进入.)Google只会产生相同的2个参考表的重新发布,这些参考表没有这个组合.
现在我正在使用效率较低的
mkdir tmp cd !$
完成工作但不是我想要的方式.
有谁知道这个难以捉摸的捷径?
如果它很重要,我使用zsh与oh-my-zsh,而不是vanilla bash.
mkdir tmp && cd "$_"
我相信你正在寻找的东西(如果你确定不需要报价,你可以放弃双引号).
$_在不同的上下文中有不同的扩展,但在这里重要的是(来自man bash,v3.2.51):
expands to the last argument to the prevIoUs command,after expansion.
背景:
注意:以下讨论bash,但它似乎原则上也适用于zsh.
$_是一个所谓的特殊参数,您可以在man bash的特殊参数部分找到其中列出的其他参数(不带$前缀):
>在交互式shell和脚本中都可以使用.
>在单个命令级别工作,而不是在行级别工作.
相比之下,!-prefixed tokens(例如!$来调用最近行的最后一个标记)与shell的[command]历史扩展(man bash的HISTORY EXPANSION部分)有关:
>默认情况下,它们只能在交互式shell中使用,但可以使用set -o history和set -o histexpand(thanks,@ checkner)进行更改.>在线级工作(更准确地说:使用一个Enter键击提交的所有内容,无论它包含多少个别命令或行).