Zihao

Make small but daily progress

0%

Linux中vim保存root权限的文件

今天在linux操作时发现忘记sudo后,在vim中保存一个只有root可以写的文件了。

Linux中经常会遇到用vim编辑好了文件,保存的时候提示当前文件是只读的。

1
E45: ‘readonly’ option is set (add ! to override)

原因也很简单,因为用户对当前编辑的文件没有写入权限,一个可行的解决办法就是重新使用sudo命令打开这个文件重新进行编辑,但是这样做的话,之前的编辑工作就需要全部重来了,怎么样才能在忘记使用sudo vim编辑自己不可写的文件后,仍然可以正常写入文件呢?

vim的强大之处就体现出来了,下面的指令轻松搞定

1
:w !sudo tee %

下面是命令使用的情况

1
2
3
4
5
6
7
:w !sudo tee %
[sudo] password for xxxx:




Press ENTER or type command to continue

回车后会提示文件已经改变,按O或者L重新加载一下就好。

1
2
3
W12: Warning: File “xxx” has changed and the buffer was changed in Vim as well
See “:help W12” for more info.
[O]K, (L)oad File:

命令解释

1
2
3
:wvim的写入命令
% 当前编辑的文件名
!sudo tee vim中调用shell命令都是以!开头的

整个命令就是:以root的身份运行tee命令,读取vim :w命令的输出作为标准输入,将其内容输出到标准输出设备,同时保存到%表示的文件中

  • 本文作者: Zihao Yao
  • 本文链接: https://yaozihao.com/linux_vim_root/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

欢迎关注我的其它发布渠道