내가 그렇게 하면 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
디렉터리인 경우 디렉터리 자체로 cds하고, $1
파일인 경우 파일이 있는 디렉터리로 cds 하는 명령을 만들려면 어떻게 해야 합니까 ?
답변1
내 생각에 당신이 원하는 것은 파일의 $1을 먼저 테스트하는 것입니다.
if test -f "$1"; 그러면 cd dirname ...
else cd "$1" fi