
如果我這樣做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