vim强制sudo写入文件的原理

ubuntu或者其他的操作系统,使用sudo用户组的用户登录。

在使用vim编辑时,偶尔会忘记在编辑打开时 使用sudo vim。那么在编辑一些需要高级别写入权限的文件的时候。

:w 却无法写入,特别是文件编写了很长一段,弃之可惜。

使用 :w !sudo tee % 也就可以强制写入文件。

那么这组命令是什么原理 执行了什么操作?

这里的:w 是写入到文件,默认是当前文件  :w other.txt 可以指定文件,将buffer中的内容写入到文件。其实更本质的操作,是:w 将buffer中的内容写入到目标位置(这里可以是文件 管道 等任意文件描述符)

!sudo tee  是利用tee的作用,开启了一个拥有sudo权限的读入和写出管道,%在vim中指代当前文件。

那么也就是利用tee开启的管道,实现了强制写入文件。