我想通过shell命令动态的将一些文件压缩在一起。请问tar命令后最多能连接多少长度的字符串啊?

我想通过一个变量x来记录这些文件名,请问x最多可以保存多长的字符串啊?
原因又是什么呢?
他和内存之间是个什么样的关系呢?
是这样的,我发现我的变量存储大概一CRT屏幕的字符串就
在打印这个字符串变量就变成空字符串了。

(⊙o⊙)…大家对于我这个问题有什么好得想法么···
我觉得我这样比较省事
但是有可能会记录很长很长的字符串,我怕出问题。

谢谢qyiyunso,我x存储的是文件名字····我不是问文件名最多能多长,是x最多能存储多长···

第1个回答  2011-11-07
自己测试吧,这个跟文件系统相关,我的是ext4的分区,好像最多允许128位长的文件名;
512长度测试:
tar cvzf 10010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626.tar.gz dic.txt
tar (child): 100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264262526626.tar.gz:无法 open: 文件名过长

128长度测试,没有错误:
$ tar cvzf 100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139.tar.gz dic.txt
dic.txt
qunero@qunero-Ubuntu-desktop ~
256长度测试,成功了,257的失败!:
$ tar cvzf 10010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118.tar.gz dic.txt
dic.txt追问

我x存储的是文件名字····我不是问文件名最多能多长,是x最多能存储多长···也就是tar 的最后一个参数的长度(⊙o⊙)

追答

这个不是很明显么,x中每一个文件名限制为256,个数没有限制,也就是x本身的长度没有限制。比如:
touch {1,2,3}{0..9}{0..9}.txt
x=`ls`
echo $x
---------echo 输出------------
100.txt 101.txt 102.txt 103.txt 104.txt 105.txt 106.txt 107.txt 108.txt 109.txt 110.txt 111.txt 112.txt 113.txt 114.txt 115.txt 116.txt 117.txt 118.txt 119.txt 120.txt 121.txt 122.txt 123.txt
...
388.txt 389.txt 390.txt 391.txt 392.txt 393.txt 394.txt 395.txt 396.txt 397.txt 398.txt 399.txt
----------------输出结束-------
tar czf a.tgz $x
这个没有问题。$x内容为300个文件,每一个长度为7。

第2个回答  2011-11-07
变量x能保存多少,完全取决于你的内存。
所以你不要在乎能保存多少,足够你用了。追问

他和内存之间是个什么样的关系呢?
是这样的,我发现我的变量存储大概一CRT屏幕的字符串就
在打印这个字符串变量就变成空字符串了。

追答

具体能容纳多少,我也不知道。几屏应该没问题。
估计是你没存上。变量的值是往内存里调度啊。当然你内存有多大,你存变量就能有多大啦。

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网