J'ai un programme C qui affiche sa ligne de commande en itérant à travers la variable argv
.Comment zsh développe-t-il exactement les globs?
#include <stdio.h>
int main(int argc, char *argv[]){
int i = 0;
printf("----------\n");
for(i = 0; i < argc; i++)
printf("%s\n", argv[i]);
return 0;
}
J'invoquaient le programme dans un dossier contenant un grand arbre source C++ comme ceci:
./a.out **/*.h
La sortie:
zsh: argument list too long: ./a.out
Cependant, des programmes tels que ls
et grep
travail sans problèmes lors de l'appel en utilisant le **/*.h
glob dans le même dossier. Pourquoi zsh
échoue lors de l'appel de mon programme? Comment fonctionne zsh
pour développer les caractères génériques?
Editer: J'utilise zsh sur cygwin.
pourquoi utiliser double « * » au lieu de simple '*' dans votre ligne de commande? –