Bash 如何获取上一个命令最后一个参数的'dirname'?

Bash 如何获取上一个命令最后一个参数的'dirname'?,bash,Bash,我经常发现自己处于以下情况: mv picture /very/long/path/favicon.ico cd !$ 第二个命令失败(如预期),因为$不是目录。是否有一些bash历史替换魔法将我带到/very/long/path?您可以使用$\uuu来代替,它将扩展到最后执行的命令的最后一个参数。然后,一个简单的参数展开,去掉最后一个/之后的部分,即可: ${_%/*} 因此: 您可以使用这种方法获取最后一个命令,问题是您想用它做什么。 使用dirname命令有一种简单的方法可以做到这一点

我经常发现自己处于以下情况:

mv picture /very/long/path/favicon.ico
cd !$

第二个命令失败(如预期),因为
$不是目录
。是否有一些bash历史替换魔法将我带到
/very/long/path

您可以使用
$\uuu
来代替,它将扩展到最后执行的命令的最后一个参数。然后,一个简单的参数展开,去掉最后一个
/
之后的部分,即可:

${_%/*}
因此:


您可以使用这种方法获取最后一个命令,问题是您想用它做什么。

使用dirname命令有一种简单的方法可以做到这一点

cd $(dirname !$);

!$:h
完全按照要求执行:

mv picture /very/long/path/favicon.ico
cd !$:h

来源:
manbash
,查找字符串
尾随文件名

好吧,
cd/very/long/path&&mv$OLDPWD/picture。
确实避免了我两次写出那条长路径。但这个问题可能太琐碎,无法让我改变我的习惯汉克斯。请稍等,我将
manbash
并了解其工作原理。:)@pii_ke:将此函数添加到
~/.bashrc
并使用
x
x(){cd“${{u%/*}”;}
mv picture /very/long/path/favicon.ico
cd !$:h