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

Antony Ouest
la source
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
user897079
la source
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