Si vous exprimez votre commande sans guillemets simples, vous pouvez la mettre entre guillemets simples et l'exécuter via un shell intermédiaire.
Pour l'exécuter en tant que root:
echo 'clock_hctosys="YES"' >> /etc/conf.d/hwclock
Ecrivez la commande d'une manière différente qui n'utilise pas '
:
echo clock_hctosys=\"YES\" >> /etc/conf.d/hwclock
Puis invoquer sudo sh -c …
:
sudo sh -c 'echo clock_hctosys=\"YES\" >> /etc/conf.d/hwclock'
Sinon, pour écrire la sortie dans un fichier que seule la racine peut écrire, appelez-la sudo tee
. Passez l' -a
option à tee
ajouter au fichier de destination, sinon le fichier est tronqué.
echo 'clock_hctosys="YES"' | sudo tee -a /etc/conf.d/hwclock >/dev/null
Pour les modifications des fichiers plus complexes, vous pouvez appeler sudo sed
, sudo ed
, sudo perl
, ...
Sinon, utilisez un éditeur correct et appelez-le sudo. Dans Emacs, ouvrez /sudo:/etc/conf.d/hwclock
. Dans Vim, appelez :w !sudo tee %
pour écrire dans le fichier ouvert en tant que root ou utilisez le plugin sudo.vim . Ou aller du sudo et appeler sudoedit /etc/conf.d/hwclock
.
Ou vous pouvez céder du côté obscur et lancer un shell en tant que root.
$ sudo -i
# echo 'clock_hctosys="YES"' >> /etc/conf.d/hwclock
tee
commandes sont exécutées en tant que root, et non la commande principale, qui pourrait être complexe et sujette à des erreurs de comportement. (pas le cas deecho
)