почему моя символическая ссылка /opt удаляется и создается как каталог после запуска обновления dnf

Используя двойные кавычки вокруг строки выражения sed, вы можете использовать продолжение обычной строки -, чтобы разбить ее на несколько строк:

expression="/([12][[:digit:]]{3}-(0[1-9]|1[0-2])-(0[1-9]|[12][[:digit:]]|3[01]) \
[[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{2},[[:digit:]]{3} INFO)/d"

После \в конце первой строки не должно быть ничего, кроме новой строки, а вторая строка не должна начинаться с каких-либо дополнительных символов. Я переместил пробел в строке до первой строки, чтобы он выглядел преднамеренно, а не как случайный отступ.

Кроме того, вы можете использовать конкатенацию двух одинарных -строк в кавычках:

expression='/([12][[:digit:]]{3}-(0[1-9]|1[0-2])-(0[1-9]|[12][[:digit:]]|3[01]) '\
'[[:digit:]]{2}:[[:digit:]]{2}:[[:digit:]]{2},[[:digit:]]{3} INFO)/d'

Это присвоит переменной expressionодну строковую строку.

Затем вы должны использовать это как

sed -E -e "$expression"

Здесь я использую -Eвместо -r, так как -Eчаще поддерживается (для включения расширенных регулярных выражений вsed)и использования -e, чтобы сообщить sed, что следующий аргумент — это выражение sed, применяемое к входным данным. Само выражение sedдолжно быть заключено в двойные кавычки, так как мы не хотим, чтобы оболочка выполняла разбиение слов и подстановку имени файла для его значения.

0
28.11.2021, 22:00
1 ответ

Каталог /optявляется частью пакета «файловая система», и когда он получил обновление, он исправил принадлежащий ему каталог.

Пакет может указывать, что некоторые файлы являются файлами конфигурации, а не заменять их, но /opt — это не файл конфигурации, а каталог, поэтому он будет заменен.

Возможно, вам будет лучше, если вы привяжете -смонтированный /optк местоположению, а не замените его символической ссылкой. Таким образом, это все еще каталог, это просто точка монтирования.

Например, если раньше у вас была символическая ссылка/opt-> /foo/bar, вы можете заменить символическую ссылку обычным каталогом и добавить запись fstab, которая выглядит как:

 /foo/bar       /opt         none      bind      0 0

Или аналогичный блок монтирования systemd.

1
28.11.2021, 23:19

Теги

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