我在linux下使用vi打开一个文件后,然后保存关闭,结果发现最后多出一个字符,估计是回车符什么的

我在linux下使用vi打开一个文件后,然后保存关闭,结果发现最后多出一个字符,估计是回车符什么的,第1张

先用ls -l查看文件大小,例如源文件为8字节,用VI编辑后变成了9字节。这一般是VI在最后加了个‘\n’字符,可以用objdump -c 文件名 查看最后的字符到底是什么。用truncate -s 8 文件名 把文件截断至8字节即可。不过'\n'不会影响程序编译吧,但是回车^M这个字符在VI里面是可见的。如果是^M就用VI命令 :%s/^M//g 回车注意:里面的^M 必须是同时按 Ctrl+V+M ,表示回车

1、chattr是用来更改文件属性,lsattr可用来查看文件的属性,执行命令lsattr /etc/sysctl.conff便可以看到当前文件的属性;

可以发现当前文件有个i属性,查阅命令帮助文档可以看到有i属性的文件是不能修改的,更不可被删除,即使是root用户也不可。

2、既然知道了文件不能 *** 作的原因是加了i属性,所以相应的解决方案就是把文件的i属性去除,然后对此文件内容进行修改,最好在 *** 作完成后恢复文件的i属性。

去除i属性:chattr -i /etc/sysctl.conf

添加i属性:chattr +i /etc/sysctl.conf

扩展资料

chattr命令用于修改文件属性,chattr命令需要root权限。

文件属性:

a: append only系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。

c: compressed系统以透明的方式压缩这个文件。从这个文件读取时,返回的是解压之后的数据;而向这个文件中写入数据时,数据首先被压缩之后才写入磁盘。

d: no dump在进行文件系统备份时,dump程序将忽略这个文件。

i: immutable系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。

这个和 *** 作系统没有直接联系 和语言编译器有关.

C/C++编译器在Linux通常gcc/g++ 在编译的时候自动会给用“”的字符串加‘\0’

字符串截断符和语言有关.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/6257363.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-19
下一篇 2023-03-19

发表评论

登录后才能评论

评论列表(0条)

保存