Question

Je lance le code suivant

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

je reçois

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

C'est étrange, puisque les travaux suivants

echo Masi{1..9}/masi

Cela me suggère que le problème peut être un bogue dans Zsh.

Ce qui précède est-il un bogue dans Zsh pour {1..9}?

Était-ce utile?

La solution

Ce n’est pas un bug, et cela fonctionne bien à l’intérieur des mots. Le problème que vous rencontrez ici est que {1..9} n’est pas une expression générique telle que *; comme le montre votre exemple d'écho, il s'agit d'une expansion itérative. Ainsi, votre exemple de zgrep est exactement le même que si vous aviez tapé chaque version alternative dans la ligne de commande. Puis, comme il n'y a pas de pages de manuel commençant par zsh dans man2, elle est erronée. (Il est erroné de ne pas trouver de correspondance, pas d’information intrinsèque à l’extension de votre séquence d’accolade.)

Si vous avez fait cela, par contre:

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

vous obtiendrez les résultats escomptés, car [1-9] est une expression générique normale.

Autres conseils

Sous zsh, si vous souhaitez utiliser des plages dans les noms de fichiers, zle offre <1-n> des noms réels sur lesquels il peut être développé. C'est-à-dire:

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

Ensuite, appuyez sur <Tab> juste après que la dernière b vous laisse avec print a0b a1b a5b a7b développé sur la ligne.

Pour toutes les autres intentions - peut-être des exigences complètes, l'utilisation de fichiers et de scripts - je l'exprimerais en utilisant la boucle idiomatique zsh plutôt succincte sous la forme:

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

Vous permettra de traiter l’ensemble de la séquence des nombres de 1 à 50 :), après quoi vous pourrez faire toutes sortes de choses utiles, telles qu’une collection de fichiers qui n’existe pas encore:

arr=($(for n ({1..50}); do print /my/path/file$n.txt; done)) && print $arr[33]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top