'Sudo apt-get remove [write]' có thể phá hủy Ubuntu của tôi không?


59

Tôi muốn xóa ứng dụng 'viết' của mình, vì vậy tôi đã tìm thấy ứng dụng này trên một trang web: Để xóa loại gói:

sudo apt-get remove [package_name]

Vì vậy, tôi đã gõ:

sudo apt-get remove [write]

Và sau đó tôi đã đồng ý về lời nhắc: 'vâng, hãy làm những gì tôi nói!' hoặc điều tương tự. Và Voila! Ubuntu của tôi đã bị xóa! Ai có thể cho tôi biết tại sao?


29
Một khoảnh khắc có thể dạy về việc đọc đầu ra hoàn chỉnh. Nhiều người trong chúng ta đã làm một cái gì đó tương tự ... một lần.
dùng535733

7
Một mẹo hay nếu bạn không chắc chắn điều gì sẽ xảy ra là sử dụng cờ --simulatehoặc -sdưới apthoặc apt-gettrước - Ví dụ: sudo apt -s remove php7.2-pspellkhông thực sự loại bỏ điều đó. Chỉ cho bạn thấy những gì sẽ được gỡ bỏ / ảnh hưởng (nếu được cài đặt). Tương tự cho 'cài đặt'.
bshea

touch wđầu tiên để tiết kiệm cho mình một số đau buồn ;-).
Stephen Kitt

@ B.Tanner Tôi rất vui khi biết rằng câu trả lời của tôi thực sự có ích thay vì chỉ phân cực. Bạn luôn được chào đón trong phòng trò chuyện chung của AU trong trường hợp bạn có thêm câu hỏi (hoặc khác) hoặc chỉ muốn nói xin chào!
tráng miệng

Cũng là một bài học tốt về các quy ước ký hiệu trong các trang người đàn ông.
chrylis -on đình công-

Câu trả lời:


92

Lệnh đúng để xóa gói có tên writelà:

sudo apt remove write

[write]là một bộ ký tự phù hợp với các nhân vật mà họ làm, đó là một bộ trang phục, phù hợp với sự khác biệt apt. Lệnh bạn đã chạy do đó khớp tất cả các gói với một trong các ký tự này , tất nhiên là rất nhiều . Để trích dẫn aptdanh sách đầu ra của danh sách chỉ những cái cần thiết:

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!'

Nhiều cảnh báo cũng như sự cần thiết phải gõ theo nghĩa đen

Vâng, làm như tôi nói!

là các phương tiện bảo mật tại chỗ để ngăn bạn phá hủy hệ thống của bạn, vì trình quản lý gói của hệ thống apthoàn toàn có khả năng thực hiện điều đó. Bất kỳ lệnh nào được chạy đều sudophải được chạy cẩn thận và chu đáo, nhưng đừng băn khoăn: Gần như mọi người dùng có kinh nghiệm về Ubuntu đã phá vỡ hệ thống của họ ít nhất một lần, thực tế đó là một phần của niềm vui nếu bạn hỏi tôi.

đọc thêm


1
Bình luận không dành cho thảo luận mở rộng; cuộc trò chuyện này đã được chuyển sang trò chuyện .
Thomas Ward

15

Để thêm vào những gì người khác đã nói, bạn sẽ thấy cú pháp mà blogger đã sử dụng trong bài đăng của họ khá thường xuyên.

Có những tiêu chuẩn khá nhất quán được sử dụng khi viết tài liệu về cách sử dụng lệnh. Trong mỗi trang hướng dẫn, bạn sẽ thấy khá nhiều cấu trúc giống nhau.

Nếu một cái gì đó là tùy chọn , nó thường nằm trong ngoặc. ls [folder](bạn không cần cung cấp cho ls một thư mục, nhưng bạn có thể. Do đó, tùy chọn).

Nếu một cái gì đó là một tập tin hoặc email , bạn thường sẽ nhìn thấy nó trong dấu ngoặc nhọn.<likeThis.php>

Nếu bạn có lựa chọn giữa một số thứ hữu hạn (ví dụ: Tháng), bạn sẽ thấy nó trong các dấu ngoặc nhọn như thế này:{September,October,November,December}

Với bất kỳ một trong số này, bạn có thể thấy ...biểu thị nào có thể được đưa ra.

Và cuối cùng, nếu một cái gì đó là hoàn toàn bắt buộc, bạn sẽ thấy tài liệu của nó được liệt kê ra và có thể được gạch chân. Ví dụ, man mvhướng dẫn của mv, nói điều này:

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

Về mặt kỹ thuật, tên gói (ghi) không phải là một phần bắt buộc của lệnh. Thử nó. apt-get installhoặc apt-get removesẽ chỉ chạy và thoát khỏi chương trình thành công. Đó là một lý do nó có thể được trình bày trong ngoặc trên blog đó.


9

Trước khi thực hiện sudo apt-get, nên làm một mô phỏng:

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

Có gần 65.280 gói đủ điều kiện để loại bỏ nếu được cài đặt trên hệ thống của bạn. [write]là một mẫu tìm kiếm cho khớp Regex khiến mọi gói được chọn nếu nó chứa:

  • Bức thư whay rhay ihay thaye

Đầu ra được dẫn đến lệnh Word Count với | wc -l. Dòng đầu ra từ apt-getbị triệt tiêu bởi wc. Công -ltắc hướng dẫn wcchỉ in số dòng và không đếm từ hoặc số ký tự.

Mô phỏng được chỉ định với -scờ. Bạn cũng có thể sử dụng --simulatecờ để dễ đọc hơn. Một lợi thế khác của mô phỏng là bạn không cần sudonăng lực mà nhiều người trong chúng ta đã học có thể gặp nguy hiểm.

Để có được một ý tưởng về các tên gói liên quan đến đầu ra ống cho lesslệnh:

$ 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 ....)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.