![내 함수에서 공백을 사용할 수 없는 이유는 무엇입니까? (CD, 디렉토리 이름) [중복]](https://linux55.com/image/46588/%EB%82%B4%20%ED%95%A8%EC%88%98%EC%97%90%EC%84%9C%20%EA%B3%B5%EB%B0%B1%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%A0%20%EC%88%98%20%EC%97%86%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20(CD%2C%20%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%20%EC%9D%B4%EB%A6%84)%20%5B%EC%A4%91%EB%B3%B5%5D.png)
저는 이 기능을 가지고 있고, 정기적으로 사용하고 있으며 아주 훌륭하게 작동합니다.
여기있어:
cdx () { cd `dirname $1` ; }
그러나 공백에서는 작동하지 않습니다. 이렇게 사용하다보니
cdx ~/desktop/folder/file\ file
그것은 돌아온다
usage: dirname path
하지만 제가 전달하려는 것은 본질적으로 dirname path
. 그러면 이 문제를 해결하려면 어떻게 해야 할까요? (폴더 이름에 공백이 있는 경우에도 마찬가지입니다.)
내 첫 번째 생각은 따옴표를 사용하는 것이었지만 cdX "directory\ whatever"
그것도 작동하지 않았습니다.
답변1
간단히 작성하면 $i
공백이 변수 내용을 여러 인수로 변환합니다. 공백을 유지하려면 무언가를 인용해야 합니다.
귀하의 예를 들어 다음을 수행할 수 있습니다.
cdx () { cd -- "$(dirname -- "$1")" ; }
그리고 기억해언제나변수를 참조하세요.