使用vi/vim编辑只读文件,打开的时候忘记加sudo怎么办
Posted 奇妙之二进制
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用vi/vim编辑只读文件,打开的时候忘记加sudo怎么办相关的知识,希望对你有一定的参考价值。
在linux服务器上操作一些配置文件时,有很大一部分都是只读文件,我们当然知道要使用sudo命令用管理员身份来打开并编辑,但是有时候需要编辑好多文件,某一个文件打开的时候很有可能就忘记加sudo,这时候问题来了,当我们愉快的编辑完成之后,输入:wq 时就悲剧了,提示没有权限,那我们怎么办呢?记下刚刚修改的内容,强制退出,重新用管理员身份打开,重新编辑。好麻烦有木有,有一个更简单的方法,如下:
:w !sudo tee %
如果不是root用户,这里会提示你输入密码。
这条命令是什么意思呢?
命令:w !cmd
,让 vim 执行一个外部命令cmd,然后把当前缓冲区的内容从 stdin 传入。
tee是一个把 stdin 保存到文件的小工具。
而 %,是vim当中一个只读寄存器的名字,总保存着当前编辑文件的文件路径。
所以执行这个命令,就相当于从vim外部修改了当前编辑的文件。
执行完上面的命令,vi/vim会有一个提示
W12: Warning: File "/etc/passwd" has changed and the buffer was changed in Vim as well
See ":help W12" for more info.
[O]K, (L)oad File:
这个是说你的文件已经被改过了,而当前vim打开的还是原始的文件,是确定还是重新载入文件?
我们当然是要新文件了,所以敲入 L ,这时候就可以放心的退出编辑器了。
以上是关于使用vi/vim编辑只读文件,打开的时候忘记加sudo怎么办的主要内容,如果未能解决你的问题,请参考以下文章
使用vi/vim编辑只读文件,打开的时候忘记加sudo怎么办