Điều này đã được trả lời tốt, nhưng tôi đã tìm thấy một tình huống mà tôi không muốn "đánh dấu" nhiều gói (và sau đó bỏ đánh dấu chúng sau autoremove
).
Khi danh sách các gói bạn muốn tự động định nghĩa được xác định dễ dàng, thì bạn có thể bỏ / sed
/ xargs
chúng ra.
Tôi không có một ví dụ phức tạp về nhiều gói, nhưng nếu tôi có kịch bản sau:
root@fptc-rsvrd:~# apt-get autoremove
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
libluajit-5.1-2 libluajit-5.1-common linux-headers-4.4.0-141 linux-headers-4.4.0-141-generic linux-headers-4.4.0-143 linux-headers-4.4.0-143-generic linux-headers-4.4.0-146 linux-headers-4.4.0-146-generic
linux-image-4.4.0-141-generic linux-image-4.4.0-143-generic linux-image-4.4.0-146-generic linux-image-extra-4.4.0-141-generic linux-modules-4.4.0-143-generic linux-modules-4.4.0-146-generic
linux-modules-extra-4.4.0-143-generic linux-modules-extra-4.4.0-146-generic linux-signed-image-4.4.0-141-generic pandoc-data
0 upgraded, 0 newly installed, 18 to remove and 19 not upgraded.
After this operation, 907 MB disk space will be freed.
và tôi muốn xóa chỉ các linux*
gói, tôi có thể làm điều này:
root@fptc-rsvrd:~# apt-get autoremove -s | sed -ne 's/Remv \(linux[^[]*\)\[.*/\1/gp'
linux-headers-4.4.0-141-generic
linux-headers-4.4.0-141
linux-headers-4.4.0-143-generic
linux-headers-4.4.0-143
linux-headers-4.4.0-146-generic
linux-headers-4.4.0-146
linux-signed-image-4.4.0-141-generic
linux-image-extra-4.4.0-141-generic
linux-image-4.4.0-141-generic
linux-modules-extra-4.4.0-143-generic
linux-image-4.4.0-143-generic
linux-modules-extra-4.4.0-146-generic
linux-image-4.4.0-146-generic
linux-modules-4.4.0-143-generic
linux-modules-4.4.0-146-generic
Vì vậy, từ đây, thật dễ dàng để chuyển những điều này thông qua xargs
dưới dạng đối số dòng lệnh đến đơn giản apt-get remove -y
:
apt-get autoremove -s \
| sed -ne 's/Remv \(linux[^[]*\)\[.*/\1/gp' \
| xargs apt-get remove -y
Thông thường khi sử dụng xargs
, tôi sẽ bảo vệ chống lại khoảng trắng trong các đối số (ví dụ find ... -print0 | xargs -0 ...
:), nhưng vì tên gói không có khoảng trắng trong chúng, tôi thoải mái sử dụng các đối số được phân tách bằng dòng mới.
(Tôi nghĩ đó là những tình huống khác, sẽ phù hợp hơn khi "đánh dấu" một khoản giữ, các gói chưa mở. Điều đó cũng có thể được thực hiện với các biểu thức chính quy xargs
, và có lẽ là tình huống quá kỹ thuật.)