bash에서 zmv, zcalc, zparseopts 및 기타 zsh 내장 유틸리티를 사용할 수 있는 방법이 있습니까?

bash에서 zmv, zcalc, zparseopts 및 기타 zsh 내장 유틸리티를 사용할 수 있는 방법이 있습니까?

bash수년간 사용해 왔고 앞으로도 계속 사용하고 싶습니다. 그러나 동시에, 거기에는 몇 가지 zsh훌륭한 유틸리티 가 있습니다. 이러한 명령에 대한 포트가 있습니까(예 zmv: zcalc또는 zparseopts별도의 실행 파일로 존재 /bin)? 아니면 다음과 같은 트릭을 사용해야합니까?이것?

답변1

zsh장점은 매우 뛰어난 와일드카드 및 매개변수 확장 연산자 zmv에 있습니다 . zsh유사한 것들은 '의 와일드카드 및 매개변수 확장 연산자 bmv로 제한되며 '만큼 유용 bash하지 않습니다 .zshzmv

유사한 연산자를 사용하는 for 가 있는 경우 zmv에도 해당 연산자를 배워야 하며 이러한 고급 연산자를 사용할 수 없는 곳에서 사용할 때 좌절감을 느끼게 됩니다.bashzshbash

어쨌든 bash다음을 통해 언제든지 후자를 수행할 수 있습니다.

zmv() {
  zsh -c 'autoload zmv && zmv "$@"' zmv "$@"
}

zcalc() {
  zsh -c 'autoload zcalc && zcalc "$@"' zcalc "$@"
}

zmv여기서 및 은 인터프리터에 대한 새로운 호출에서 zcalc해당 함수를 실행하는 함수 로 정의됩니다.zshzsh

bash그러나 이 함수의 한계는 분명히 쉘의 내부 변수 에 접근할 수 없다는 것입니다 .

예를 들어, pi = 4 * atan(1)that에서 이 작업을 수행 하면 zcalc해당 $pi변수는 쉘에서 사용할 수 없게 됩니다 bash.

같은 이유로 이 접근 방식을 취하는 것은 zparseopts전혀 쓸모가 없습니다.

관련 정보