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