今天在linux操作时发现忘记sudo
后,在vim
中保存一个只有root
可以写的文件了。
Linux中经常会遇到用vim编辑好了文件,保存的时候提示当前文件是只读的。
1 | E45: ‘readonly’ option is set (add ! to override) |
原因也很简单,因为用户对当前编辑的文件没有写入权限,一个可行的解决办法就是重新使用sudo
命令打开这个文件重新进行编辑,但是这样做的话,之前的编辑工作就需要全部重来了,怎么样才能在忘记使用sudo vim
编辑自己不可写的文件后,仍然可以正常写入文件呢?
vim的强大之处就体现出来了,下面的指令轻松搞定
1 | :w !sudo tee % |
下面是命令使用的情况
1 | :w !sudo tee % |
回车后会提示文件已经改变,按O
或者L
重新加载一下就好。
1 | W12: Warning: File “xxx” has changed and the buffer was changed in Vim as well |
命令解释
1 | :w 是vim的写入命令 |
整个命令就是:以root
的身份运行tee
命令,读取vim :w
命令的输出作为标准输入,将其内容输出到标准输出设备,同时保存到%
表示的文件中