
我創建了一個名為的腳本文件黑名單.sh。
#!/bin/bash
default_card=`head -1 /proc/asound/modules`
echo $default_card
if [ ! -e /etc/modprobe.d/sound.blacklist.conf ] && [[ "$default_card" =~ "snd_hda_intel" ]]; then
echo "blacklist snd_hda_intel" > /etc/modprobe.d/sound.blacklist.conf ---> not working
else
echo "Default sound card(snd_hda_intel) is already added in black list";
fi
從我正在創建的這個腳本文件聲音.黑名單.conf文件輸入/etc/modprobe.d
但我收到/etc/modprobe.d/sound.blacklist.conf: Permission denied
錯誤。
於是嘗試過
echo itsme | sudo -S echo "blacklist snd_hda_intel" > /etc/modprobe.d/sound.blacklist.conf
但它也不起作用,那麼如何/etc/modprobe.d
在我的目錄中建立文件腳本文件。
答案1
我個人會使用 tee ,您可以以 root 身分執行它來附加到檔案:
echo "blacklist snd_hda_intel" | sudo tee -a /etc/modprobe.d/sound.blacklist.conf
但在劇本進行到一半時可能不會出現這種情況。如果您正在執行需要 root 權限的操作,那麼透過將其貼在腳本頂部附近來僅讓 root 運行腳本可能更有意義(我並不是肯定這麼說):
if [[ $EUID -ne 0 ]]; then
echo "Only root can run this. Run again with sudo" 2>&1
exit 1
fi
答案2
試試這個命令,
sudo sh -c "echo 'blacklist snd_hda_intel' > /etc/modprobe.d/sound.blacklist.conf"
答案3
您必須將輸出重定向包含在sudo
太中。
對我來說,最簡單的方法就是不要把須藤在您的腳本內,但請使用以下命令執行您的腳本須藤。
要了解您的問題,如果您有以下命令: $ sudo " " > /etc/file
這須藤動作只是執行<command> <params>
,輸出()的重定向>
發生在須藤在這種情況下。