
He creado un archivo de script llamadolista_negra.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
a partir de este archivo de script que estoy creandosonido.listanegra.confarchivar /etc/modprobe.d
pero me salió /etc/modprobe.d/sound.blacklist.conf: Permission denied
un error.
Así que lo intenté
echo itsme | sudo -S echo "blacklist snd_hda_intel" > /etc/modprobe.d/sound.blacklist.conf
pero tampoco funcionó, ¿cómo puedo crear un archivo en /etc/modprobe.d
el directorio desde miarchivo de comandos.
Respuesta1
Yo personalmente usaría tee, que puedes ejecutar como root para agregarlo a los archivos:
echo "blacklist snd_hda_intel" | sudo tee -a /etc/modprobe.d/sound.blacklist.conf
Pero tal vez no se espere eso a mitad de camino de un guión. Si estás haciendo cosas que requieren privilegios de root, podría tener más sentido (y no lo digo con certeza) dejar que el root ejecute el script colocando esto cerca de la parte superior del script:
if [[ $EUID -ne 0 ]]; then
echo "Only root can run this. Run again with sudo" 2>&1
exit 1
fi
Respuesta2
Pruebe este comando,
sudo sh -c "echo 'blacklist snd_hda_intel' > /etc/modprobe.d/sound.blacklist.conf"
Respuesta3
También debe adjuntar la redirección de salida sudo
.
Para mí, la manera más fácil de hacer esto es no poner elsudodentro de su script, pero para ejecutar su script usandosudo.
Para comprender su problema, si tiene el siguiente comando: $ sudo " " > /etc/file
ElsudoLa acción es solo ejecutar <command> <params>
, la redirección de la salida ( >
) ocurre fuera delsudoen este caso.