Как добавить строки в конец файла в Linux

122

Я хочу добавить следующие 2 строки ...

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

в конец файла vncservers, найденного в каталоге .... / etc / sysconfig /

Как я могу это сделать?

Спасибо

Энтони Уэст
источник
2
Вы можете использовать viили emacs. Вы знаете, как их использовать? Я не пытаюсь быть саркастичным.

Ответы:

234

Самый простой способ перенаправить вывод эха на >>

echo 'VNCSERVERS="1:root"' >> /etc/sysconfig/configfile
echo 'VNCSERVERARGS[1]="-geometry 1600x1200"' >> /etc/sysconfig/configfile
user897079
источник
3
Просто из любопытства, как бы вы добавили текст в файл без создания новой строки?
Мартин Хансен
11
Это зависит от последней добавленной строки, а не от вашей текущей команды. Когда вы выполняете файл $ echo "foobar" >>, новая строка уже там. Если вы выполните $ echo -n "foobar" >> file, вы не добавите новую строку в конец строки, поэтому вы будете писать в той же строке.
user897079
9
Это не работает при записи в системный файл в среде sudo. Вы не можете использовать sudo >>. В остальном все работает нормально.
Деннис
4
Используйте команду "sed" следующим образом: ---------- sed -i "$ a some text" somefile.txt --------- -i: редактировать файлы на месте, $ найти конец файла, a: append
Лунф
9
@Dennis Это из-за того, как анализируется командная строка. 'sudo abc >> def' будет 'sudo abc', а затем '>> def' выводом. Чтобы использовать sudo для всего бит 'abc >> def', вы должны сделать что-то вроде этого: sudo sh -c "echo 'VNCSERVERS = \" 1: root \ "' >> / etc / sysconfig / configfile" (обратите внимание, что внутренние двойные кавычки должны быть экранированы)
Urhixidur