如何cd到目录或目录文件所在?

如何cd到目录或目录文件所在?

如果我这样做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

相关内容