用vim打开/etc之类文件夹里文件时,如果没有用sudo打开,就无法将对文件的修改进行保存,此时除了退出之后用sudo重新打开以外,可以采用如下的方法:

   :w ! sudo tee %


解释一下:


man vim可以看到:

   :[range]w[rite] !{cmd}    

   Execute {cmd} with [range] lines as standard input

而%则表示当前文件名


man tee可以看到:

   tee - read from standard input and write to standard output and files

tee命令从标准输入流读,写入标准输出流;上面这样做是将文件的内容作为了tee的输入,用sudo写入了该文件本身。