Je veux faire:
echo "something" >> /etc/config_file
Mais, étant donné que seul l'utilisateur root a l'autorisation d'écriture sur ce fichier, je ne peux pas le faire. Mais ce qui suit ne fonctionne pas non plus.
sudo echo "something" >> /etc/config_file
Existe-t-il un moyen d'ajouter un fichier à un fichier dans cette situation sans avoir à l'ouvrir au préalable avec un sudo
éditeur 'd, puis à ajouter manuellement le nouveau contenu?
linux
command-line
sudo
hsribei
la source
la source
ls
avec le chemin du répertoire affiche les fichiers, mais pasls
avec le modèle de fichier?Réponses:
Utiliser
tee -a
(outee --append
) avecsudo
Donc, votre commande devient
Les avantages de
tee
l'exécution de Bash avec des autorisations administratives sont les suivants:la source
tee
a le-a
drapeau d’append.echo "output" | sudo tee -a file > /dev/null
si vous souhaitez ignorer la sortie de la console.La redirection est exécutée dans le shell actuel. 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:
la source
Demandez à sudo de générer un sous-shell:
Dans cet exemple, sudo lance "sh" avec le reste comme arguments.
(ceci est montré à titre d'exemple dans la page de manuel sudo)
la source
J'utilise habituellement un document shell ICI avec sudo tee -a . Quelque chose dans le genre de:
la source
À mon avis, le meilleur dans ce cas est dd:
la source
Il peut y avoir un problème avec le sudo ici et la redirection. Utilisez plutôt un éditeur de texte de votre choix pour ajouter la ligne.
Ou, vous pouvez essayer le su à la place
la source
su -c 'echo "JAVA_HOME=/usr/lib/jvm/java-6-sun" >> /etc/profile'
devrait marcher. puisqu'il n'y a rien que le shell puisse développer par erreur dans l'argument pour faire écho, cite la commande globale entre guillemets.Cela ne fonctionnera pas si vous essayez de rediriger (en utilisant
>>
) la sortie de sudo. Ce que vous voulez vraiment faire, c'est rediriger la sortie deecho
. Je vous suggère simplement d'utiliser votre éditeur préféré et d'ajouter cette ligne manuellement/etc/profile
. Cela a l'avantage supplémentaire que vous pouvez vérifier si/etc/profile
déjà définiJAVA_HOME
.la source
Utilisez ex-voie :
et remplacez
FOO
par votre variable à ajouter.Dans certains systèmes (tels que OS X), le
/etc/profile
fichier dispose de 444 autorisations. Par conséquent, si vous obtenez toujours une autorisation refusée , vérifiez et corrigez-la d'abord:puis réessayez.
la source