【发布时间】:2011-10-04 19:19:18
【问题描述】:
很多时候我发现自己最终在 vi 编辑器中编辑我没有权限的文件。因此,我们必须复制其他文件中的内容并通过更改权限将其复制回原始文件。但是我通过搜索网络找到了一种解决方案,我们可以给出命令 :w !sudo tee % 并且不需要来回复制。任何人都可以解释这是如何工作的!
【问题讨论】:
-
@Darhazer 对不起,我应该在之前搜索过这个主题!
很多时候我发现自己最终在 vi 编辑器中编辑我没有权限的文件。因此,我们必须复制其他文件中的内容并通过更改权限将其复制回原始文件。但是我通过搜索网络找到了一种解决方案,我们可以给出命令 :w !sudo tee % 并且不需要来回复制。任何人都可以解释这是如何工作的!
【问题讨论】:
让我们看看...
:w !{cmd}
执行{cmd},将当前缓冲区输入其标准输入。
这里,{cmd} 是 sudo tee %。这会将tee {filename} 执行为root,其中{filename} 是您正在编辑的文件的名称。该命令将其标准输入(即vim 缓冲区的内容)写入文件,如root。
巧妙的把戏,顺便说一句。
【讨论】:
您正在将文件写入命令的 STDIN:
sudo tee %
sudo 升级你的权限,tee 将 STDIN 写入文件(% 在执行命令之前被 vim 替换为当前文件名)
【讨论】: