여러 기능을 bash 스크립트로 결합

여러 기능을 bash 스크립트로 결합

다음 명령(마지막 명령은 zsh 함수)을 단일 bash 스크립트로 결합하는 방법이 있습니까?

  • find /path/to/directory/*/* ! -name "*.js" -type f -delete
  • find /path/to/directory/*/* ! -name "*jquery*" -type f -delete
  • find /path/to/directory/*/* ! -name "*jquery*" -type d -delete
  • for dir (/path/to/directory/*(/)) rm -f $dir/*.js(OL[2,-1])

답변1

명령을 순차적으로 실행하는 스크립트를 작성하려는 경우 두 가지 실제 옵션이 있습니다.

  1. 마지막 명령에 대해 zsh를 호출하여 실행하는 bash 스크립트를 작성합니다(한 쉘이 다른 쉘을 호출하도록 함).
  2. 4개의 명령을 순서대로 실행하는 zsh 스크립트를 작성하고 bash는 잊어버리세요.

bash는 Linux에서 매우 일반적인 쉘이지만 bash 자체에는 마법 같은 것이 없습니다. zsh 스크립트를 쉽게 작성할 수도 있습니다. #!시작 줄은 스크립트를 실행하는 데 사용해야 하는 프로그램을 알려줍니다.

따라서 위의 옵션 2를 사용하려면(아마도 그렇게 할 것임) #!/bin/zshzsh(또는 zsh가 시스템에 있는 모든 위치)로 시작하는 일반 텍스트 파일을 만든 다음 명령을 실행하면 됩니다. 당신은 다음과 같은 것을 얻게 될 것입니다 :

#!/bin/zsh
find /path/to/directory/*/* ! -name "*.js" -type f -delete
find /path/to/directory/*/* ! -name "*jquery*" -type f -delete
find /path/to/directory/*/* ! -name "*jquery*" -type d -delete
for dir (/path/to/directory/*(/)) rm -f $dir/*.js(OL[2,-1])

그 이상은 없어야 합니다.노트:zsh의 특성에 따라 더 많은 참조를 사용해야 할 수도 있고 필요하지 않을 수도 있습니다. 나는 확장되는 변수 주위에 항상 "따옴표"를 두는 것을 선호합니다.긍정적인만일의 경우에는 필요하지 않습니다(그런 경우에도 종종 필요합니다).

관련 정보