Comment ajouter des lignes à la fin du fichier sous Linux


122

Je veux ajouter les 2 lignes suivantes ...

VNCSERVERS="1:root"
VNCSERVERARGS[1]="-geometry 1600x1200"

à la fin du fichier vncservers trouvé dans le répertoire .... / etc / sysconfig /

Comment puis-je faire ceci?

Merci


2
Vous pouvez utiliser viou emacs. Savez-vous comment les utiliser? Je n'essaye pas d'être sarcastique.

Réponses:


234

Le moyen le plus simple de rediriger la sortie de l'écho par >>

echo 'VNCSERVERS="1:root"' >> /etc/sysconfig/configfile
echo 'VNCSERVERARGS[1]="-geometry 1600x1200"' >> /etc/sysconfig/configfile

3
Juste par curiosité, comment ajouteriez-vous du texte à un fichier sans créer une nouvelle ligne?
Martin Hansen

11
Cela dépend de la dernière ligne ajoutée, pas de votre commande actuelle. Lorsque vous faites le fichier $ echo "foobar" >>, la nouvelle ligne est déjà là. Si vous faites un fichier $ echo -n "foobar" >>, vous n'ajouterez pas de nouvelle ligne à la fin de la ligne, vous écrirez donc dans la même ligne.
user897079

9
Cela ne fonctionne pas dans un environnement sudo qui écrit dans un fichier système. Vous ne pouvez pas sudo >>. Sinon, cela fonctionne bien.
Dennis

4
Utilisez la commande "sed" comme suit: ---------- sed -i "$ a some text" somefile.txt --------- -i: éditer les fichiers sur place, $ trouver la fin du fichier, a: append
Lunf

9
@Dennis C'est à cause de la façon dont la ligne de commande est analysée. 'sudo abc >> def' sera 'sudo abc' puis '>> def' la sortie. Pour sudo du bit 'abc >> def' entier, vous devez faire quelque chose comme ceci: sudo sh -c "echo 'VNCSERVERS = \" 1: root \ "' >> / etc / sysconfig / configfile" (notez que les doubles-guillemets intérieurs doivent être échappés)
Urhixidur
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.