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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.