如何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

相關內容