git-go
이 터미널 라인에 별칭을 쉽게 설정하고 싶습니다 .
git commit -m "init "; git push; git status
그래서 git-go를 입력하면이 줄이 입력되어야합니다.
어떻게해야합니까? 내가 본 답변은 매개 변수가없는 명령의 별칭 만 포함합니다. 그러나 별칭을 임의의 터미널 라인으로 설정하고 싶습니다.
git-go
이 터미널 라인에 별칭을 쉽게 설정하고 싶습니다 .
git commit -m "init "; git push; git status
그래서 git-go를 입력하면이 줄이 입력되어야합니다.
어떻게해야합니까? 내가 본 답변은 매개 변수가없는 명령의 별칭 만 포함합니다. 그러나 별칭을 임의의 터미널 라인으로 설정하고 싶습니다.
답변:
별명을 설정하는 것과 같은 방법으로이 작업을 수행합니다.
alias git-go='git commit -m "init "; git push; git status'
그것은 까다로운 얻는 상황은 하지 별명이 명령을 실행하고 명령에 인수를 전달하거나 별칭에 의해 구분 된 여러 명령을 실행하는 경우에도 때 ;
대신,하지만 당신은 받아들이고 자신의 명령 줄 인수를 사용하는 별칭을 할 때입니다 .
예를 들어, 해당 별명 이름 뒤에 작성한 내용 은 끝에 붙여 져서 세 번째 git
명령 인 after에 명령 행 인수로 전달됩니다 git status
. (실제로 다음 텍스트가 그대로 남고 별칭 이름이 정의로 바뀔 때까지 다음 텍스트를 끝에 붙여 넣지는 않습니다.)
따라서 인수없이 별칭을 실행할 수 있으며 마지막 명령은 git status
다음과 같습니다.
git-go
또는 전달하려는 인수로 실행할 수 있습니다 git status
. 예를 들어, 이런 방식으로 실행할 때 마지막 명령은 git-status --show-stash
다음과 같습니다.
git-go --show-stash
당신이 할 수 배쉬 (및 기타 Bourne의 스타일 쉘)의 별칭으로 할 것은 별칭이 명령 줄 인수를 허용하고 다른 말보다 더 그들을 배치하는 것입니다.
예를 들어, git-go
확약 메시지에 사용하는 인수를 승인 하려한다고 가정하십시오 . 이것을 별명으로 쓸 수 없습니다. 해결책은 대신 쉘 함수로 작성하는 것입니다.
git-go() { git commit -m "$1"; git push; git status; }
쉘 함수의 정의에있어서, 상기 위치 파라미터는 $1
, $2
, 등 쉘 함수에 전달 된 명령 행 인수의 값을 포함. 별명 확장은 실제로 쉘이 명령을 구문 분석 할 때 매우 일찍 발생하는 매크로 처리의 형태이기 때문에 별명에는 이에 대응하는 기능이 없습니다.
물론 Videonauth가 제안한 것처럼 정의에서 위치 매개 변수를 사용할 필요가없는 경우에도 쉘 함수로 작성할 수 있습니다.
git-go
PATH에 이름이 지정된 스크립트를 배치 하고git go
하면 작동합니다.
~/.bash_aliases
파일 에서 다음 과 같이 함수를 선언 할 수 있습니다 .
git-go(){
git commit -m "init "
git push
git status
}
또는 같은 파일에서 다음과 같이 별칭을 만들 수 있습니다.
alias git-go='git commit -m "init "; git push; git status'
파일 . ~/.bash_aliases
을 변경 한 후에 터미널을 다시 열거 나 파일 ( )을 소싱하는 것을 잊지 마십시오 .
git
명령을 다룰 때 특히 다음에 대한 별명을 추가하는 구문을 알고 싶을 수도 있습니다 git
.
git config --global alias.go '!sh -c "git commit -m \"init\"; git push; git status"'
로컬 git
구성에 새 별칭을 추가하고 (at ~/.gitconfig
)
git go
안에있을 때 git
저장소 . 실행할 때마다 git go
쉘이 호출되고 명령 git commit -m "init"; git push; git status
이 전달됩니다.
자세한 내용 은 자식 문서 를 참조 하십시오.
인용 문제였습니다. 나는 이것을 시도했다 :
alias="git commit -m "init "; git push; git status"
그러나이 오류가 발생했습니다 :
bash: ; git push; git status: command not found
중첩 따옴표를 잘못 사용했기 때문에 오류가 발생했습니다. 올바른 구문은 다음과 같습니다.
alias='git commit -m "init "; git push; git status'
또는:
alias="git commit -m 'init '; git push; git status"
커밋 메시지에 공백이 없으면 따옴표없이 :
alias="git commit -m init; git push; git status"
init
. 쉘은 'init'
, "init"
및 init
동일하게 취급합니다 . (따라서 중첩 된 따옴표가 필요한 상황을 설명하기 위해 원래 버전을 되돌리고 새 버전을 표시 할 수도 있습니다.) 나머지 메시지를 추가 할 수 있으려면 명령 행으로 전달할 수 있습니다. 인수 경우 (Videonauth 및 내 답변에 표시된 것처럼) 별칭 대신 함수를 정의했습니다. 예를 들어, 정의 할 수 있습니다 git-go() { git commit -m "init $1"; git push; git status; }
(내 대답에는 있지만 "init $1"
대신 대신 사용 "$1"
).