다음과 같은 별칭이 있습니다 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
등 유사한 셸에서 작동 함 ).zsh
bash
cdd () { cd -- "$(dirname -- "$1")"; }
이는 이식 가능한 쉘 함수 구문을 사용하며 별칭 dirname
처럼 사용됩니다 tcsh
. 두 함수 모두에 이중 대시가 표시되므로 인수가 대시로 시작하는 경우 인수가 옵션으로 해석되지 않습니다.
인수가 지정되지 않으면 위의 두 함수 모두 현재 디렉터리로 변경됩니다(즉, 거의 아무것도 수행하지 않음).
별칭은 쉘이 아닌 항목의 인수를 허용하지 않으므로 쉘 함수를 사용하는 것이 좋습니다 tcsh
. 따라서 "별칭의 첫 번째 매개변수"에서 경로 이름을 검사하여 상위 디렉터리를 확인할 수 없습니다.