天天看點

避免’sudo echo x >’ 時’Permission denied’

<a href="https://stackoverflow.com/questions/6207951/bash-wrong-pipe-output-when-using-sudo-sh-c" target="_blank">https://stackoverflow.com/questions/6207951/bash-wrong-pipe-output-when-using-sudo-sh-c</a>

避免’sudo echo x &gt;’ 時’Permission denied’

甲: 示例

sudo echo a &gt; 1.txt

-bash: 1.txt: Permission denied

乙: 分析:

bash 拒絕這麼做,說是權限不夠.

這是因為重定向符号 “&gt;” 也是 bash 的指令。sudo 隻是讓 echo 指令具有了 root 權限,

但是沒有讓 “&gt;” 指令也具有root 權限,是以 bash 會認為這個指令沒有寫入資訊的權限。

丙: 解決辦法。三種:

1. 利用 “sh -c” 指令,它可以讓 bash 将一個字串作為完整的指令來執行,這樣就可以将 sudo 的影響範圍擴充到整條指令。

具體用法如下:

sudo sh -c "echo a &gt; 1.txt"

利用bash -c 也是一樣的,現在bash shell 流行。

2.  利用管道和 tee 指令,該指令可以從标準輸入中讀入資訊并将其寫入标準輸出或檔案中,

echo a |sudo tee 1.txt

echo a |sudo tee -a 1.txt   // -a 是追加的意思,等同于 &gt;&gt;

tee 指令很好用,它從管道接受資訊,一邊向螢幕輸出,一邊向檔案寫入。

linux 總是有一些小工具為我們考慮的很貼切!

3. 提升shell 權限。

sudo -s        //提到root 權限。提示符為#

當你覺得該退回到普通權限時,

sudo su username //退回到username 權限,提示符為$

exit 退出目前使用者,回到上一層目錄.

centos 提升權限: su  -

ubuntu 提升權限: sudu -s, sudo su

本文轉自 Tenderrain 51CTO部落格,原文連結:http://blog.51cto.com/tenderrain/1979402

繼續閱讀