У меня есть программа на C, которая отображает ее командную строку, итерируя через переменную argv
.Как именно zsh расширяют шары?
#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;
}
Я запускает программу в папку, содержащую большой C++ исходного дерева, как это:
./a.out **/*.h
Выход:
zsh: argument list too long: ./a.out
Однако такие программы, как ls
и grep
работы без какой-либо проблемы при вызове с использованием шара **/*.h
в той же папке. Почему при вызове моей программы ошибка zsh
? Как zsh
идет о расширении подстановочных знаков?
Редактировать: Я использую zsh на cygwin.
зачем использовать двойной «*» вместо сингл '*' в командной строке? –