Использование «sed» для добавления в конец файла

Сопоставление по PID было удалено в 2005 году. Если в вашей документации упоминаются параметры pid/sid, они устарели.

Однако вы можете сопоставлять пользователей/группы для фильтрации (удаления )пакетов:

iptables -A OUTPUT -m owner --uid $USER -j DROP

и аналогично для группы, использующей опцию --gid. Группа соответствует первичной группе процесса.

Обратите внимание, что правила применяются при первом совпадении, если вы ранее нашли совпадение для правила, последующие правила не будут оцениваться.

4
04.10.2019, 20:47
3 ответа

Обычная замена оболочки >с более высокими/другими привилегиями::

echo "replace file content with this line" | sudo tee protectedFile >/dev/null

И если вы хотите добавить, используйте-a:

echo "append this line to file" | sudo tee -a protectedFile >/dev/null
6
27.01.2020, 20:46

Безecho:

string=$'"<VirtualHost *:443> \
       ... \
    </VirtualHost>"'

sudo sed -i '$a\'"${string}"'' file

Опция -iуказывает sedобрабатывать файлы в -месте (с необязательным добавлением суффикса к исходной версии ).

Скрипт sed:

  1. $соответствует последней строке
  2. a\добавить текст после соответствующей строки

Однако он не будет работать с пустым файлом (, так как не будет строк ввода, соответствующих последней строке ).

6
27.01.2020, 20:46

Для полноты картины, если у вас есть edпод рукой:

echo "$
a
<VirtualHost *:80>
...
</VirtualHost>
.
w" | sudo ed protectedFile
  1. $перейти к последней строке
  2. aдобавление, за которым следуют данные, которые вы хотите добавить, заканчивающиеся строкой, содержащей одну точку
  3. wозначает запись (файл)

Первые две команды могут быть объединены (в результат $a), но это не будет работать с пустым файлом — будет работать по отдельности,поскольку это означает «перейти к последней строке» (, что не является -операцией ), за которой следует «добавить» , а не «добавить к последней строке» , которого на самом деле не существует.

1
27.01.2020, 20:46

Теги

Похожие вопросы