Они не лишние; есть еще одна тонкость:
apt-get upgrade
обновит только -установленных пакетов; apt upgrade
обновит текущие -установленные пакеты и установит новые пакеты, полученные обновленными зависимостями ; dist-upgrade
и full-upgrade
будут обновлять установленные в настоящее время -пакеты, устанавливать новые пакеты, введенные в качестве зависимостей, и удалять пакеты, которые повреждены обновленными пакетами. Иными словами:
Команда | Обновление | Установить | Удалить |
---|---|---|---|
apt-get upgrade | Да | Нет | Нет |
apt upgrade | Да | Да | Нет |
apt-get dist-upgrade , apt full-upgrade и т. д. | Да | Да | Да |
На практике apt upgrade
безопаснееapt-get upgrade
(по умолчанию ), поскольку он позволяет автоматически устанавливать обновленные ядра при изменении ABI. См. apt -get upgrade задерживает обновление ядра. Каковы официальные инструкции по применению обновлений в Debian 9? для примера.
apt-get upgrade
можно заставить вести себя как apt upgrade
с опцией --with-new-pkgs
. Это также можно настроить с помощью файлов конфигурации APT; Вы можете увидеть специальные настройки apt
с помощью apt-config dump | grep '^Binary::apt
(. Здесь используется настройка APT::Get::Upgrade-Allow-New
).
Предположим, у вас есть имя файла вроде place.type-date.log
в переменной file
, и вы хотите сохранить часть имени файла до первой точки в другой переменной с именем first
. В этом случае вы можете сделать это, используя стандартную подстановку параметров.
first=${file%%.*}
Приведенный выше код удаляет самый длинный суффикс, соответствующий шаблону оболочки .*
, из значения $file
и сохраняет результат в first
.
Использование %
вместо %%
вместо этого удалит кратчайший совпадающий суффикс, оставив place.type-date
. Использование #
или ##
вместо %
и %%
приведет к удалению строк префиксов, а не строк суффиксов.
Другой пример использования этих замен см. в моем ответе на ваш предыдущий вопрос .
Ваш код не работает, потому что $file
— это строка place.type-date.log
, а не команда. Возможно, вы пытались сделать что-то вроде
first=$( echo "$file" | awk -F '[.-]' '{ print $1 }' )
Но это сложнее, чем должно быть. У него также есть некоторые проблемы, связанные с управляющими последовательностями в именах файлов (, которые echo
могут расширяться )и именах файлов, содержащих новые строки(awk
— это инструмент для обработки текста, ориентированный на строку -).