很多时候我发现自己处于这样一种状态,我最终在vi编辑器中编辑了我没有权限的文件。因此,我们必须将内容复制到其他文件中,并通过更改权限将其复制回原始文件。但我通过搜索网络找到了一个解决方案,我们可以发出命令:w!sudo tee%,而且不需要来回复制。谁能解释一下这是怎么回事!!
答案 0 :(得分:6)
让我们看看......
:w !{cmd}
执行{cmd}
,将当前缓冲区输入其标准输入。
此处{cmd}
为sudo tee %
。这会将tee {filename}
作为root
执行,其中{filename}
是您正在编辑的文件的名称。该命令将其标准输入(即vim
缓冲区的内容)写入文件,root
。
干净的技巧,BTW。
答案 1 :(得分:3)
您正在将文件写入命令的STDIN:
sudo tee %
sudo升级你的权限并且tee将STDIN写入文件(在执行命令之前%被vim替换为当前文件名)