
비슷한 질문이 올라왔지만, 제가 처음이라서 Unix
문맥상 답변이 명확하지 않았습니다. 내가 원하는 것은 한 명령의 출력을 다른 명령의 인수로 전달하는 것입니다. 저는 소스 제어를 위해 git을 사용하고 있으며 세 가지 다른 분기에서 작업하고 있습니다.
커밋해야 할 때마다 브랜치를 확인한 다음 해당 명령을 다음과 같이 제공해야 합니다.
git pull --rebase origin <branch-name>
나는 별칭을 작성하고 싶었고 git-rebase
그것이 무엇을 할 것인지는 먼저 실행될 것입니다 git branch
.
git Branch의 출력은 다음과 같습니다.
experiment
*master
new feature
따라서 마스터 분기 외에 두 개의 분기가 있는 경우 모든 분기가 표시되고 현재 분기는 별표로 표시됩니다. 별표가 표시된 줄을 추출한 다음 이 출력을 위 명령에 전달하고 싶습니다.
또한 명령의 출력을 억제하고 싶습니다 git branch
. 내가 이 일을 하는 이유는 전체 명령을 입력하기에는 너무 게을러서가 아니라 Unix bash의 강력한 기능에 대해 더 배우고 싶기 때문입니다. 그것으로부터 뭔가를 배우기를 희망합니다.
답변1
git branch
먼저 출력을 사용 가능한 형식으로 변환해야 합니다.
$ git branch
experiment
* master
new feature
$ git branch | awk '/^\* / { print $2 }'
master
이제 이를 인수로 사용하고 싶습니다.
$ git pull --rebase origin $(git branch | awk '/^\* / { print $2 }')
(또는 psusi의 답변에서와 같이 백틱을 사용할 수 있습니다).
이것~해야 한다괜찮습니다. awk 명령은 항상 정확히 한 줄과 일치해야 하며 분기 이름에는 공백이 있을 수 없다고 가정합니다. 훨씬 더 복잡한 경우에는 함수(또는 스크립트)로 래핑하여 중간 값에 대한 온전한 검사를 수행할 수 있습니다.
답변2
또한xargs
명령.
xargs - build and execute command lines from standard input
따라서 @Useless의 위 답변은 다음과 같이 번역됩니다.
git branch | sed -ne 's/\*//p' | xargs git pull --rebase origin
답변3
여러 가지 방법이 있습니다. 가장 간단한 방법은 백틱 대체를 사용하는 것입니다.
git pull --rebase origin `git branch | sed -ne 's/\*//p'`