在bash(或其他shell)中,输入可以有多长时间?如果是,那是什么字符限制?
也就是说是否可以在bash中写一个太长的命令来执行命令行?
如果没有要求的限制,是否有建议的限制?
命令行的长度限制不是由shell强制的,而是由操作系统决定的。此限制通常在百千字节的范围内。 POSIX表示此限制ARG_MAX和POSIX一致的系统,你可以查询它
$ getconf ARG_MAX # Get argument limit in bytes
例如。在Cygwin这是32000,在不同的Linux发行版我使用它是从131072到2621440。
如果需要处理超过此限制的文件列表,您可能需要查看xargs实用程序,该实用程序会重复调用一个参数子集不超过ARG_MAX的程序。
要回答你的具体问题,是的,可以尝试运行一个参数列表太长的命令。 shell将会出现一个消息“参数列表太长”。
注意,对程序的输入(在stdin或任何其他文件描述符上读取)不受限制(仅由可用的程序资源)。因此,如果您的shell脚本将字符串读入变量,您不受ARG_MAX的限制。