'sudo apt-get remove [write]' สามารถทำลาย Ubuntu ของฉันได้หรือไม่


59

ฉันต้องการลบแอป 'เขียน' ของฉันดังนั้นฉันจึงพบสิ่งนี้ในเว็บไซต์: วิธีลบประเภทแพคเกจ:

sudo apt-get remove [package_name]

ดังนั้นฉันจึงพิมพ์:

sudo apt-get remove [write]

และหลังจากนั้นฉันก็เห็นด้วยกับข้อความแจ้งว่า: 'ใช่ทำในสิ่งที่ฉันพูด!' หรืออะไรทำนองนั้น และ voila! Ubuntu ของฉันถูกลบ! ใครช่วยบอกฉันหน่อยได้ไหมว่าทำไม?


29
ช่วงเวลาที่สอนได้เกี่ยวกับการอ่านผลลัพธ์ที่สมบูรณ์ พวกเราหลายคนทำสิ่งที่คล้ายกัน ... เพียงครั้งเดียว
user535733

7
คำแนะนำที่ดีหากคุณไม่แน่ใจว่าสิ่งที่จะเกิดขึ้นคือการใช้การตั้งค่าสถานะ--simulateหรือ-sภายใต้aptหรือapt-getก่อน - ตัวอย่าง: sudo apt -s remove php7.2-pspellไม่ได้ลบออกจริง ๆ เพียงแสดงให้คุณเห็นสิ่งที่จะถูกลบ / ได้รับผลกระทบ (ถ้าติดตั้ง) เช่นเดียวกับ 'ติดตั้ง'
bshea

touch wก่อนอื่นให้ช่วยตัวเองด้วยความเศร้าโศก ;-)
Stephen Kitt

@ B. แทนเนอร์ฉันดีใจที่ได้ยินว่าคำตอบของฉันช่วยได้จริงแทนที่จะเป็นแค่โพลาไรซ์ คุณยินดีต้อนรับสู่ห้องแชททั่วไปของ AUในกรณีที่คุณมีคำถามเพิ่มเติม (หรือคำถามอื่น ๆ ) หรือเพียงแค่ต้องการกล่าวสวัสดี!
ของหวาน

ยังเป็นบทเรียนที่ดีเกี่ยวกับสัญกรณ์สัญกรณ์ในหน้าคน
chrylis -on strike-

คำตอบ:


92

คำสั่งที่ถูกต้องเพื่อลบแพ็กเกจที่ชื่อwriteคือ:

sudo apt remove write

[write]เป็นชุดตัวอักษรที่ตรงกับตัวอักษร“W”,“อาร์”,“ฉัน”,“T” และ“E” aptและการจับคู่จะกระทำโดยการย่อยโดย คำสั่งที่คุณขับรถจึงจับคู่แพคเกจทั้งหมดที่มีหนึ่งในตัวละครเหล่านี้อยู่ในนั้นซึ่งแน่นอนอยู่มาก หากต้องการอ้างอิงaptรายการเอาท์พุทของรายการที่จำเป็น:

WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
  apt adduser (due to apt) gpgv (due to apt) ubuntu-keyring (due to apt) libapt-pkg5.0 (due to apt) libc6 (due to apt) libgcc1 (due to apt) libgnutls30 (due to apt) libseccomp2 (due to apt)
  libstdc++6 (due to apt) base-files base-passwd libdebconfclient0 (due to base-passwd) bash libtinfo5 (due to bash) debianutils (due to bash) bsdutils libsystemd0 (due to bsdutils) coreutils
  libacl1 (due to coreutils) libattr1 (due to coreutils) libselinux1 (due to coreutils) dash dpkg (due to dash) diffutils libbz2-1.0 (due to dpkg) liblzma5 (due to dpkg) libzstd1 (due to dpkg)
  zlib1g (due to dpkg) tar (due to dpkg) e2fsprogs libblkid1 (due to e2fsprogs) libcom-err2 (due to e2fsprogs) libext2fs2 (due to e2fsprogs) libss2 (due to e2fsprogs) libuuid1 (due to e2fsprogs) fdisk
  libfdisk1 (due to fdisk) libmount1 (due to fdisk) libncursesw5 (due to fdisk) libsmartcols1 (due to fdisk) findutils grep libpcre3 (due to grep) install-info (due to grep) gzip hostname init
  systemd-sysv (due to init) init-system-helpers (due to init) perl-base (due to init-system-helpers) libc-bin login libaudit1 (due to login) libpam0g (due to login) libpam-runtime (due to login)
  libpam-modules (due to login) mount util-linux (due to mount) ncurses-base ncurses-bin sed sysvinit-utils libudev1 (due to util-linux)
0 upgraded, 0 newly installed, 2503 to remove and 0 not upgraded.
After this operation, 7238 MB disk space will be freed.
You are about to do something potentially harmful.
To continue type in the phrase 'Yes, do as I say!'

คำเตือนที่หลากหลายรวมถึงความจำเป็นในการพิมพ์อย่างแท้จริง

ใช่ทำตามที่ฉันพูด!

ความปลอดภัยหมายถึงการป้องกันไม่ให้คุณทำลายระบบของคุณเนื่องจากตัวจัดการแพ็กเกจของระบบaptสามารถทำสิ่งนั้นได้อย่างสมบูรณ์ คำสั่งใด ๆ ที่ทำงานด้วยsudoควรรันอย่างรอบคอบและรอบคอบ แต่อย่ากังวลใจ: ผู้ใช้ Ubuntu ทุกคนที่มีประสบการณ์เกือบจะพังระบบของพวกเขาอย่างน้อยหนึ่งครั้งในความเป็นจริงมันเป็นส่วนหนึ่งของความสนุกถ้าคุณถามฉัน

อ่านเพิ่มเติม


1
ความคิดเห็นไม่ได้มีไว้สำหรับการอภิปรายเพิ่มเติม การสนทนานี้ได้รับการย้ายไปแชท
Thomas Ward

15

เพื่อเพิ่มสิ่งที่คนอื่นพูดคุณจะเห็นไวยากรณ์ที่บล็อกเกอร์ใช้ในการโพสต์ของพวกเขาค่อนข้างบ่อย

มีมาตรฐานที่ค่อนข้างคงเส้นคงวาซึ่งใช้เมื่อเขียนเอกสารเกี่ยวกับวิธีใช้คำสั่ง ในหน้าคู่มือทุกหน้าคุณจะเห็นโครงสร้างเดียวกันค่อนข้างมาก

หากสิ่งที่เป็นตัวเลือกมันมักจะอยู่ในวงเล็บ ls [folder](คุณไม่จำเป็นต้องให้โฟลเดอร์ ls แต่คุณสามารถทำได้ดังนั้นเป็นทางเลือก)

หากบางสิ่งเป็นไฟล์หรืออีเมลคุณมักจะเห็นเป็นมุมฉาก<likeThis.php>

หากคุณมีตัวเลือกระหว่างจำนวน จำกัด ของสิ่งต่าง ๆ (เช่นเดือน) คุณจะเห็นมันเป็นวงเล็บปีกกาดังนี้:{September,October,November,December}

ด้วยสิ่งใดสิ่งหนึ่งเหล่านี้คุณอาจเห็น...ว่าสามารถระบุสิ่งนี้ได้หลายอย่าง

และในที่สุดหากมีสิ่งที่จำเป็นอย่างยิ่งคุณจะเห็นเอกสารของ บริษัท จดทะเบียนและอาจขีดเส้นใต้ ตัวอย่างเช่นman mvคู่มือของ mv กล่าวสิ่งนี้:

mv [OPTION]... [-T] SOURCE DEST

เทคนิคการพูดชื่อแพ็คเกจ (เขียน) ไม่ใช่ส่วนที่จำเป็นของคำสั่ง ลองมัน. apt-get installหรือapt-get removeเพิ่งจะเรียกใช้และออกจากโปรแกรมได้สำเร็จ นั่นเป็นเหตุผลหนึ่งที่นำเสนอในวงเล็บในบล็อกนั้น


9

ก่อนที่จะทำsudo apt-getมันก็ควรที่จะทำการจำลอง:

$ apt-get remove [write] -s | wc -l
65280

มีแพ็คเกจเกือบ65,280แพ็คเกจที่มีคุณสมบัติในการลบหากติดตั้งในระบบของคุณ [write]เป็นรูปแบบการค้นหาสำหรับการ จับคู่ Regex ที่ทำให้ทุกแพ็คเกจถูกเลือกหากมี:

  • ตัวอักษรwหรือrหรือiหรือtหรือe

เอาท์พุทเป็นประปาไปนับจำนวนคำ| wc -lสั่งด้วย สายออกจากที่มีการปราบปรามโดยapt-get สวิตช์สั่งเพียงนับพิมพ์ของเส้นและไม่นับคำหรือนับจำนวนตัวอักษรwc-lwc

การจำลองถูกระบุด้วย-sแฟล็ก คุณยังสามารถใช้การ--simulateตั้งค่าสถานะเพื่อให้อ่านง่ายขึ้น ข้อดีอีกอย่างของการจำลองคือคุณไม่ต้องการsudoพลังที่พวกเราหลายคนได้เรียนรู้อาจเป็นอันตรายได้ตลอดเวลา

ในการรับแนวคิดของชื่อแพ็กเกจที่เกี่ยวข้องไปยังไพพ์เอาต์พุตกับlessคำสั่ง:

$ apt-get remove [write] --simulate | less

NOTE: This is only a simulation!
      apt-get needs root privileges for real execution.
      Also keep in mind that locking is deactivated,
      so don't depend on the relevance to the real current situation!
Reading package lists...
Building dependency tree...
Reading state information...
Package 'libpam-pin' is not installed, so not removed
Package 'activity-log-manager-common' is not installed, so not removed
Package 'libnet-patricial-perl' is not installed, so not removed
Package 'pe' is not installed, so not removed

   (.... Plus 65,269 more packages ....)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.