页首Html代码

返回顶部

vim 用 :w !sudo tee % 进行保存的终极奥义

经常使用vim忘记了不是root , 而提示没有写入权限的情况,所以查询一下,相关命令是:

:w !sudo tee %

  

那么这条命令是如何理解的呢?

首先 ,vim 写入文件是

:w [文件名]

  

这里的文件名也可以是设备,比如 /dev/stdin /dev/stdout

我们没有权限,先把内容写到 `/dev/stdin` ,

 

其次 理解tee的含义,就是把从 stdin 读取的内容重定向到某一个文件,类似于 `>>` 符号,但 你无法使用 `sudo >>` ,所以 tee 是 >或 >> 的一个替代命令, >和>> 或者< 和<< 根本不是命令,

所以 sudo tee [文件名],就是从标准stdin 来写入到[文件名]。

在vim 命令模式下, `%` 就是 当前的文件名,是一个当前文件名的快速替换品,或者说是环境变量也可以。

`sudo tee %` 就是 把内容写入到当前文件。

所以 合并两面两点,vim 先写入到 一个能返回 stdin 的命令,这个命令就是 sudo tee % , 为了调用这个命令,前面加一个感叹号

如果换成shell,其实上面的命令就是

echo ${文件_Buff}  | sudo tee ${文件名}  

 

这样就能解释并记住这个命令了:  

:w !sudo tee %

  

理解tee的含义,就是把从 stdin 读取的内容重定向到某一个文件,类似于 `>>` 符号,但 你无法使用 `sudo >>` ,所以 tee 是 >或 >> 的一个替代命令, >和>> 或者< 和<< 根本不是命令,

posted @ 2020-04-24 19:31  ayanmw  阅读(2328)  评论(0编辑  收藏  举报

页脚Html代码