Является ли эта команда безопасным для удаления старых ядер?

Вы можете использовать wget для загрузки всего веб-сайта. (если сервер разрешает это), как

$wget \
     --recursive \
     --no-clobber \
     --page-requisites \
     --html-extension \
     --convert-links \
     --restrict-file-names=windows \
     --domains website.org \
     --no-parent \

Подробнее [wget manpage]

Источник: wget manpage

1
задан 16 March 2013 в 18:30

2 ответа

Вы попросили пошаговое объяснение, вот так:

sudo dpkg -l 'linux-*'

Перечисляет пакеты, начиная с linux- в имени пакета

| sed

и pipe список в sed

"s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'

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

| xargs

, который переводит новый список в xargs, который отправит его в качестве аргумента в

sudo apt-get -y purge

, который очистит эти пакеты, не давая вам шанса передумать.

Или, возможно, более точно сказать, что он отправит это перейдите в команду очистки и оставьте это на этом. Независимо от того, очищено или нет, и что важно - именно то, что очищено, зависит от вывода предыдущих команд.

Безопасно? В этом случае все зависит от того, насколько хорошо автор сообщения, в котором вы его нашли, понимает регулярные выражения и синтаксис sed. И на обеих этих темах есть целые книги.

7
ответ дан 25 May 2018 в 02:20

Я начал, анализируя команды, читая страницу man для каждого.

dpkg -l: список pacakges, поэтому dpkg -l linux-* отобразит все пакеты, начатые с linux- (обычно ядра). sed: выход dpkg -l linux-* передается по каналу sed с несколькими регулярными выражениями, которые декодирует sed. uname -r uname печатает системную информацию uname - печатать системную информацию

дескриптор -r специально печатает версии ядра:

uname - print system information

-r, --kernel-release распечатать версию ядра

Затем вывод uname -r передается по каналу sed с более регулярными выражениями , выход которого передается на xargs

-y, --yes, --assume-yes Automatic yes to prompts; предположите «да» в качестве ответа на все приглашения и выполняйте неинтерактивно. Если возникает нежелательная ситуация, например, изменение удерживаемого пакета, попытка установить пакет без проверки подлинности или удаление необходимого пакета, apt-get будет прерван. Элемент конфигурации: APT :: Get :: Предположим-Да.

Итак, xargs переводит вывод sed в имена пакетов и передает их на sudo apt-get purge -y, который автоматически отвечает «да» на все приглашения:

В целом кажется, что эта команда будет делай то, что хочешь, хотя, конечно, нам нужно было бы перевести регулярные выражения sed.

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'  

Я только что побежал:

вот скриншот:

6
ответ дан 25 May 2018 в 02:20
  • 1
    какова тренировка, чтобы перевести выражение этого sed? – Z9iT 19 January 2013 в 00:55
  • 2
    Я пытаюсь понять это прямо сейчас, может занять некоторое время;) – Seth♦ 19 January 2013 в 01:00
  • 3
    См. мой ответ . – jarno 23 December 2015 в 15:33
  • 4
    @ Z9iT Мне было слишком лениво скопировать объяснение сценария из связанной статьи в ответ, так что я думаю, именно поэтому Сет удалил мой ответ. Но я думаю, что связанная статья - это то, что вы искали в Интернете. Я также рассказал вам о более безопасном способе удаления старых ядер, хотя на всякий случай он хранит 2-3 ядра, и может не работать во всех текущих выпусках Ubuntu. – jarno 24 December 2015 в 17:36
  • 5
    @jarno Я удалил его, потому что Z9iT спрашивал о конкретной команде, а не о безопасном способе удаления старых ядер. Это может быть актуально, но в комментарии, а не в ответе :) (как и вы) – Seth♦ 24 December 2015 в 21:37

Другие вопросы по тегам:

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