Bash在同一行中引用先前的参数

我似乎记得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键击提交的所有内容,无论它包含多少个别命令或行).

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...