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와도 관련이 있을 것 같습니다.)

관련 정보