Ho un programma C che mostra la sua riga di comando iterando attraverso la variabile argv
.In che modo esattamente zsh estende glob?
#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;
}
ho invocato il programma in una cartella contenente una grande C++ albero di origine in questo modo:
./a.out **/*.h
L'output:
zsh: argument list too long: ./a.out
Tuttavia, programmi come ls
e grep
lavoro senza alcuna problemi quando viene richiamato utilizzando il glob **/*.h
nella stessa cartella. Perché zsh
non riesce durante il richiamo del mio programma? In che modo zsh
riguarda i caratteri jolly in espansione?
Modifica: Sto usando zsh su cygwin.
Perché usare doppia '*' invece di singolo '*' nella riga di comando? –