Приводит ли чистка к тому, что некоторые пакеты больше не требуются?

Основная проблема заключается в том, что подстановка команды не заключена в кавычки, поэтому она разбивается на отдельные аргументы, и каждый аргумент подвергается расширению пути (, последняя часть в bash, но не zsh), и когда mvвидит более двух, предполагается, что последний является каталогом для перемещения файлов.

По той же причине само $iследует заключать в кавычки (в bash), и во избежание проблем, если какое-то имя файла начинается с тире -, следует использовать ./*вместо *в шаблоне или поставьте конец -из -маркера опций --в команде mv.

Кроме того, я думаю, мы могли бы немного упростить способ обработки имен файлов. Начнем с того, что sedможет принимать несколько команд, поэтому вам нужно вызвать его только один раз. Вы также, вероятно, захотите добавить /gв конец команд s///, чтобы сделать замены для всех совпадений, а не только для первого. Также обратите внимание, что 2 из этих 3 обратных слэшей в [_\?\!\]избыточны. Используйте [_?!], если вы хотите сопоставить _, ?или !или [_\?!], если вы также хотите включить обратную косую черту (, хотя [_\\?!]сделает его более надежным с некоторыми утилитами ).

for f in./*; do
    mv -- "$f" "$(grep \# "$f" | head -1 | sed -e 's/# //g' -e 's/[_?!]//g' -e's/[:/]/ - /g')"
done

Вы также можете объединить grepи headв sedтоже:

for f in./*; do
    mv -- "$f" "$(sed -ne '/^# / {s///; s/[_?!]//g; s/[:/]/ - /g; p; q;}' < "$f")"
done

Здесь команды внутри {}зависят от шаблона /^# /, а qв конце выходит из скрипта в конце этого блока,поэтому обрабатывается только первая совпадающая строка.

Аналогично вawk:

awk '/^# / { sub(/# /, ""); gsub(/[_?!]/, ""); gsub(/[:/]/, " - "); print; exit }' < "$f"

Я мог бы также изменить последнюю замену на s/[:/] */ - /, чтобы строка типа blah: blehпревратилась в blah - blahвместоblah - bleh(с двумя пробелами после дефиса ).

0
18.06.2020, 02:48
1 ответ

Когда вы запускаете apt, он сообщает вам обо всех автоматически удаляемых пакетах после вычисления результата того, что вы просите его сделать. Сюда входят как пакеты, которые уже были автоматически удалены до вызова aptв результате предыдущих удалений пакетов, так и пакеты, которые будут автоматически удалены в результате запрошенных операций.

В данном конкретном случае перечисленные пакеты не связаны с qbittorrent, и его удаление не сделало их автоматически удаляемыми; они уже были.

1
18.03.2021, 23:26

Теги

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