다른 질문에서 이것을 찾았지만 비슷한 것을 찾을 수 없는 것 같습니다. 그런데 이건 정말 유용한 내용인 것 같습니다.
내 ZSH 조각/별칭에 대해 하나를 설정하여 git add .
체인에서 세 가지 작업을 수행하고 싶습니다.
- 경로가
./readme.md
존재하면 다음을 실행하십시오.의사(npm에서 전역적으로 CLI 애플리케이션을 설치합니다.)만약 없다면, 아무것도 하지 않고 다음 단계로 건너뜁니다. - 경로가
./changelog.md
존재하는 경우 다른 로컬 CLI 설치 스크립트( 이름으로 가정됨changelogupd
)가 해당 경로에서 실행됩니다.만약 없다면, 아무것도 하지 않고 다음 단계로 건너뜁니다. - 이전 결과에 관계없이 다음을 실행하십시오.
git add .
지금 나 한테있어둘다음과 같은 별칭으로 연결된 명령과 함께 .zshrc
작동합니다 .
path-exists ./readme.md && doctoc readme.md && git add . || git add .
하지만 나는 원한다삼: 2개의 경로 확인과 조건부 호출 플러스git add .
덧붙여서. path-exists
예경로가 존재합니다 -cli, npm을 통해 전 세계적으로 설치됩니다.
세 개의 명령 체인은 까다로워 보입니다. 다음은 제가 찾고 있는 것을 대략적으로 보여주는 무의미한 매시업입니다.
path-exists ./readme.md && doctoc readme.md && git add . || path-exists ./changelog.md && changelogupd changelog.md && git add . || git add .
이중 파이프를 사용하여 네 가지 경우를 모두 처리해야 할까요?
(
readme
존재하지 않음,changelog
게다가git add .
readme
존재하지 않는다, 존재하지 않는다, 존재하지 않는다, 존재하지 않는다, 존재하지 않는다, 존재하지 않는다, 존재하지 않는다 ,changelog
존재하지 않는다, 존재하지 않는다git add .
- 둘 다
readme
존재하고changelog
, 게다가git add .
- 아니
readme
그런데changelog
지금은 게다가git add .
)
아니면 더 쉬운 방법이 있습니까(또는 npm CLI 라이브러리 또는 일부 비밀 터미널 명령)?
그런데 이것은 Mac 터미널에서 실행되고 있습니다. 감사해요.
답변1
그냥 함수를 작성하세요:
my-git-add-.() {
[ -e readme.md ] && doctoc readme.md
[ -e changelog.md ] && changelogupd changelog.md
git add .
}
답변2
path-exists ./readme.md && { doctoc readme.md; :; } || \
path-exists ./changelog.md && { changelogupd changelog.md; :; }
git add .
원하는 효과를 얻으려면 명령을 그룹화해야 합니다. 이 :
문은 dococ이 실패할 수 있는 경우 진정한 결말을 제공하기 위해 추가되었습니다.