Linux rm не работает

Обновлено: 04.07.2024

Где $ archivedir - это путь к каталогу. Должно быть довольно просто, не так ли? Каким-то образом ему удается выйти из строя с этой ошибкой:

Но в этом каталоге есть файл с именем test.bz2, и если я изменю свой сценарий на

И скопируйте / вставьте вывод этой строки в окно терминала, файл успешно удален. Что я делаю не так?

TL; DR

Цитируйте только переменную, а не весь ожидаемый путь с подстановочным знаком

Объяснение

В Unix программы обычно сами не интерпретируют символы подстановки. Оболочка интерпретирует подстановочные знаки без кавычек и заменяет каждый аргумент подстановочных знаков списком совпадающих имен файлов. если $ archivedir может содержать пробелы, то rm $archivedir/*.bz2 может не делать то, что вы

Вы можете отключить этот процесс, заключив подстановочный знак в кавычки, используя двойные или одинарные кавычки или обратную косую черту перед ним. Однако это не то, что вам нужно здесь - вы хотите, чтобы подстановочный знак был расширен до списка файлов, которым он соответствует.

Будьте осторожны при написании rm $archivedir/*.bz2 (без кавычек). Разделение слов (то есть разбиение командной строки на аргументы) происходит после замены $ archivedir. Так что, если $ archivedir содержит пробелы, вы получите дополнительные аргументы, которых не собирались. Скажем, архивный каталог: /var/archives/monthly/April to June . Тогда вы получите эквивалент записи rm /var/archives/monthly/April to June/*.bz2 , который пытается удалить файлы "/ var / archives / month / April", "to" и все файлы, соответствующие "June / *. Bz2", что не является не то, что ты хочешь.

Правильное решение - написать:

Ваша оригинальная линия

Можно переписать как

Для достижения того же эффекта. Расширение подстановочных знаков не выполняется должным образом в вашей существующей настройке. Вы избегаете этого, перемещая двойные кавычки в «начало» пути к файлу (что является допустимым).

Кавычки заставляют строку интерпретироваться как строковый литерал, попробуйте удалить их.

В этой ситуации у меня есть разрешения «другие», но почему я не могу удалить его?

Здесь проблема в том, что у вас нет разрешения «w» для /home каталога. При удалении файла обратите внимание, что вы не пишете в этот файл, но изменяете содержимое каталога, в котором находится файл, поэтому наличие разрешения «w» для каталога является обязательным, если вы хотите удалить какой-либо файл из каталога.

снимок экрана терминала

Если я нахожусь в каталоге с разрешением «w», я могу удалить любой из его файлов, не беспокоясь о самом разрешении файла. Обратите внимание, что мой нынешний каталог /home/rohith имеет разрешение «w», и поэтому я могу удалить любой из его файлов независимо от прав доступа к файлу.

Терминальный скриншот удаления / home / rohith / shadi

Если тот же файл создается в каталоге / home, который не имеет разрешения «w», я получаю тот же вывод, что и ваш! :)

Терминальный скриншот попытки удалить / home / shadi

Это происходит потому, что вы не являетесь владельцем каталога, он принадлежит root и группе root. Таким образом, чтобы удалить его, вы можете либо изменить владельца, а затем удалить его (здесь вы повышаете свои права и становитесь «root» для получения права собственности):

Или вы пропускаете переход в собственность и делаете sudo rm права, чтобы повысить свои права и стать «root» для удаления:

Да, или вам нужно повысить свои права с помощью sudo команды. тогда будет запрошен ваш пароль, и вы станете суперпользователем для следующей команды. Теперь, если файл «shadi» был файлом, я могу удалить его с помощью пользователя «sinoosh». Для него не требуется «sudo». Это не делает сцену для меня, почему он не работает с каталогом

Права доступа показывают владельца root и группу root, поэтому вы должны использовать sudo.

Да, эта команда в порядке, но моя проблема в том, почему rm не работает с этими разрешениями. У меня есть полные разрешения для этого каталога в другом поле «У меня есть полные разрешения для этого каталога» Нет, у вас нет. «другое поле» шади - это не «другие». но «sinoosh» принадлежит другим, и он исполняет «rm -r shadi»

Как бы вы ожидали безопасности от своей учетной записи, если бы у всех было разрешение на удаление вашей домашней директории?

У вас нет w разрешения на удаление чьего-либо домашнего каталога по умолчанию, кроме случаев, когда chmod +w это так.

Вот различные разрешения и пример ( -rwxr-x--- / rwxrx ):

Это выглядит следующим образом : 1 + 2 + 4 = 7 , 1 + 4 = 5 , 0 = 0 , так 750 , т.е. система идеально разрешение. Владелец ( u в этом случае) может читать, записывать и выполнять файл, группа владельца ( g в этом случае) может читать и выполнять, а любой другой ( o в этом случае) ничего не может сделать. Это легендарный,

Я пытаюсь удалить некоторые поврежденные файлы видеодрайвера из раздела Windows в среде с двойной загрузкой (это предотвращает запуск Windows, событие в режиме восстановления).

После установки раздела я сделал:

cd /media/anderson/F47891047890C720/Windows/System32/drivers rm sisagpx.sys

, но это не вызвало ошибок, и файлы все еще там, как я мог проверить с выходом команды ls sisagpx.sys:

sisagpx.sys sisraid2.sys sisraid4.sys

Я новичок, но Я думаю, что гора не только для чтения. Я получил некоторую ошибку в связи с этим, но перемонтировал с помощью:

sudo mount -o remount,rw /media/anderson/F47891047890C720

Разрешающие разрешения, ls -f sisagpx.sys дает мне следующее:

-rwxrwxrwx 1 anderson anderson 58400 set 5 2015 sisagpx.sys

, а ls -ld . дает мне следующее:

drwxrwxrwx 1 anderson anderson 65536 abr 23 19:51 .

Итак, я думаю, что мне удастся удалить файл. Не знаю, что еще попробовать. Заранее благодарю за любое предложение.

3 ответа

Как мы обсуждали в чате, причина в том, что файловая система NTFS была грязной и содержала метаданные в кеше. Попытка повторного монтирования привела к:

После исправления с помощью chat OP удалось удалить файл.

Спасибо за большую помощь! Мне удалось удалить файл, и все сработало! – Anderson Pimentel 25 April 2017 в 21:50

Как мы обсуждали в чате, причина в том, что файловая система NTFS была грязной и содержала метаданные в кеше. Попытка повторного монтирования привела к:

The disk contains an unclean file system (0, 0). Metadata kept in Windows cache, refused to mount. Falling back to read-only mount because the NTFS partition is in an unsafe state. Please resume and shutdown Windows fully (no hibernation or fast restarting.) Failed to daemonize. Version 2016.2.22AR.1 integrated FUSE 28 Mounted /dev/sda2 (Read-Only, label "", NTFS 3.1) Cmdline options: Mount options: allow_other,nonempty,relatime,ro,fsname=/dev/sda2,blkdev,blksize=4096 Ownership and permissions disabled, configuration type 7

После исправления с помощью chat OP удалось удалить файл.

Как мы обсуждали в чате, причина в том, что файловая система NTFS была грязной и содержала метаданные в кеше. Попытка повторного монтирования привела к:

The disk contains an unclean file system (0, 0). Metadata kept in Windows cache, refused to mount. Falling back to read-only mount because the NTFS partition is in an unsafe state. Please resume and shutdown Windows fully (no hibernation or fast restarting.) Failed to daemonize. Version 2016.2.22AR.1 integrated FUSE 28 Mounted /dev/sda2 (Read-Only, label "", NTFS 3.1) Cmdline options: Mount options: allow_other,nonempty,relatime,ro,fsname=/dev/sda2,blkdev,blksize=4096 Ownership and permissions disabled, configuration type 7

$ sudo эрэм эрэф /
типа должен все удалить, но вместо этого он преждупреждает меня что это опасно.
rm: it is dangerous to operate recursively on ‘/’
rm: use --no-preserve-root to override this failsafe
Ощущаю себя человеком, который хочет покончить жизнь с самоубийством, но не может.

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь


Я пробую почему-то не получается
1. Напишите программу, которая запрашивает координаты точки (x, y) и определяет, попадает ли точка.

Все пугают баном
Вот, что за мода в последнее время стала - пугать баном за спаминг на форумах, гостевухах, досках.

пробую joomla+phpbb на денвер 3 не получается
в джумле 2.5 делаю ссылку кнопкой меню на др домен с др. движком phpbb3 - денвер переадресовывает.

Деструктор уничтожает 3 объекта класса. Почему?
Деструктор уничтожает 3 объекта класса. Не понимаю почему. У меня же 2 объекта используются V и V1.

Да-а-а… Неудобно наверно гланды удалять через ж…? За волосы над землей поднять себя не пробовали? Пытаться удалить систему в которой Вы работаете примерно то же самое…

Зайдите с LiveCD и делайте что хотите — удаляйте, форматируйте, переназначайте разделы и т.д. Marinero, так я с него и пытаюсь. не получается. мало того, после моей первой неудачной попытки форматнуть винт, я теперь не могу запустить и gparted. Пишет что прав не хватает, мол только рут это может сделать. Мой ноут обречен? И на флэшку с которой гружусь тоже не могу зайти! Вообще ничего не понимаю. Убил ноут? Вы внимательно там форматируйте, а то Вы может флэшку форматируете? Marinero, да я вообще ничего не могу отформатировать! Помогите! Я в отчаянии. bad_santa, По сути, оно вас предупреждает, что выполнение этой команды очень опасно для системы и если вы по неопытности набрали её случайно, то самое время остановиться и не делать этого дальше. Впрочем, тут же советует, что, если ваши намерения серьёзны и вы действительно собираетесь удалить все данные , начиная от корня системы, то должны использовать ключ "не защищать систему".
То бишь, если вы действительно желаете выполнить удаление системы и осознаёте, что после выполнения этой команды у вас она работать больше не будет, то вы должны в итоге выполнить

Учтите также, что при выполнении данной команды будут удалены все данные со всех смонтированных в данной системе сторонних разделов, в том числе, смонтированных по сети .
Если вы желаете удалить только системные разделы и /home со всем его содержимым, то предварительно отмонтируйте и физически отключите все ваши пользовательские разделы (например, смонтированные в /media и /mnt) во избежание нежелательной потери ваших данных (фильмов, музыки, фото и книг).

Добавлено через 2 минуты
Добавлю: удалятся только данные - никакой переразметки диска или удаления разделов диска при этом не произойдёт.
Для этого есть другой инструмент - Parted (GParted)

sudo rm rf

Если вы новичок в Linux, вы часто будете сталкиваться с советом никогда не выполнять команду sudo rm -rf /. В мире Linux вокруг sudo rm -rf существует множество мемов.

sudo rm -rf: что она делает?

Давайте изучать все пошагово.

Команда rm используется для удаления файлов и каталогов в командной строке Linux.

Но некоторые файлы не будут удалены сразу из-за прав доступа к файлам только для чтения. Их нужно удалить принудительно с помощью опции -f.

Однако команда rm не может быть использована для удаления каталогов (папок) напрямую. Вы должны использовать рекурсивную опцию -r с командой rm.

Таким образом, команда rm -rf означает рекурсивное принудительное удаление заданного каталога.

Вот скриншот всех вышеперечисленных команд:

Если вы добавляете sudo к команде rm -rf, вы удаляете файлы с правами root. Это означает, что вы можете удалять системные файлы, принадлежащие пользователю root.

Любая команда, которая что-то удаляет, может быть опасной, если вы не уверены в том, что удаляете.

Рассмотрим команду rm -rf как нож. Опасен ли нож? Возможно. Если вы режете ножом овощи, это хорошо. Если вы режете ножом пальцы, это, конечно, плохо.

То же самое касается команды rm -rf. Сама по себе она не опасна. В конце концов, она используется для удаления файлов. Но если вы используете ее для удаления важных файлов неосознанно, то это уже проблема.

Вы знаете, что с помощью sudo вы выполняете команду от имени root, что позволяет вам вносить любые изменения в систему.

linux directory structure

Согласно иерархии каталогов Linux, все в файловой системе Linux начинается с корня. Если вы удалите root, вы, по сути, удалите все файлы вашей системы.

Именно поэтому рекомендуется не выполнять команду sudo rm -rf /, потому что вы удалите всю систему Linux.

Прочтите: Это изменение в Google Chrome 94 заставит вас перейти на Firefox или Vivaldi

Я люблю рисковать: что если я запущу sudo rm -rf /, чтобы посмотреть, что произойдет?
В большинстве дистрибутивов Linux предусмотрена безотказная защита от случайного удаления корневого каталога.

snimok ekrana ot 2021 09 02 21 19 02

Это очень хорошо. Ваша система Linux позаботится о таких случайностях.

Теперь, что если вы хотите уничтожить свою систему с помощью sudo rm -rf /? Вам придется использовать -no-preserve-root.

Нет, пожалуйста, не делайте этого самостоятельно. Позвольте мне показать вам это.

Все ясно или все еще в замешательстве?

Linux имеет активное сообщество, где большинство людей стараются помочь новым пользователям. Большинство, потому что есть злые тролли, которые притаились, чтобы подшутить над новыми пользователями. Они часто предлагают выполнить rm -rf / для решения простейших проблем, с которыми сталкиваются новички. Эти идиоты получают своего рода удовлетворение, как мне кажется, за такие злобные действия. Я немедленно запрещаю им посещать форумы и группы, которые я администрирую.

Надеюсь, эта статья прояснила для вас ситуацию. Вполне возможно, что у вас все еще есть некоторые неясности, особенно потому, что это связано с root, правами доступа к файлам и другими вещами, с которыми новые пользователи могут быть не знакомы. Если это так, пожалуйста, сообщите мне о своих сомнениях в разделе комментариев, и я постараюсь их развеять.

:)

В конце концов, помните. Не пейте и не рутируйте. Оставайтесь в безопасности при работе с вашей системой Linux

Читайте также: