파일이 있는 디렉터리로 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디렉터리인 경우 디렉터리 자체로 cds하고, $1파일인 경우 파일이 있는 디렉터리로 cds 하는 명령을 만들려면 어떻게 해야 합니까 ?

답변1

내 생각에 당신이 원하는 것은 파일의 $1을 먼저 테스트하는 것입니다.

if test -f "$1"; 그러면 cd dirname ... else cd "$1" fi

관련 정보