如果我这样做cd "user/Dropbox/foo.txt"
,我就明白了-bash: cd: user/Dropbox/foo.txt: Not a directory
。但在这种情况下,我的意图始终是相同的:我想要cd
访问文件所在的目录。
我试过这个:
function smartcd
{
dirname=$(dirname "$1");
cd $dirname;
}
但它不起作用,因为当 $1 是目录时,dirname "$1"
返回父目录,而不是目录本身。
如何创建一个命令,如果$1
是目录,则将 cd 到目录本身,或者如果$1
是文件,则将 cd 到文件所在的目录?
答案1
我认为你想要的是首先测试文件的 $1 :
如果测试-f“$1”;然后 cd dirname ...
else cd "$1" fi