我想做的事的東西線:附加到受保護的文件
echo "Append string" >> protected_file
然而,由於這一文件進行寫保護我得到一個錯誤。運行:
sudo echo "Append string" >> protected_file
似乎在echo命令上運行sudo,仍然給我權限錯誤,我該如何附加到此文件?
我想做的事的東西線:附加到受保護的文件
echo "Append string" >> protected_file
然而,由於這一文件進行寫保護我得到一個錯誤。運行:
sudo echo "Append string" >> protected_file
似乎在echo命令上運行sudo,仍然給我權限錯誤,我該如何附加到此文件?
echo "Append string" | sudo tee -a protected_file >/dev/null
+1內 - 不像公認的答案,它不給任何不需要它們的額外特權,如果內容是由比回聲更復雜的東西生成的,這將是重要的。 –
爲什麼需要>/dev/null? – Richard
@Richard:因爲'tee'發送輸出到文件*和*到標準輸出(兩個地方 - 就像一個管道中的「tee」),我們不需要額外的輸出。將標準重定向到'/ dev/null'會丟棄它。 –
對於字面解釋,
sudo sh -c 'echo "Append string" >> protected_file'
但我原則上同意ShivanRaptor。
說明:>>
是一個shell運算符。如果您調用sudo command
,則不會運行另一個shell;因此,如果不重定向echo
,則不能重定向sudo
(最終會在重定向時爲您提供錯誤的用戶標識)。訣竅是在sudo
內部啓動一個單獨的shell,您可以在其中發出重定向操作符。
謝謝,但這只是我在cmd行寫的一個命令,而不是在shell腳本 – Richard
或試試這個:
echo "echo 'append string' >> protected_file" | sudo bash
全部放在一起並固定答案之一,有3種方式:
sudo su root -c "echo 'append string' > protected_file"
echo "echo 'append string' >> protected_file" | sudo bash
echo "append string" | sudo tee -a protected_file >/dev/null
您應該'sudo'你的shell腳本,不'echo'命令。 – Raptor