Может ли sudo apt-get удалить [write] уничтожить мою Ubuntu?

59

Я хотел удалить свое приложение «запись», поэтому нашел это на сайте: Для удаления типа пакета:

sudo apt-get remove [package_name]

Поэтому я напечатал:

sudo apt-get remove [write]

А потом я согласился на приглашение: «Да, делай, что я говорю!» или что-то типа того. И вуаля! Мой Ubuntu удалял! Кто-нибудь может сказать мне, почему?

Йеспер Йоахим Соренсен
источник
29
Учебный момент о прочтении полного вывода. Многие из нас сделали нечто подобное ... однажды.
user535733
7
Хороший совет, если вы не уверены, что произойдет, - это использовать флаг --simulateили -sниже aptили apt-getсначала - Пример: sudo apt -s remove php7.2-pspellфактически не удаляет это. Просто показывает, что будет удалено / затронуто (если установлено). То же самое для «установки».
bshea
touch wво-первых, чтобы спасти себя от горя ;-).
Стивен Китт
@ B.Tanner Я рад слышать, что мой ответ действительно помогает, а не просто поляризует. Мы всегда рады видеть вас в общем чате АС, если у вас есть дополнительные (или другие) вопросы или вы просто хотите поздороваться!
десерт
Также хороший урок об условных обозначениях на страницах руководства.
Хрилис - на забастовке -

Ответы:

92

Правильная команда для удаления имени пакета write:

sudo apt remove write

[write]является набором символов, совпадающим с символами «w», «r», «i», «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
Комментарии не для расширенного обсуждения; этот разговор был перенесен в чат .
Томас Уорд
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

Выходные данные передаются команде Word Count с помощью | wc -l. Выходные строки из apt-getподавляются wc. В -lпереключателе инструктирует wcтолько печать подсчет строк , а не количество слов или количество символов.

Симуляция указывается с -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 ....)
WinEunuuchs2Unix
источник