Для этого можно использовать ex
(, который является режимом редактора vi
).
Вы можете использовать команду:read
для вставки содержимого в файл. Эта команда принимает имя файла, но вы можете использовать псевдоустройство /dev/stdin
-для чтения из стандартного ввода, что позволяет использовать маркер <
Команда :read
также принимает диапазон, и вы можете использовать символ $-
, который распадается на $
, обозначающий последнюю строку файла, и -
, чтобы вычесть из нее единицу, добраться до предпоследней строки файла. (Вы также можете использовать $-1
.)
Собираем все воедино:
$ ex -s /etc/security/limits.conf -c '$-r /dev/stdin' -c 'wq' <
-s
сделать его бесшумным (не переключаться в визуальный режим,что заставило бы экран мигать. )$-r
сокращенно (полное $-1read
также сработало бы )и, наконец, wq
— это то, как вы пишете и выходите в vi
.:-)
ОБНОВЛЕНИЕ:Если вместо вставки перед последней строкой вы хотите вставить перед строкой с определенным содержимым (, например «#Конец файла» ), тогда просто используйте /search/
шаблон для этого.
Например:
$ ex -s /etc/security/limits.conf -c '/^# End of file/-1r /dev/stdin' -c 'wq' <