![파일이 있는 디렉터리로 CD를 이동하려면 어떻게 해야 합니까? [복사]](https://linux55.com/image/110058/%ED%8C%8C%EC%9D%BC%EC%9D%B4%20%EC%9E%88%EB%8A%94%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EB%A1%9C%20CD%EB%A5%BC%20%EC%9D%B4%EB%8F%99%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
내가 그렇게 하면 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