문제

나는 다음 코드를 실행

zgrep -c compinit /usr/share/man/man{1..9}/zsh*

zsh: no matches found: /usr/share/man/man2/zsh*

이것은 이상 때문에,다음과 같은 작

echo Masi{1..9}/masi

이것은 나에게 그 문제가 될 수 있습 버그에서 Zsh.

은 위에서 버그 Zsh{1..9}?

도움이 되었습니까?

해결책

버그가 아니며 단어 안에서 잘 작동합니다. 당신이 여기에있는 문제는 그 것입니다 {1..9} 와일드 카드 표현이 아닙니다 * 이다; Echo 예제에서 알 수 있듯이 반복적 인 확장입니다. 따라서 ZGREP 예제는 각 대체 버전을 명령 줄에 입력 한 것과 정확히 동일하며 MAN2의 ZSH로 시작하는 사람 페이지가 없으므로 오류가 발생합니다. (브레이스 시퀀스 확장과 본질적으로 관련이있는 것이 아니라 일치를 찾지 못한 경우 오류가 발생합니다.)

반면에 이것을했다면 :

zgrep -c compinit /usr/share/man/man[1-9]/zsh*

당신은 당신이 기대하는 결과를 얻을 것입니다 [1-9] 정상적인 와일드 카드 표현입니다.

다른 팁

에 zsh 하려는 경우,범위를 사용하여 파일 이름에서,zle 제공 <1-n> 에 실제 어떤 이름을 확장할 수 있습니다.는 말을하는 것입니다:

$ touch a0b a1b a5b a7b
$ print a<0-100>b

다음 <Tab> 오른 최종 후 b 당신을 떠날 것으로 print a0b a1b a5b a7b 확장 라인에 있습니다.

에 대한 다른 모든 의도와 목적에도 전체 범위에 요구 사항,파일과 스크립팅을 사용하여-내가 이것을 표현을 사용하여 오히려 간결한 관용 zsh 루프로:

for n ({1..50}); do print $n; done

할 수 있 프로세스 전체 시퀀스 범위의 번호 1~50:)을 할 수 있는 유용한 모든 종류의 것으로,같은 파일 컬렉션하는 아직 존재하지 않:

arr=($(for n ({1..50}); do print /my/path/file$n.txt; done)) && print $arr[33]
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top