
그렇게 하면 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