Ошибка удаления файла linux
При работе в командной строке администраторы часто сталкиваются с необходимостью что-то сделать с определенным файлом: удалить, переместить, скопировать. При выполнении подобных задач зачастую приходится обращаться к файлам по имени, что может быть затруднительно, поскольку в именах файлов могут встречаться самые разные символы. Даже те, которых нет на клавиатуре. В этом плане работу может облегчить файловый менеджер, в котором файл можно просто выделить и совершить с ним нужное действие. Но для тех, кто привык работать исключительно в командной строке, предлагаются следующие способы.
В качестве shell-оболочки рассмотрим bash, как самую используемую. А в качестве операции над файлами рассмотрим удаление, как самую деструктивную.
Ситуации могут быть разными. В текущей директории могут быть файлы, которые нужно удалить вместе с теми, которые нужно оставить. Имена у них могут быть самыми разными. Причем первые от последних могут отличаться только одним каким-нибудь заковыристым символом.
В названии файла есть служебный символ bash
Самый простой случай. Для удаления файлов, содержащих в своем названии служебные символы вроде пробелов, кавычек, двойных кавычек, звездочек, обратные кавычки и др. можно заэкранировать обратным слешем или использовать одинарные кавычки:
С помощью одинарных кавычек нельзя удалить файл, в названии которого есть одинарная кавычка, даже заэкранировав ее.
С полным списком служебных символов и механизмом экранирования в bash можно ознакомиться в man bash. Раздел QUOTING.
Имя файла начинается с дефиса
Удалить файл, начинающийся с дефиса простым экранированием не получится, и команда rm будет воспринимать дефис, как начало своего аргумента. Решить проблему довольно просто:
Удаляем по wildcard
Если удаление файлов попадает под wildcard-маску, то можно удалить всю группу файлов:
Файлы с управляющим символом в названии
В названии файла может встречаться управляющий ASCII-символ, такой как перевод строки (\n), табуляция (\t), backspace (\b). Это символы с ASCII-кодами менее 0x20, а также символы DELETE и ESC. Для удаления таких файлов подходит конструкция:
Другим способом удаления таких файлов являяется ввод управляющего символа с клавиатуры. Для этого нужно воспользоваться комбинацией клавиш, которая экранирует следующий введенный символ, тем самым запрещая системе обрабатывать его. Как правило, эта комбинация CTRL+V. Точно убедиться в этом можно с помощью команды stty -a, посмотрев на параметр lnext. Удалим файл, содержащий символ ESC:
Удаление файлов с символами utf8
Если имя файла содержит символ в кодировке utf8, который мы не можем набрать на клавиатуре, то удалить такой файл можно выделением его мышкой, копированием в буфер обмена и последующей вставкой на ввод команды rm. Главное условие состоит в том, что наш терминал должен работать в кодировке utf8. Кодировка выставляется в настройках терминала. Будь то xterm, putty или брутальный linux tty.
Перекодировка имени файла
Подозревая, что имя файла находится в кодировке, отличной от кодировки терминала, мы можем выполнить перекодирование всех файлов в текущей директории. В результате файлы с битой кодировкой будут перекодированы, а файлы с ascii-символами изменений не претерпят. Существенный плюс этого способа – приведение всех файлов в читабельный вид.
Как видно, чтобы осуществить правильное перекодирование нужно знать две кодировки: предполагаемую кодировку файла и кодировку нашего терминала. Наиболее трудно распознать предполагаемую кодировку файла по непонятным символам. Есть замечательная табличка
Также можно воспользоваться сторонними программами, которые попытаются распознать кодировку автоматически. Например, онлайн-декодер Лебедева.
Если вы встретили такие символы в примонтированном media-носителе или смонтированном разделе Windows, не спешите ничего перекодировать. Возможно, вы просто указали неправильные опции монтирования.
Автокомплит
В случае, если в директории название требуемого файла начинается уникально, и это название можно однозначно сформировать автокомплитом, то это довольно простой способ удалить файл:
Удаляем файл через меню выбора
Если мы дошли сюда, дело плохо. Попробуем удалить конкретный файл, составив для этого меню выбора. В итоге, все что нам останется сделать – это выбрать нужный пункт меню вместо ввода имени файла. Для этого нам нужно запрограммировать действие, которое будет происходить с файлом или файлами после ввода нами нужных пунктов меню.
Удаление по номеру inode
Удалить файл можно по его номеру inode. Номер inode уникально идентифицирует файл в файловой системе. Узнать номер inode можно с помощью команды ls, а удалить – с помощью find. Недостаток этого способа, такой же, как у предыдущего. Неудобно, в случае большого числа файлов.
Удаление по hex-коду
И нельзя не упомянуть один суровый метод. Удаление по hex-кодам. Суть такова: мы узнаем hex-коды всех байтов в имени файла, а затем удаляем файл, указывая вместо имени hex-коды.
Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.Модератор: Bizdelnick
В домашнем каталоге есть файл: **.doc Фменеджер говорит что весит он 3,6 Мб. но удалять отказывается от простого пользователя. говорит файла такого нет. из под рута таже история. говорит нет файла и все тут! ФС - ext3 ОС openSUSE11.2 КДЕ4
Подскажите в чем может быть дело? Как побороть этот файл? Просто он уже достал, ему уже 2 года. судя по данным из файлменеджера.
С какими опциями примонтирован раздел?(вывод mount) Какие права у файла?(вывод ls -l) Какая общая ситуация по фс в системе?(вывод df) Как удаляете? Пробовали удалять по номеру инода? UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis RitchieThe more you believe you don't do mistakes, the more bugs are in your code. наберите в консоли ls -l в этом каталоге.
вывод скопируйте суда.
Скоро придёт
Осень
Коллега, исправьте.
Позорище же какое.
Скоро придёт
Осень
/**.doc"
Только кавычки обязательно. Или
rm
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
тогда будет спрашивать, какой файл удалять. есть ещё mc
Stasroot1
а причём тут рут?!
у вас ошибка разве "нет доступа"?
да даже если и эта - если вы чего-то не понимаете, то "от рута", вы всё равно ничего не поймёте, а просто завалите всю систему.
Скоро придёт
Осень
Коллега, исправьте.
Позорище же какое.
Спасибо за указание ошибки, да еще и в названии темы! Исправил! (блин постоянно делаю ошибки с этим мягким знаком! Хотя знаю как проверить! :-) )
Всем спасибо за подсказки, после обеда все посмотрю и выводы сюда напишу. Спасибо за помощь.
наберите в консоли ls -l в этом каталоге.вывод скопируйте суда.
Вот вывод относительно одного файла который меня интересует:
С какими опциями примонтирован раздел?(вывод mount) Какие права у файла?(вывод ls -l) Какая общая ситуация по фс в системе?(вывод df) Как удаляете? Пробовали удалять по номеру инода?mount У меня для этих целей в bashrc прописана функция lsn, которая выводит файлы пронумерованными, и кроме того, прописывает их в переменные LS1, LS2, .
После чего файл с крякозябрами переименовывается так:
mv "$LS25" "normal_name"
тогда будет спрашивать, какой файл удалять. есть ещё mc
Stasroot1
а причём тут рут?!
у вас ошибка разве "нет доступа"?
да даже если и эта - если вы чего-то не понимаете, то "от рута", вы всё равно ничего не поймёте, а просто завалите всю систему.
Так объясните мне каким образом удаляя файл из под рута, файл который лежит в пользовательской директории можно завалить систему? Вроде как вордовские документы не являются системными и соответственно систему завалит не получится. поправьте в чем мои мысли неправильны если я ошибаюсь.
Пробовал уже. Вот что получается: Файл или папка /home/stas/Загрузки/��.doc не существует.
Как я понимаю, если файл отсутствует то его нельзя удалить переименовать переместить.
Вариант со скриптом интересный, но пока не очень понятно что куда прописывать?
Так что вопрос переходит из области практического в область теоретическую.
Так объясните мне каким образом удаляя файл из под рута, файл который лежит в пользовательской директории можно завалить систему? Вроде как вордовские документы не являются системными и соответственно систему завалит не получится. поправьте в чем мои мысли неправильны если я ошибаюсь.А потом набрал rm -rvf etc, что-бы стереть эту чужую папку. Вот только по инерции, случайно, я набрал /etc. К счастью, у меня был бекап и с того компьютера тоже
А у вас - есть?
Скоро придёт
Осень
Да у меня есть копия и как правило я ее делаю перед тем как что то серьезное делать и предполагаю что возможно случайно или по незнанию поврежу ее работоспособность.
Но согласитесь в моем случае даже из под рута систему я не убъю так как действую в конкретной папке и в случае если долго бездействует то или иное приложение с правами рут которое дабы не нашалить я его закрываю.
За метод с инодами спасибо. Новое для меня. Но понятное.
Но согласитесь в моем случае даже из под рута систему я не убъю так как действую в конкретной папке и в случае если долго бездействует то или иное приложение с правами рут которое дабы не нашалить я его закрываю.ага. я тоже действовал "в папке". И конкретно убил все конфиги сразу во всей системе. Случайно слеш поставил. Ага. Руки. Но это реальный случай. У вас ещё и не такое будет
Скоро придёт
Осень
ага. я тоже действовал "в папке". И конкретно убил все конфиги сразу во всей системе. Случайно слеш поставил. Ага. Руки. Но это реальный случай. У вас ещё и не такое будет
Будет конешно разное, но я пользуюсь Linux не первый день и поэтому глупые ошибки маловероятны. да, что то подобное натворить я мог когда только первые разы ставил и настраивал систему. сейчас все летает и работает на уверенную четверку, и ничего особо правит редактировать не особо нужно. :-) А в особо глубокие места не лезу стараюсь, так как времени на это реально нет. За предупреждение спасибо, да под рутом надо поменьше копаться по ФС ОС.
Пожалуйста попробуйте что я мог бы такого сделать чтобы поламать систему, просто ятобы я не наступил на эти и подобные грабли своей криворукости. про криворукость: не отправлять на винду, меня линь устраивает вполне, ибо в игрушки я вообще не работаю, фотошоп ненужен так как заглаза хватает гимпа. . хотя в винде мой твтюнер встроенный в ноутбук работает, а тут так и не настроил (упорствовать не упорствовал но надобы).
Функциональность, которую вы собираетесь использовать, - это то, для чего было разработано приложение WingPanel. Вы можете установить его из PPA, добавив ppa: ripps818 / wingpanel в источники программного обеспечения вашей системы.
Глядя на ваши скриншоты, я вижу, что у вас установлена группа root. Я бы попробовал использовать chown и посмотреть, решит ли это проблему.
Замена [username] на ваше имя пользователя.
Вы получите пару ошибок.
покажи нам терминал . сделай ll | grep panorama и покажи нам это; добавьте его в свой вопрос .
Я предлагаю сделать как root rm -f panorama.jpg .
в человеке Р.М. я нашел это:
Я знаю, что это старый файл, но у меня была та же проблема, что и у вас, только с папкой, а не с файлом. Ни один из предложенных здесь методов не сработал.
Мне удалось решить проблему, создав папку в том же положении и с тем же именем, что и я, которую я не мог удалить. Папка была создана правильно и «заменила» несуществующую. Затем я просто удалил новую папку, и проблема исчезла. Просто так.
У меня была такая же проблема. Это была проблема в индексных записях раздела. Я решил это, запустив Windows, если у вас двойная загрузка, или вставьте live CD Windows XP или Windows 7, а затем выполните следующие действия:
- Поиск КОМАНДЫ ПОДСКАЖИТЕ, что: cmd верно -click -> Запуск от имени администратора.
- chkdsk /f/x D: (где D - буква вашего диска).
- Нажмите Y, если он запрашивает Y / N
- Проверьте диск на наличие файла, который вы хотите удалить. Может быть, он удален или вы можете удалить его.
Непечатные символы в именах файлов могут вызывать такие проблемы, как пробел. Попробуйте интерактивную опцию rm и скажите 'Y' файлу, который вы хотите удалить "
rm -i" * pan * "Обратите внимание на использование * s для сопоставления любым (даже не печатным) символам .
Может быть, был удален inode, но не запись в каталоге. Попробуйте ls -i, чтобы увидеть inode. Fsck файловая система, чтобы решить эту проблему.
Предупреждение: для использования этих инструкций потребуется debugfs . Они могут вызвать потерю данных.
Они адаптированы к исходной проблеме и могут быть точными или неточными для любых будущих посетителей этой страницы. Любая потеря данных может быть непоправимой или даже усугублена fsck .
Это может быть потерянный инод. Пожалуйста, запустите ls -li , чтобы получить список номеров инодов, затем вы можете попытаться сбросить указанный инод. Например, если ваш ls -li выглядит следующим образом:
, то номер индекса равен 4980758, как показано в списке в качестве первого столбца.
Затем вы можете попытаться сбросить индекс. Пожалуйста, прочитайте весь пост, прежде чем делать что-нибудь .
Запустите debugfs от имени пользователя root:
и введите команду open /dev/sda1 с правильным блочным устройством для вашего раздела.
Затем дайте команду, чтобы сбросить индекс, номер которого вы получили ранее:
, используя < и > вокруг номера индекса.
Если он читает какой-то случайный текст, закройте терминал и откройте его снова. Запустите debugfs еще раз и снова введите команду open .
Теперь вы можете попробовать удалить файл. Это может привести к серьезному повреждению файловой системы.
Обратите внимание, что это можно сделать, даже если выяснится, что в файле никогда не было inode. Попробуйте команды по одной в порядке, указанном выше. Выйдите из debugfs и проверьте, существует ли файл. Если нет, начните снова, но следуйте следующей инструкции.
После очередного обновления ядра или компонентов linux mint cinnamon 20.1 «Ulyssa» при выделенном файле или папке в контактно-зависимом меню стали неактивны опции - Удалить и Удалить в корзину. Посоветуйте, пжлста, как решить проблему.
Ulyssa в смысле Илюша?
А какие именно файлы ты пытаешься удалить и не выходит? Покажи скриншот. Тут его нельзя выкладывать, на imgur залей, а сюда ссылку.
Vsevolod-linuxoid ★★★★★ ( 24.01.21 21:25:24 )Последнее исправление: Vsevolod-linuxoid 24.01.21 21:54:33 (всего исправлений: 2)
Все версии минта традиционно имеют женские имена. Что в данном случае имели в виду авторы и для меня загадка.
Я вижу 3 возможные причины проблемы:
- ФС перешла в ro
- Слетели права на файлы
- Поломка GUI
И я не могу дать совет, как починить, пока не пойму, что именно чинить.
-
По поводу первого пункта — покажи вывод
Последнее исправление: Vsevolod-linuxoid 24.01.21 21:54:00 (всего исправлений: 1)
conceptual — не жди готового решения. Причин аварии несколько, и никто не поможет тебе починить, пока не будет ясно, что сломалось.
Отвечай на вопросы, что тебе задают. Если непонятен сам вопрос — уточняй. Если не понимаешь, что делать для получения необходимой информации — тоже уточняй. Вообще не стесняйся вопросов.
Сообщай любой результат, что получишь — мы не телепаты. Отрицательный результат — тоже результат. Если совет не помог, об этом тоже надо написать! Если команда ничего не выводит, это тоже ответ.
Да, спасибо. Я не молчу - пробую все варианты. Скриншот на imgur залить не получилось (проблема с почтой). Не удаляются абсолютно все личные файлы и папки. Поэтому совет 1 и 2 не актуальны. Если выделить левой кнопкой мышки файл или папку и сразу нажать правую кнопку, то появиться т.н. контексно-зависимое меню и там в списке есть опции - Удалить и Удалить в корзину. Так вот они не активны. Совет 3 не дал результатов. И вообще идея удалять файлы и папки через терминал - не очень хорошая идея.
Сорри. А как вообще радикально решить эти проблемы:
Я вижу 3 возможные причины проблемы:
1, 2 и 3 это не советы. Это диагностические процедуры. Они не чинят проблему, они проверят, есть ли она и в чём состоит.
Vsevolod-linuxoid ★★★★★ ( 24.01.21 22:06:34 )Последнее исправление: Vsevolod-linuxoid 24.01.21 22:07:48 (всего исправлений: 1)
Для начала пришли эти выводы терминала. Это не советы, а диагностика. Советы будут после того, как станет понятно, что чиним.
Читайте также: