vi编辑器强制写⼊wq!命令详解
已知
vi编辑器在编辑⽂件的过程中会在⼯作⽬录新建⼀个.swp的交换⽂件,不可见。举个例⼦,在vi vitest的时候,进⼊vi命令⾏键⼊! ls -al 会出现:
-rw------- 1 li li 12288 Mar 17 16:55 .vitest.swp
注意这个⽂件的全县只有他需要的rw
下⾯我们来试验⼀下,对于-r-----r-- 1 li root 35 Mar 17:45 vitest这个⽂件,强制写⼊后结果是什么样呢
分两种情况:linux使用vim编辑文件
当⽂件owner是vi命令执⾏者时(li),编辑⼀个没有w权限的⽂件后执⾏wq!,ll显⽰
-r-----r-- 1 li root 35 Mar 17 16:57 vitest
这表⽰:
如果⽂件所有者是执⾏vi命令的执⾏者,虽然产⽣了swp⽂件,但最终wq!后还是原本的属性不会变,只是mtime变了。
猜测vi内部可能先chmod再写⼊《鸟哥linux私房菜》是这阳描述的,不过写的很模糊诶。
当⽂件owner(root)不是vi命令执⾏者时(li),编辑⼀个没有w权限的⽂件后执⾏wq!,ll显⽰
-r-----r-- 1 li li 41 Mar 17 17:11 vitest
这表⽰:
如果⽂件所有者不是执⾏vi命令的执⾏者,那么强制override的结果就是,通过swap⽂件,产⽣了所有者和⽤户组都是执⾏者的新⽂件,并且属性继承源⽂件.
猜测vi内部将原⽂件删除,然后将swap修改权限后,写⼊了该⽬录,因为这下chmod是没有权限的

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。