[bash] 매개 변수가있는 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에서 대신 사용하는 것이 좋습니다.


답변

나는 받아 들인 대답 (Kevin ‘s)을 시도했지만 다음과 같은 오류가 발생했습니다.

defining function based on alias `gitall'
parse error near `()'

따라서 git 문제 에 따라 구문을 이것으로 변경 했으며 작동했습니다.

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


답변