LINUX.ORG.RU

bash: Argument list too long


0

0
имеем:
#include <stdio.h>
int main(int argc, char* argv[])
{
printf ("argc = %u\n");
return 0;
}

gcc ./argc.cpp -o argc
./argc ./*
Если в каталоге слишком много файлов получаем subj сообщение :(
Поскольку bash ./* превращает в список файлов подпадающих под эту маску...
Как увеличить буфер bash ?!!
Я понимаю что можно передовать ./argc './*' и обрабатывать маску самому,
но это изврат IMHO... Подскажите как увеличить буфер bash ?!!
anonymous
Кстати такой облом и со стондартными утилитами типа mv :((( Как победить ?

anonymous
()
использовать xargs , например ls * | xargs rm
sasha999 ★★★★
()
Угу, ты сам то попробуй:
bash: /bin/ls: Argument list too long

Должно быть что-то типа переменной в bash...
anonymous
()
Есть общее ограничение на размер коммандной строки. Потому как некоторые программы это при ./configure проверяют. Так что это скорее всего надо посмотреть в info libc
kpanic ★★
()
а может совет sasha999 правильный??

попробуй ls . | xargs ./prog

dilmah ★★★★★
()
хотя конечно да, наверное общее ограничение ядра тоже присутствует..
dilmah ★★★★★
()
Да, батенька, я удивляюсь Вам. Если rm * не идет, то ls * | xargs rm использовать?? Разница-то какая? И в первом случае bash будет звездочку в список аргументов разворачивать и во втором. Тут до меня правильно заметили, что нужно вовсе без звездочки - ls | xargs rm
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.