Как найти и заменить строки в файле после i изменяется

Поскольку у вас есть существующий /etc/profile.dкаталог (и, предположительно, соответствующие /etc/profileили /etc/${SHELL}rcфайлы, исходные файлы в этом каталоге ), я бы рекомендовал разместить /etc/profile.d/3rd-party-app.shи/или /etc/profile.d/3rd-party-app.cshс требуемым кодом. Если вы являетесь упаковщиком стороннего -приложения, вы можете включить эти файлы в упаковку, чтобы они устанавливались, обновлялись и удалялись менеджером пакетов. В противном случае, как пользователь программного обеспечения, размещение этих файлов сделает их неуправляемыми и, следовательно, не будет затронуто обновлениями пакетов ОС.

ОБНОВЛЕНИЕ из OP:

https://www.suse.com/documentation/sles11/book_sle_admin/data/sec_adm_whatistheshell.html

/etc/профиль Не изменяйте этот файл, иначе ваши модификации могут быть уничтожены при следующем обновлении!

/etc/profile.local Используйте этот файл, если вы расширяете /etc/profile

/etc/profile.d/ Содержит общесистемные -файлы конфигурации для определенных программ

.

0
30.05.2020, 20:18
2 ответа

Я не очень понимаю ваш вопрос, но я думаю, что вы хотите:

perl -i -pe 's/oldstring/newstring/g' /some/file

Если вы запустите эту команду в оболочке (или сценарии оболочки ), она заменит oldstringна newstringвезде в/some/file

0
18.03.2021, 23:31

Обратите внимание, что в вашем коде вы ищете «путь к папке с файлами», но затем забываете об этом пути в команде sed/perl (не уверен, что относительный путь в этом случае, но в моих тестах по умолчанию /).

Почему бы просто не использовать incron для мониторинга самого файла и использовать

/path/to/file.xml IN_MODIFY,IN_NO_LOOP /bin/sed -i 's+/pub/+/+g' $@

ПРИМЕЧАНИЕ. Параметр:IN_NO_LOOPпредназначен для предотвращения того, чтобы команда sed запускала одно и то же событие при модификации.

0
18.03.2021, 23:31

Теги

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