정의 중간에 ZSH 별칭 뒤에 모든 것을 어떻게 배치할 수 있나요?

정의 중간에 ZSH 별칭 뒤에 모든 것을 어떻게 배치할 수 있나요?

나는 이 파일을 가지고 있습니다 :

/Users/MYUSERNAME/asciidots/asciidots/__main__.py

현재 디렉터리에 있는 것처럼 실행되도록 별칭을 지정하고 싶습니다. 나는 다음과 같은 것을 생각하고 있습니다 :

alias asciidots="OLDCWD=$PWD && cd /Users/MYUSERNAME/asciidots/asciidots/ && python3 __main__.py ALL_ARGUMENTS_FOLLOWING_THE_ALIAS && cd $OLDCWD"

하지만 나는 이것을 할 수 있는 어떤 방법도 모른다.

답변1

대신 함수를 사용하세요:

asciidots() (
    cd /Users/MYUSERNAME/asciidots/asciidots/ &&
    python3 __main__.py "$@"
)

"$@"함수의 인수로 확장합니다. 여기서는 함수 본문 주위를 사용하는 ( .. )대신 하위 쉘에서 실행되도록 합니다. { .. }서브셸 환경에는 자체 작업 디렉터리가 있으므로 나중에 원래 디렉터리로 돌아갈 필요가 없습니다.

(제 기억이 맞다면 적어도 Zsh와 Bash에서는 작동할 것입니다.)

바라보다:Bash에서 언제 별칭을 사용하고, 언제 스크립트를 사용하고, 언제 함수를 작성합니까?(제목은 Bash에 대해 이야기하지만 대부분은 Zsh와도 관련이 있을 수 있습니다.)

관련 정보