ฉันจะรับรายการด้วยแพ็คเกจที่เลือกโดย apt-get autoremove ได้อย่างไร?


13

มีคำสั่งใด ๆ ที่พิมพ์เฉพาะชื่อของแพ็คเกจที่apt-get autoremoveเลือกหรือไม่? ฉันกำลังสร้างสคริปต์ที่อัปเดตเคอร์เนลลบเคอร์เนลเก่าและแพ็คเกจที่ไม่จำเป็น ( apt-get autoremove) แต่ฉันต้องการพิมพ์รายชื่อแพ็คเกจที่จะถูกลบบนหน้าจอบนหน้าจอapt-get autoremoveฉันจะทำสิ่งนี้ได้อย่างไร


คุณควรจะสามารถให้มันทำงานsudo apt-get autoremove -yและมันควร autoremove สิ่งที่จำเป็นในการลบ ...

ลองอ่านที่นี่ [อาจช่วยได้] [1] [1]: serverfault.com/questions/433250/…
Doug

ในการรับรายการแพคเกจโดยไม่ต้องลบออกจริงๆคุณสามารถทำได้sudo apt-get --dry-run autoremove
heemayl

ฉันต้องการได้รับชื่อของแพคเกจไม่ใช่ผลลัพธ์ทั้งหมดของคำสั่ง ....
Afonso Sousa

คำตอบ:


13

เนื่องจากตามความคิดเห็นของคุณคุณต้องการแสดงเฉพาะแพ็คเกจที่กำลังจะถูกลบ:

apt-get --dry-run autoremove | grep -Po '^Remv \K[^ ]+'

grep รายละเอียดคำสั่ง:

  • -P: ตีความรูปแบบที่กำหนดเป็นรูปแบบ PCRE (Perl Compatible Normal Expression)
  • -o: พิมพ์เฉพาะสตริงที่ตรงกันแทนทั้งบรรทัด

การแยก Regex:

  • ^: ตรงกับจุดเริ่มต้นของบรรทัด
  • Remv: ตรงกับRemvสตริง
  • \K: แยกสตริงย่อยที่ตรงกันก่อนหน้านี้จากสตริงที่ตรงกัน
  • [^ ]+: ไม่ตรงกับอักขระอย่างน้อยหนึ่งตัว
$ apt-get --dry-run autoremove | grep -Po 'Remv \K[^ ]+'
libapache2-mod-php5
php5-readline
php5-cli
libonig2
libqdbm14
php5-json
php5-common 

1
@GeekLynxAfonso คุณไม่จำเป็นต้องใช้sudoกับ--dry-runตัวเลือก
jarno

@jarno ทำให้รู้สึกถึงความจริงที่ว่ามันอาจไม่จำเป็นไม่ได้เกิดขึ้นกับฉัน ขอบคุณ
kos

2

จริงๆแล้วคุณจะต้องกรองเอาท์พุทของคุณ

sudo apt-get autoremove --dry-run 

คำสั่ง

ตัวอย่างเช่นคุณสามารถทำได้ด้วย

sudo apt-get autoremove --dry-run  | head -n 5 | tail -n 1

คำสั่งของคุณก็ใช้ได้เช่นกัน !! แต่ฉันชอบคำสั่งของ kos ... แต่ขอบคุณเหมือนกัน !! :)
Afonso Sousa
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.