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 % solution
wfaulk贴