有时候终端也无法解决一些问题
Tofloor
poster avatar
司南
deepin
2018-10-15 01:15
Author
如果目录的文件名过长,可能导致终端无法打开或者闪退。
工作中总是遇到如下目录结构:
/home/xxx/Desktop/测试文件夹/青山XXX所信息收集台账/关于XX安保设备采购政策(2015)/社会渠道佣金明细/各部门收集资料/防疫中心/1、手工调整设备采购金额台账-直销渠道台账/2-防疫中心-在线设备信息-电脑收集-excel表格形式
但是在目录结构的最末端,不知道是不是因为路径太长,导致终端闪退,不仅是深度终端,xterm也会出现这种情况。
附上测试文件目录,大家都试试,是不是都有这种情况。
测试文件夹.zip
试试能不能在最深的路径右键打开终端



Reply Favorite View the author
All Replies
avatar
wtz
deepin
2018-10-15 04:48
#1
试了,发现崩溃必须同时满足两个条件:
1、绝对路径的总长度大于>224字节(utf-8编码);
2、路径中有字符横跨第224字节(如果第224字节处只有单字节字符,即Latin1平面上的字符,则不会崩溃)。
可能和文件系统的长文件名支持有关?
Reply View the author
avatar
司南
deepin
2018-10-15 19:06
#2
https://bbs.deepin.org/post/169805
试了,发现崩溃必须同时满足两个条件:
1、绝对路径的总长度大于>224字节(utf-8编码);
2、路径中有字符 ...

这是Linux文件系统的问题?那这个问题深度方面有解决方法吗?
Reply View the author
avatar
iminto
deepin
2018-10-15 20:53
#3
本帖最后由 iminto 于 2018-10-15 13:55 编辑
https://bbs.deepin.org/post/169805
这是Linux文件系统的问题?那这个问题深度方面有解决方法吗?

先下结论:不同的文件系统限制不一样。以最常见也最常用的ext4为例,它确实对文件名长度是有限制的,最大是255个字符。但是路径长度ext4没有限制。
所以如果你是ext4的话,那这可能是deepin终端的问题。如果是其他文件系统的话,就要查查文档了是不是超过限制了。


ext4文件系统,用你给的测试样例试了下,manjaro+自带的konsole 。无论是右键打开还是cd逐层进入都没有问题。



700多个字符的超长多层路径测试





Reply View the author
avatar
司南
deepin
2018-10-15 23:27
#4
本帖最后由 sinan 于 2018-10-15 15:57 编辑
https://bbs.deepin.org/post/169805
先下结论:不同的文件系统限制不一样。以最常见也最常用的ext4为例,它确实对文件名长度是有限制的,最大 ...

感谢指点,也可能是深度文件管理器或桌面的问题。我打算安装mate桌面找找原因。---------------
在mate桌面上mate终端还不如深度终端。mate终端在cd进入第一个长文件名的目录时就崩溃闪退了,深度终端在第二级的长文件名的目录时才崩掉。
@wtz

Reply View the author
avatar
司南
deepin
2018-10-16 00:12
#5
https://bbs.deepin.org/post/169805
先下结论:不同的文件系统限制不一样。以最常见也最常用的ext4为例,它确实对文件名长度是有限制的,最大 ...

但是按这样的目录名“4-在战网XX暗黑3中-打大菠萝清单、大菠萝产量的大清单、手工打大菠萝最high年度战士清单”UTF-8格式 118字节,46个字符做三级的目录结构,在第二级目录下也无法右键打开终端,打开终端cd到第三级的目录也会闪退。
@wtz
Reply View the author
avatar
wtz
deepin
2018-10-16 01:21
#6
https://bbs.deepin.org/post/169805
但是按这样的目录名“4-在战网XX暗黑3中-打大菠萝清单、大菠萝产量的大清单、手工打大菠萝最high年度战士 ...

请仔细我在2楼的回复。
1、计算路径长度的时候,必须考虑绝对路径。
2、必须有横跨第224字节的宽字符。也就是说,如果每层文件夹都只包含单字节字符(例如:255个“1”),那么再长的路径也不会崩溃。
Reply View the author