Utilisez tee -a
(ou tee --append
) avec sudo
tee - read from standard input and write to standard output and files
[...]
-a, --append
append to the given FILEs, do not overwrite
[...]
Donc votre commande devient
echo "something" | sudo tee -a /etc/config_file
Les avantages de tee
sur l'exécution de Bash avec des autorisations administratives sont
- Vous n'exécutez pas Bash avec des autorisations administratives
- Seule la partie "écrire dans le fichier" s'exécute avec des autorisations avancées
- Citer une commande complexe est beaucoup plus facile
La redirection est exécutée dans le shell courant. Pour effectuer la redirection avec des privilèges élevés, vous devez exécuter le shell lui-même avec des privilèges élevés :
sudo bash -c "somecommand >> somefile"
Demandez à sudo de générer un sous-shell :
sudo sh -c "echo 'JAVA_HOME=/usr/lib/jvm/java-6-sun' >> /etc/profile"
Dans cet exemple, sudo exécute "sh" avec le reste comme arguments.
(ceci est montré comme exemple dans la page de manuel sudo)