7

In Bash

echo *

is almost equivalent to ls.

You can do things like

echo */*-out/*.html > all-my-html-files-on-one-line

Since * is a command line argument then there should be a limit on the length.

What is that limit?

Is the limit different between echo the Bash command and /bin/echo the program?

Ulrich Eckhardt
  • 16,104
  • 2
  • 26
  • 53
Aleksandr Levchuk
  • 4,041
  • 4
  • 32
  • 41

2 Answers2

8

The shell does not limit this

You can see the limit for your system with (run on my 64bit linux:)

$ getconf ARG_MAX
2097152

See this very informational page http://www.in-ulm.de/~mascheck/various/argmax/

codeforester
  • 34,080
  • 14
  • 96
  • 122
sehe
  • 350,152
  • 45
  • 431
  • 590
3

I believe the command line limit is the value of ARG_MAX which you can see with

getconf ARG_MAX

This is not a bash variable, which would suggest that the limit is the same for echo in bash and /bin/echo.

borrible
  • 16,503
  • 7
  • 53
  • 72
  • 7
    `echo` doesn't execute any external commands, so it's not affected by ARG_MAX. Try it out `/bin/echo $(seq $(getconf ARG_MAX))` will fail but `echo $(seq $(getconf ARG_MAX))` will probably succeed. – Piotr Praszmo Jun 23 '11 at 22:35