디렉토리로 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?

답변1

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

if test -f "$1"; 그런 다음 cd dirname ... else cd "$1" fi

관련 정보