Program Club

매개 변수가있는 ZSH 별칭

proclub 2021. 1. 10. 17:43
반응형

매개 변수가있는 ZSH 별칭


간단한 git add / commit / push에 대한 매개 변수로 별칭을 만들려고합니다.

함수가 별칭으로 사용될 수 있다는 것을 보았 기 때문에 시도했지만 만들지 못했습니다 ..

내가하기 전에 :

alias gitall="git add . ; git commit -m 'update' ; git push"

하지만 내 커밋을 수정할 수 있기를 원합니다.

function gitall() {
    "git add ."
    if [$1 != ""]
        "git commit -m $1"
    else
        "git commit -m 'update'"
    fi
    "git push"
}

(나는 그것이 끔찍한 자식 연습이라는 것을 안다)


인수 *로 별칭을 만들 수 없습니다. 함수 여야합니다. 함수가 가까워서 전체 명령 대신 특정 인수를 인용하고 [].

gitall() {
    git add .
    if [ "$1" != "" ] # or better, if [ -n "$1" ]
    then
        git commit -m "$1"
    else
        git commit -m update
    fi
    git push
}

* : 대부분의 셸은 별칭에서 인수를 허용하지 않습니다. csh와 파생물이 허용한다고 생각하지만 어쨌든 사용해서는 안됩니다 .


어떤 이유로 든 매개 변수와 함께 별칭을 정말로 사용해야하는 경우 별칭에 함수를 삽입하고 즉시 실행하여 해킹 할 수 있습니다.

alias example='f() { echo Your arg was $1. };f'

이 접근 방식은 .gitconfig 별칭에서 많이 사용되었습니다.


.zshrc 파일에서이 함수를 사용했습니다.

function gitall() {
    git add .
    if [ "$1" != "" ]
    then
        git commit -m "$1"
    else
        git commit -m update # default commit message is `update`
    fi # closing statement of if-else block
    git push origin HEAD
}

여기에서 git push origin HEAD현재 분기를 원격으로 푸시 할 책임이 있습니다.

명령 프롬프트에서 다음 명령을 실행하십시오. gitall "commit message goes here"

gitall커밋 메시지없이 실행 update하면 함수가 말한대로 커밋 메시지가 표시됩니다 .


"git add ."그리고 그 사이의 다른 명령은 "bash의 문자열 일뿐 "입니다.

[ -n "$1" ]if body에서 대신 사용하고 싶을 수도 있습니다 .

참조 URL : https://stackoverflow.com/questions/34340575/zsh-alias-with-parameter

반응형