Необходимо понять две вещи:
В глобусе *
соответствует нулю или более любого символа
Форма $ {var1 # * - *}
удаляет самое короткое совпадение .
Таким образом, $ {var1 # * - *}
удалит только до первого дефиса, потому что это кратчайшее совпадение .
Для полноты заметьте, что $ {var1 ## * - *}
удалит самое длинное совпадение.
В каждом случае ниже удаляется самый короткий соответствующий префикс :
$ var1=abcd-1234-defg
$ echo ${var1#*}
abcd-1234-defg
$ echo ${var1#*-}
1234-defg
$ echo ${var1#*-*}
1234-defg
$ echo ${var1#*-*-}
defg
$ echo ${var1#*-*-*}
defg
Сравните приведенное выше со случаем ##
, который удаляет самый длинный соответствующий префикс:
$ echo ${var1##*-}
defg
$ echo ${var1##*-*}
$
Из man bash
:
$ {параметр # слово} $ {параметр ## слово}
Удалить совпадающий шаблон префикса. Слово расширяется для создания шаблона так же, как при раскрытии имени пути. Если шаблон соответствует началу значения параметра, то результатом раскрытия будет развернутое значение параметра с кратчайшим шаблоном соответствия (случай
#
) или самый длинный совпадающий шаблон (случай##
) удален. Если параметр - @ или *, операция удаления шаблона применяется к каждому позиционному параметру в череде, и раскрытие представляет собой результирующий список. Если параметр представляет собой переменную массива с индексами @ или *, операция удаления шаблона применяется к каждому члену массива по очереди, и раскрытие представляет собой результирующий список. [Курсив добавлен.]
Это зависит от того, что запущено и обновляется. Ядро нужно перезапускать в любом случае. Если основной компонент, такой как glibc, обновляется, вам может потребоваться перезапустить каждое приложение. Если это так, перезагрузка является самым простым. Запустите обновление и введите lsof | grep deleted
. Вы увидите, удерживает ли ядро какие-либо из этих файлов открытыми.
Перезагрузка редко является обязательной, даже если об этом говорится в уведомлениях, но это проще, чем перезапуск всех зависимых служб и приложений. Изучите обновленные пакеты с помощью apt-cache show [package name]
или apt changelog [package name]
, чтобы решить, есть ли критические обновления безопасности или вы можете обойтись без них до перезагрузки.
Поскольку вы упомянули, что у вас должны быть запущены важные программы, которые вы не хотите прерывать, я слышал, что можно livepatch обновления ядра без перезагрузки, но установка добавляет дополнительную сложность и поддержку, поэтому дистрибутивы не включать его автоматически.