tcsh 별칭을 zsh로 변환

tcsh 별칭을 zsh로 변환

다음과 같은 별칭이 있습니다 tcsh.

alias cdd 'cd `dirname \!*`'

나는 이것을 특정 파일을 포함하는 디렉터리로 변경하는 데 사용합니다.

예를 들어,

cdd /Users/myself/Document/Folder/File.pdf

디렉토리를 으로 변경합니다 /Users/myself/Document/Folder/.

어떻게 쉘로 "변환"할 수 있나요 zsh?

답변1

셸에서는 작업 디렉터리를 첫 번째 인수의 상위 디렉터리로 변경하는 셸 함수를 정의할 수 있습니다( zsh아래 코드의 꼬리는 변수에 저장된 경로 이름에서 마지막 경로 이름 구성 요소를 제거하는 함수입니다).:h$1

cdd () cd -- $1:h

또는 보다 이식성이 뛰어난 셸 함수를 사용할 수 있습니다( 및 sh등 유사한 셸에서 작동 함 ).zshbash

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

이는 이식 가능한 쉘 함수 구문을 사용하며 별칭 dirname처럼 사용됩니다 tcsh. 두 함수 모두에 이중 대시가 표시되므로 인수가 대시로 시작하는 경우 인수가 옵션으로 해석되지 않습니다.

인수가 지정되지 않으면 위의 두 함수 모두 현재 디렉터리로 변경됩니다(즉, 거의 아무것도 수행하지 않음).

별칭은 쉘이 아닌 항목의 인수를 허용하지 않으므로 쉘 함수를 사용하는 것이 좋습니다 tcsh. 따라서 "별칭의 첫 번째 매개변수"에서 경로 이름을 검사하여 상위 디렉터리를 확인할 수 없습니다.

관련 정보