Saya menggunakan sistem yang menjalankan distribusi berbasis Debian (cukup baru).
Saya ingin membuat daftar sederhana dari semua paket yang diinstal yang cocok dengan pola tertentu. Saya bisa melakukannya dengan, berlari, katakan,
apt list --installed "linux-image-*" | cut -d/ -f1
tetapi saya mendapatkan garis yang tidak saya pedulikan, misalnya:
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
Listing...
Jadi mungkin saya sebaiknya tidak menggunakan apt
. Saya dapat menjalankan dpkg-query seperti:
dpkg-query --showformat='${Package}\n' --show "linux-image*"
tapi itu tidak terbatas pada paket yang diinstal. Saya bisa menggunakan
dpkg-query --list "linux-image-*" | grep "ii"
tapi kemudian saya perlu melakukan banyak pemrosesan teks, dan siapa yang bisa mempercayai ruang-ruang itu, kan?
Jadi, intinya: Apa cara yang benar untuk mendapatkan daftar paket yang diinstal yang cocok dengan suatu pola?
Catatan :
- Poin bonus jika itu bisa menjadi regexp yang tepat dan bukan hanya shell glob.
- Harus mem-parsing teks sepertinya solusi yang kurang ideal; Jika itu yang Anda sarankan, berdebatlah mengapa tidak ada cara yang lebih baik.
sumber
aptitude search
danapt list
dalam hal ini tidak.Berbicara tentang regex:
Anda juga dapat menggunakan
dpkg-query
dengan-f
(--showformat) pilihan, yang ketika dijalankan tanpa nama paket, secara default paket hanya dipasang terdaftar.sumber
Untuk "menjebak" istilah yang dicari saat grep ping keluaran dpkg , perlu membungkus istilah pencarian sebagai berikut. " git " digunakan sebagai istilah pencarian spesimen:
The karat (^) ii diikuti oleh (2) ruang mengawali dicari jangka memastikan tidak ada SEBELUM itu selain itu kombinasi karakter bisa cocok.
Batas
[[:space:]]
istilah yang dicari mencegah kecocokan parsial terjadi dengan hanya ruang yang cocok segera setelah itu.sumber