避免’sudo echo x >’ 時’Permission denied’
甲: 示例
sudo echo a > 1.txt
-bash: 1.txt: Permission denied
乙: 分析:
bash 拒絕這么做,說是權限不夠.
這是因為重定向符號 “>” 也是 bash 的命令。sudo 只是讓 echo 命令具有了 root 權限,
但是沒有讓 “>” 命令也具有root 權限,所以 bash 會認為這個命令沒有寫入信息的權限。
丙: 解決辦法。三種:
1. 利用 “sh -c” 命令,它可以讓 bash 將一個字串作為完整的命令來執行,這樣就可以將 sudo 的影響范圍擴展到整條命令。
具體用法如下:
sudo sh -c "echo a > 1.txt"
利用bash -c 也是一樣的,現在bash shell 流行。
2. 利用管道和 tee 命令,該命令可以從標准輸入中讀入信息並將其寫入標准輸出或文件中,
具體用法如下:
echo a |sudo tee 1.txt
echo a |sudo tee -a 1.txt // -a 是追加的意思,等同於 >>
tee 命令很好用,它從管道接受信息,一邊向屏幕輸出,一邊向文件寫入。
Linux 總是有一些小工具為我們考慮的很貼切!
3. 提升shell 權限。
sudo -s //提到root 權限。提示符為#
當你覺得該退回到普通權限時,
sudo su username //退回到username 權限,提示符為$
exit 退出當前用戶,回到上一層目錄.
centos 提升權限: su -
ubuntu 提升權限: sudu -s, sudo su