如何使用带有确认问题的 shell 永久删除所有旧内核?

如何使用带有确认问题的 shell 永久删除所有旧内核?

要释放一些磁盘空间,您可以检查正在使用的内核:

uname -r

然后删除所有内核版本但保留当前版本:

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

如果您希望自动完成此操作,可以将此命令作为 cron 作业运行。然而,这并不明智,因为您应该始终保留一个或两个旧内核以备后用(以防新内核无法与您的系统兼容)。如果您刚刚升级了内核,至少应在删除旧版本之前重新启动。

来源:如何删除旧内核版本来清理启动菜单?

但此命令将立即开始卸载,都没问一下

我怎样才能更改该行,以便在卸载之前要求您继续?

答案1

使用以下命令代替之前使用的命令:

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

以下是我执行上述命令时的输出:

saurav@saurav-P4I45Gx-PE:~$ sudo apt-get purge $(dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d')
[sudo] password for saurav: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  linux-headers-3.11.0-031100* linux-headers-3.11.0-031100-generic* linux-image-3.11.0-031100-generic*
0 upgraded, 0 newly installed, 3 to remove and 39 not upgraded.
After this operation, 212 MB disk space will be freed.
Do you want to continue [Y/n]? n
Abort.

就是这样!

相关内容