Answers:
在这种情况下,我用编写文件:w /tmp/tmpfile。然后我出去并/tmp/tmpfile使用sudo权限移到我的旧文件。
vi默认的文件模式(权限)(可能为666,并与“ umask”的倒数进行“与”运算),并用您的UID替换文件的所有者(它是“ root”,不是吗?),并断开硬链接。
/tmp目录的其他用户。(2)如果您的系统上确实有邪恶的用户,那么/tmp/tmpfile在您编写(从中vi)和通过正在编辑的系统配置文件复制它之间,他们可以替换您。将临时文件放到只有您可以访问的目录中比较安全。
从SO:
:w !sudo tee %
我实际上发现自己现在使用这种方式更频繁地执行此操作:
:%!sudo tee %
我认为这样做更直观,因为我知道该怎么:%!做,而我对此没有内在的了解:w !。另外,很容易错过w和之间的重要位置!。
vi命令可以是多个字母,因此理论上可以有一个“ wfoo”命令,因此,如果要写入名为“ foo” 的文件,则必须说“ :w foo”。即,您需要在“ :w” 之后加一个空格。就“ :w !”而言,您知道“ :!”是吗?“ :!date”运行“ date”命令。因此,“ :w !xyz”将缓冲区写入命令,而不是写入文件。
%?
% 可能会更难。)(3)好,我会帮你的忙。 tee是一个程序,可让您将信息写入多个位置。例如,date | tee cody将当前日期和时间写入名为cody …(续)的文件
date | tee cody > bugstein会将当前日期和时间写入名为的文件cody以及名为的文件bugstein。—你明白sudo吗?它使您可以使用其他用户(通常是root)的特权运行命令。例如,ls /root通常会失败,因为您无权访问 /root。但是sudo ls /root会起作用。— Unix的工作方式的不幸副作用是,该sudo ls /root > /root/cody失败将失败,因为您无权访问 /root,因此无法写入/root/cody。…(续)
您不能打开另一个终端并临时更改文件的访问权限吗?
:w !sudo tee % solutionwfaulk贴