This is the mail archive of the cygwin@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: bash /usr/bin/ls invalid argument


Hello,

Hannu E K Nevalainen a écrit :

From: Jared Ingersoll
Sent: Monday, October 27, 2003 8:55 PM

....


There is a 32KB length limit on the command line. This is imposed on us by
the underlying "OS" - i.e. not likely to change.


To check how long your command line would be, try something like this:


$ find -type f -name 'send.log.*' |
(
  read f;
  cc=-1;
  echo "";
  while [ ! -z "$f" ];do
    cc=$(( 1 + $cc + $( echo "$f" | wc -c) ));
    echo -e "\e[F$cc\e[K";read f;
  done;
  echo -e "\e[F$cc chars"
)

Remember to add the length of e.g. "ls -l " (note space).

If this gives a number larger than...

$ echo $(( ( 1 << 15 ) -1 ))
32767

... then you're "outta luck".


I try your command on a Microsoft XP pro and I win


nicolas@cl12369n ~ s=1
 $ find -type f -name '*' | (   read f;   cc=-1;   echo "";   while
[ ! -z "$f" ]; do     cc=$(( 1 + $cc + $( echo "$f" | wc -c) ));
 echo -e "\e[F$cc\e[K";read f;   done;   echo -e "\e[F$cc chars"; )
1789980 chars

Where is the problem?

bye

/Hannu E K Nevalainen, B.Sc. EE - 59?16.37'N, 17?12.60'E
-- printf("Timezone: %s\n", (DST)?"UTC+02":"UTC+01"); --
--END OF MESSAGE--


-- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/






Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]