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 是 >或 >> 的一個替代命令, >和>> 或者< 和<< 根本不是命令,


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM