Мой однострочный файл для удаления старых ядер (это также освобождает место на диске)
dpkg --list | grep linux-image | awk '{ print $2 }' | sort -V | sed -n '/'`uname -r`'/q;p' | xargs sudo apt-get -y purge
Объяснение (помните, | использует вывод предыдущей команды как входной для следующего)
dpkg --list перечисляет все установленные пакеты grep linux-image ищет установленные изображения linux awk '{ print $2 }', просто выдает второй столбец (который является именем пакета) sort -V помещает элементы в порядок по номеру версии [ f9] печатает строки до того, как текущее ядро xargs sudo apt-get -y purge очистит найденные ядраРазматывание вызова sed:
dpkg --list перечисляет все установленные пакеты [!d3 ] `uname -r` выводит текущую установленную версию ядра - мы включаем ее в обратные так, чтобы выход включался как часть команды (вы также можете видеть это как $(uname -r) grep linux-image ищет установленные изображения linux [ ! d4] p is print awk '{ print $2 }' просто выводит второй столбец (который является именем пакета)в целом, sed -n '/'`uname -r`'/q;p' печатает строки до тех пор, пока они не совпадут с текущее имя ядра.
Если вы параноидально (как и я), вы можете e последняя часть xargs echo sudo apt-get -y purge, так что команда для очистки старых ядер печатается, тогда вы можете проверить, что перед ее запуском ничего неожиданного не было.
Модифицированная версия для удалить заголовки:
dpkg --list | grep 'linux-image' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs sudo apt-get -y purge
dpkg --list | grep 'linux-headers' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs sudo apt-get -y purge
Примечание: вызов sed изменен. "$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")" извлекает только версию (например, «3.2.0-44») без «-генерического» или аналогичного с uname -r
Версия «все-в-одном» для удалить изображения и заголовки (объединяет две версии выше):
echo $(dpkg --list | grep linux-image | awk '{ print $2 }' | sort -V | sed -n '/'`uname -r`'/q;p') $(dpkg --list | grep linux-headers | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p') | xargs sudo apt-get -y purge
В качестве альтернативы вы можете спросить систему упаковки, что вы установили:
$ dpkg -s vlc
Package: vlc
Status: install ok installed
Priority: optional
Section: video
Installed-Size: 3765
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: amd64
Version: 2.1.4-0ubuntu14.04.1
...
Здесь показано, что архитектура amd64 или 64-разрядная.
[ ! d2]Не проблема с vlc, подход file может завершиться неудачно с очевидными именами программ для некоторых пакетов, например firefox:
$ file $(which firefox)
/usr/bin/firefox: symbolic link to `../lib/firefox/firefox.sh'
Вы могли бы следовать ссылку, но тогда вы будете смотреть на скрипт.