내 함수에서 공백을 사용할 수 없는 이유는 무엇입니까? (CD, 디렉토리 이름) [중복]

내 함수에서 공백을 사용할 수 없는 이유는 무엇입니까? (CD, 디렉토리 이름) [중복]

저는 이 기능을 가지고 있고, 정기적으로 사용하고 있으며 아주 훌륭하게 작동합니다.

여기있어:

cdx () { cd `dirname $1` ; }

그러나 공백에서는 작동하지 않습니다. 이렇게 사용하다보니

cdx ~/desktop/folder/file\ file

그것은 돌아온다

usage: dirname path

하지만 제가 전달하려는 것은 본질적으로 dirname path. 그러면 이 문제를 해결하려면 어떻게 해야 할까요? (폴더 이름에 공백이 있는 경우에도 마찬가지입니다.)

내 첫 번째 생각은 따옴표를 사용하는 것이었지만 cdX "directory\ whatever"그것도 작동하지 않았습니다.

답변1

간단히 작성하면 $i공백이 변수 내용을 여러 인수로 변환합니다. 공백을 유지하려면 무언가를 인용해야 합니다.

귀하의 예를 들어 다음을 수행할 수 있습니다.

cdx () { cd -- "$(dirname -- "$1")" ; }

그리고 기억해언제나변수를 참조하세요.

관련 정보