С помощью awk
. Сопоставьте имена ключей в массиве unique
, и к тому времени, когда вся обработка файла будет завершена, в массиве должен быть только один ключ.
awk '!unique[$0]++ { count++ } END { print count == 1 ? "contents are same" : "contents are different" }' file
Общий синтаксис для awk
представляет собой шаблонную -модель действия.
pattern { action }
Часть !unique[$0]++
создает хэш-карту (ассоциативного массива )путем создания ключа как содержимого всей строки $0
. При первом просмотре уникальной строки значение unique['<key-name>']
будет равно нулю, а блок !
отменяет это ложное и становится истинным действием для части {..}
, где мы увеличиваем счетчик.
Поскольку мы также увеличиваем значение после -, для последующих вхождений той же строки отрицание создаст логическое ложное условие, в результате чего блок {..}
не будет выполняться. Инструкции внутри END
выполняются после обработки всех строк. Поскольку в конце обработки у нас есть только один ключ в массиве, мы объявляем строки одинаковыми.
Список пакетовdnf list installed kernel*
[root@centos /]# dnf list installed kernel*
Installed Packages
kernel-core.x86_64 4.18.0-193.6.3.el8_2 @BaseOS
kernel-core.x86_64 4.18.0-193.14.2.el8_2 @BaseOS
kernel-core.x86_64 4.18.0-305.3.1.el8 @BaseOS
kernel-devel.x86_64 4.18.0-193.6.3.el8_2 @BaseOS
kernel-devel.x86_64 4.18.0-193.14.2.el8_2 @BaseOS
kernel-devel.x86_64 4.18.0-305.3.1.el8 @BaseOS
kernel-headers.x86_64 4.18.0-305.3.1.el8 @BaseOS
kernel-ml.x86_64 5.7.8-1.el8.elrepo @elrepo-kernel
kernel-ml.x86_64 5.8.0-1.el8.elrepo @elrepo-kernel
kernel-ml.x86_64 5.12.10-1.el8.elrepo @elrepo-kernel
kernel-ml-core.x86_64 5.7.8-1.el8.elrepo @elrepo-kernel
kernel-ml-core.x86_64 5.8.0-1.el8.elrepo @elrepo-kernel
kernel-ml-core.x86_64 5.12.10-1.el8.elrepo @elrepo-kernel
kernel-ml-devel.x86_64 5.7.8-1.el8.elrepo @elrepo-kernel
kernel-ml-modules.x86_64 5.7.8-1.el8.elrepo @elrepo-kernel
kernel-ml-modules.x86_64 5.8.0-1.el8.elrepo @elrepo-kernel
kernel-ml-modules.x86_64 5.12.10-1.el8.elrepo @elrepo-kernel
kernel-modules.x86_64 4.18.0-193.6.3.el8_2 @BaseOS
kernel-modules.x86_64 4.18.0-193.14.2.el8_2 @BaseOS
kernel-modules.x86_64 4.18.0-305.3.1.el8 @BaseOS
kernel-tools.x86_64 4.18.0-305.3.1.el8 @BaseOS
kernel-tools-libs.x86_64 4.18.0-305.3.1.el8 @BaseOS
[root@centos /]#
Поиск пакетов ядраrpm -qa | grep kernel
[root@centos /]# rpm -qa | grep kernel
kernel-core-4.18.0-305.3.1.el8.x86_64
kernel-core-4.18.0-193.6.3.el8_2.x86_64
kernel-core-4.18.0-193.14.2.el8_2.x86_64
kernel-tools-libs-4.18.0-305.3.1.el8.x86_64
kernel-ml-core-5.12.10-1.el8.elrepo.x86_64
kernel-ml-modules-5.7.8-1.el8.elrepo.x86_64
kernel-ml-5.12.10-1.el8.elrepo.x86_64
kernel-modules-4.18.0-193.6.3.el8_2.x86_64
kernel-ml-core-5.8.0-1.el8.elrepo.x86_64
kernel-ml-core-5.7.8-1.el8.elrepo.x86_64
kernel-4.18.0-193.14.2.el8_2.x86_64
kernel-devel-4.18.0-305.3.1.el8.x86_64
kernel-ml-5.8.0-1.el8.elrepo.x86_64
kernel-4.18.0-193.6.3.el8_2.x86_64
kernel-modules-4.18.0-193.14.2.el8_2.x86_64
kernel-devel-4.18.0-193.14.2.el8_2.x86_64
kernel-ml-devel-5.7.8-1.el8.elrepo.x86_64
kernel-headers-4.18.0-305.3.1.el8.x86_64
kernel-4.18.0-305.3.1.el8.x86_64
kernel-tools-4.18.0-305.3.1.el8.x86_64
kernel-ml-5.7.8-1.el8.elrepo.x86_64
kernel-ml-modules-5.8.0-1.el8.elrepo.x86_64
kernel-modules-4.18.0-305.3.1.el8.x86_64
kernel-ml-modules-5.12.10-1.el8.elrepo.x86_64
kernel-devel-4.18.0-193.6.3.el8_2.x86_64
[root@centos /]#
Классификация пакетов для просмотра целевых пакетов!
kernel-4.18.0-193.6.3.el8_2.x86_64
kernel-4.18.0-193.14.2.el8_2.x86_64
kernel-4.18.0-305.3.1.el8.x86_64
kernel-ml-5.7.8-1.el8.elrepo.x86_64
kernel-ml-5.8.0-1.el8.elrepo.x86_64
kernel-ml-5.12.10-1.el8.elrepo.x86_64
kernel-core-4.18.0-193.6.3.el8_2.x86_64
kernel-core-4.18.0-193.14.2.el8_2.x86_64
kernel-core-4.18.0-305.3.1.el8.x86_64
kernel-ml-core-5.7.8-1.el8.elrepo.x86_64
kernel-ml-core-5.8.0-1.el8.elrepo.x86_64
kernel-ml-core-5.12.10-1.el8.elrepo.x86_64
kernel-devel-4.18.0-193.14.2.el8_2.x86_64
kernel-devel-4.18.0-193.6.3.el8_2.x86_64
kernel-ml-devel-5.7.8-1.el8.elrepo.x86_64
kernel-modules-4.18.0-193.6.3.el8_2.x86_64
kernel-modules-4.18.0-193.14.2.el8_2.x86_64
kernel-modules-4.18.0-305.3.1.el8.x86_64
kernel-ml-modules-5.7.8-1.el8.elrepo.x86_64
kernel-ml-modules-5.8.0-1.el8.elrepo.x86_64
kernel-ml-modules-5.12.10-1.el8.elrepo.x86_64
kernel-tools-libs-4.18.0-305.3.1.el8.x86_64
kernel-headers-4.18.0-305.3.1.el8.x86_64
kernel-tools-4.18.0-305.3.1.el8.x86_64
Если меня интересует, удалите версию 5.7.8
; Мне нужно будет сделать что-то вроде:
dnf remove kernel-ml-5.7.8-1.el8.elrepo.x86_64
dnf remove kernel-ml-core-5.7.8-1.el8.elrepo.x86_64
dnf remove kernel-ml-devel-5.7.8-1.el8.elrepo.x86_64
dnf remove kernel-ml-modules-5.7.8-1.el8.elrepo.x86_64
Метод быстрого выбора пакетов, связанных с 5.7.8
, для удаления:rpm -qa | grep ^kernel | grep 5\.7\.8
[root@centos /]# rpm -qa | grep ^kernel | grep 5\.7\.8
kernel-ml-modules-5.7.8-1.el8.elrepo.x86_64
kernel-ml-core-5.7.8-1.el8.elrepo.x86_64
kernel-ml-devel-5.7.8-1.el8.elrepo.x86_64
kernel-ml-5.7.8-1.el8.elrepo.x86_64
[root@centos /]#
Тогда dnf remove $(rpm -qa | grep ^kernel | grep 5\.7\.8)
удалю всё, Что мне нужно!
[root@centos /]# dnf remove $(rpm -qa | grep ^kernel | grep 5\.7\.8)
Dependencies resolved.
=================================================================================
Package Arch Version Repository Size
=================================================================================
Removing:
kernel-ml x86_64 5.7.8-1.el8.elrepo @elrepo-kernel 0
kernel-ml-core x86_64 5.7.8-1.el8.elrepo @elrepo-kernel 64 M
kernel-ml-devel x86_64 5.7.8-1.el8.elrepo @elrepo-kernel 50 M
kernel-ml-modules x86_64 5.7.8-1.el8.elrepo @elrepo-kernel 23 M
Transaction Summary
=================================================================================
Remove 4 Packages
Freed space: 137 M
Is this ok [y/N]: y
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Erasing : kernel-ml-5.7.8-1.el8.elrepo.x86_64 1/4
Erasing : kernel-ml-devel-5.7.8-1.el8.elrepo.x86_64 2/4
Erasing : kernel-ml-modules-5.7.8-1.el8.elrepo.x86_64 3/4
Running scriptlet: kernel-ml-modules-5.7.8-1.el8.elrepo.x86_64 3/4
Running scriptlet: kernel-ml-core-5.7.8-1.el8.elrepo.x86_64 4/4
Erasing : kernel-ml-core-5.7.8-1.el8.elrepo.x86_64 4/4
warning: file /lib/modules/5.7.8-1.el8.elrepo.x86_64/updates: remove failed: No such file or directory
Running scriptlet: kernel-ml-core-5.7.8-1.el8.elrepo.x86_64 4/4
/sbin/ldconfig: /etc/ld.so.conf.d/kernel-ml-5.12.10-1.el8.elrepo.x86_64.conf:6: hwcap directive ignored
/sbin/ldconfig: /etc/ld.so.conf.d/kernel-ml-5.8.0-1.el8.elrepo.x86_64.conf:6: hwcap directive ignored
Verifying : kernel-ml-5.7.8-1.el8.elrepo.x86_64 1/4
Verifying : kernel-ml-core-5.7.8-1.el8.elrepo.x86_64 2/4
Verifying : kernel-ml-devel-5.7.8-1.el8.elrepo.x86_64 3/4
Verifying : kernel-ml-modules-5.7.8-1.el8.elrepo.x86_64 4/4
Installed products updated.
Removed:
kernel-ml-5.7.8-1.el8.elrepo.x86_64
kernel-ml-core-5.7.8-1.el8.elrepo.x86_64
kernel-ml-devel-5.7.8-1.el8.elrepo.x86_64
kernel-ml-modules-5.7.8-1.el8.elrepo.x86_64
Complete!
[root@centos /]#
Вот и все!
После того, как я получил:df -H /
[root@centos /]# df -H /
Filesystem Size Used Avail Use% Mounted on
/dev/nvme0n1p9 34G 9.2G 23G 29% /
[root@centos /]#
Иdf -H
[root@centos /]# df -H
Filesystem Size Used Avail Use% Mounted on
devtmpfs 8.2G 0 8.2G 0% /dev
tmpfs 8.2G 529M 7.7G 7% /dev/shm
tmpfs 8.2G 11M 8.2G 1% /run
tmpfs 8.2G 0 8.2G 0% /sys/fs/cgroup
/dev/nvme0n1p9 34G 9.2G 23G 29% /
/dev/nvme0n1p7 1.1G 447M 506M 47% /boot
/dev/nvme0n1p8 183G 73G 102G 42% /home
/dev/nvme0n1p10 26G 11G 13G 46% /var
/dev/nvme0n1p6 1.1G 7.6M 1.1G 1% /boot/efi
/dev/loop1 59M 59M 0 100% /var/lib/snapd/snap/core18/2074
/dev/loop0 102M 102M 0 100% /var/lib/snapd/snap/core/9665
/dev/loop2 66M 66M 0 100% /var/lib/snapd/snap/gtk-common-themes/1506
/dev/loop3 32M 32M 0 100% /var/lib/snapd/snap/snapd/8542
/dev/loop4 58M 58M 0 100% /var/lib/snapd/snap/core18/1880
/dev/loop5 34M 34M 0 100% /var/lib/snapd/snap/snapd/12398
/dev/loop7 105M 105M 0 100% /var/lib/snapd/snap/core/11316
/dev/loop6 65M 65M 0 100% /var/lib/snapd/snap/core20/1081
/dev/loop8 69M 69M 0 100% /var/lib/snapd/snap/gtk-common-themes/1515
tmpfs 1.7G 11M 1.7G 1% /run/user/1000
[root@centos /]#
И наконецdnf list installed kernel*
[root@centos /]# dnf list installed kernel*
Installed Packages
kernel.x86_64 4.18.0-193.6.3.el8_2 @BaseOS
kernel.x86_64 4.18.0-193.14.2.el8_2 @BaseOS
kernel.x86_64 4.18.0-305.3.1.el8 @BaseOS
kernel-core.x86_64 4.18.0-193.6.3.el8_2 @BaseOS
kernel-core.x86_64 4.18.0-193.14.2.el8_2 @BaseOS
kernel-core.x86_64 4.18.0-305.3.1.el8 @BaseOS
kernel-devel.x86_64 4.18.0-193.6.3.el8_2 @BaseOS
kernel-devel.x86_64 4.18.0-193.14.2.el8_2 @BaseOS
kernel-devel.x86_64 4.18.0-305.3.1.el8 @BaseOS
kernel-headers.x86_64 4.18.0-305.3.1.el8 @BaseOS
kernel-ml.x86_64 5.8.0-1.el8.elrepo @elrepo-kernel
kernel-ml.x86_64 5.12.10-1.el8.elrepo @elrepo-kernel
kernel-ml-core.x86_64 5.8.0-1.el8.elrepo @elrepo-kernel
kernel-ml-core.x86_64 5.12.10-1.el8.elrepo @elrepo-kernel
kernel-ml-modules.x86_64 5.8.0-1.el8.elrepo @elrepo-kernel
kernel-ml-modules.x86_64 5.12.10-1.el8.elrepo @elrepo-kernel
kernel-modules.x86_64 4.18.0-193.6.3.el8_2 @BaseOS
kernel-modules.x86_64 4.18.0-193.14.2.el8_2 @BaseOS
kernel-modules.x86_64 4.18.0-305.3.1.el8 @BaseOS
kernel-tools.x86_64 4.18.0-305.3.1.el8 @BaseOS
kernel-tools-libs.x86_64 4.18.0-305.3.1.el8 @BaseOS
[root@centos /]#
иrpm -qa | grep kernel
[root@centos /]# rpm -qa | grep kernel
kernel-core-4.18.0-305.3.1.el8.x86_64
kernel-core-4.18.0-193.6.3.el8_2.x86_64
kernel-core-4.18.0-193.14.2.el8_2.x86_64
kernel-tools-libs-4.18.0-305.3.1.el8.x86_64
kernel-ml-core-5.12.10-1.el8.elrepo.x86_64
kernel-ml-5.12.10-1.el8.elrepo.x86_64
kernel-modules-4.18.0-193.6.3.el8_2.x86_64
kernel-ml-core-5.8.0-1.el8.elrepo.x86_64
kernel-4.18.0-193.14.2.el8_2.x86_64
kernel-devel-4.18.0-305.3.1.el8.x86_64
kernel-ml-5.8.0-1.el8.elrepo.x86_64
kernel-4.18.0-193.6.3.el8_2.x86_64
kernel-modules-4.18.0-193.14.2.el8_2.x86_64
kernel-devel-4.18.0-193.14.2.el8_2.x86_64
kernel-headers-4.18.0-305.3.1.el8.x86_64
kernel-4.18.0-305.3.1.el8.x86_64
kernel-tools-4.18.0-305.3.1.el8.x86_64
kernel-ml-modules-5.8.0-1.el8.elrepo.x86_64
kernel-modules-4.18.0-305.3.1.el8.x86_64
kernel-ml-modules-5.12.10-1.el8.elrepo.x86_64
kernel-devel-4.18.0-193.6.3.el8_2.x86_64
[root@centos /]#