2 u013113904 u013113904 于 2015.07.10 10:06 提问

请问一下,能不能让Linux中一个文件,文件夹显示的和实际大小不一样 2C

请问一下,能不能让Linux中的一个实际上大小是1M的文件,在显示大小时(ls -l)显示自己想要它显示的大小(如79kB)

5个回答

SunliyMonkey
SunliyMonkey   2015.07.10 11:39

为啥有这样的需求呀~
1.估计需要看看ls的原理~
2. 你自己写一个ls,封装一层bin里面的ls
正常情况下,直接使用自带ls执行的结果。
针对特殊的文件,你可以修改ls的结果之后,再显示到终端上

SunliyMonkey
SunliyMonkey 回复hgjdf: 也可以不用后台进程,执行ls,其实是到/bin这样的目录下去运行相关命令的二进制文件,你替换这个执行文件就行
2 年多之前 回复
SunliyMonkey
SunliyMonkey 回复hgjdf: 这个我不太清楚,/bin/ 下面有各种命令的二进制文件,这些二进制文件的源码,也许在内核源码当中有
2 年多之前 回复
u013113904
u013113904 ls的原理和具体实现怎么封装哪儿看啊 不知道额
2 年多之前 回复
u013113904
u013113904 我现在在想,搞个后台进程,将stdout重定向到一个文件,然后匹配stdin输入的命令,要是遇到那个查看c文件夹的命令,我就自己输入到stdout上
2 年多之前 回复
u013113904
u013113904 遇到一个闲的蛋疼的领导,要求写一个程序,就是有AB两个文件夹,然后建一个c文件夹,要求c里面文件的名字和大小和A里面一样,内容是B里面的,还要求最后能将c里面的内容恢复的跟b一样
2 年多之前 回复
zuishikonghuan
zuishikonghuan   2015.07.10 12:59

自己写一个中间层,劫持掉原来的ls,或者修改Linux内核的VFS的实现逻辑(没有研究过Linux源码的别这么做,因为你可能用很长时间学习Linux内核)

zuishikonghuan
zuishikonghuan 回复hgjdf: 首先找到环境变量中的系统目录,比如,我这里Android是/system/bin,一般来说ls程序会在这里面,自己写一个替换它。
2 年多之前 回复
u013113904
u013113904 回复zuishikonghuan: 那个怎么替换掉系统的啊
2 年多之前 回复
zuishikonghuan
zuishikonghuan 回复hgjdf: 那就自己写一个ls程序,替换掉系统的,然后发现要改大小的目录就输出一个你希望的值。(缺点是如果用户不用ls用其他的程序就露馅了)
2 年多之前 回复
u013113904
u013113904 难度太高,我现在就是个入门级小菜鸟,蛋疼,只能看其他方法了
2 年多之前 回复
Arnold9009
Arnold9009   2015.07.10 16:53

给文件制造一个空洞好像可以吧

u013113904
u013113904 跪求详细一下
2 年多之前 回复
zuishikonghuan
zuishikonghuan   2015.07.11 18:33

找到ls程序在哪里,然后自己写一个替换它

oyljerry
oyljerry   Ds   Rxr 2015.07.11 23:11

如果只针对ls,可以自己做一个ls程序,然后修改系统软链接。
不然就要修改文件系统。

Csdn user default icon
上传中...
上传图片
插入图片