일련의 터미널 명령, 각 명령은 파일이 존재할 때 실행됩니다.

일련의 터미널 명령, 각 명령은 파일이 존재할 때 실행됩니다.

다른 질문에서 이것을 찾았지만 비슷한 것을 찾을 수 없는 것 같습니다. 그런데 이건 정말 유용한 내용인 것 같습니다.

내 ZSH 조각/별칭에 대해 하나를 설정하여 git add .체인에서 세 가지 작업을 수행하고 싶습니다.

  1. 경로가 ./readme.md존재하면 다음을 실행하십시오.의사(npm에서 전역적으로 CLI 애플리케이션을 설치합니다.)만약 없다면, 아무것도 하지 않고 다음 단계로 건너뜁니다.
  2. 경로가 ./changelog.md존재하는 경우 다른 로컬 CLI 설치 스크립트( 이름으로 가정됨 changelogupd)가 해당 경로에서 실행됩니다.만약 없다면, 아무것도 하지 않고 다음 단계로 건너뜁니다.
  3. 이전 결과에 관계없이 다음을 실행하십시오.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 .

이중 파이프를 사용하여 네 가지 경우를 모두 처리해야 할까요?

(

  1. readme존재하지 않음, changelog게다가git add .
  2. readme존재하지 않는다, 존재하지 않는다, 존재하지 않는다, 존재하지 않는다, 존재하지 않는다, 존재하지 않는다, 존재하지 않는다 , changelog존재하지 않는다, 존재하지 않는다git add .
  3. 둘 다 readme존재하고 changelog, 게다가git add .
  4. 아니 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이 실패할 수 있는 경우 진정한 결말을 제공하기 위해 추가되었습니다.

관련 정보