Как сделать файл неудаляемым 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 через терминал. Для более опытных пользователей это элементарная задача, но новичкам надо с чего-то начинать. Знать как работать с файлами в консоли очень важно.
К тому же удаление из консоли дает много преимуществ и большую гибкость. Например, с помощью специальной команды вы можете полностью стереть файл с жесткого диска, так что его уже ни за что невозможно будет восстановить или одной командой с помощью специальных символов, условий или регулярных выражений удалить сотни ненужных файлов в одном каталоге или подкаталогох соответствующих определенному критерию.
В Linux для удаления файлов предусмотрена стандартная утилита rm. Как и все остальные, стандартные утилиты в имени rm тоже заложена определенная идея. Это сокращение от английского слова Remove.
Удаление файлов в Linux
Чтобы удалить файл linux достаточно передать в параметрах команде адрес файла в файловой системе:
Чтобы удалить все файлы, начинающиеся на слово file можно использовать специальный символ *, означает любой символ в любом количестве:
Эта команда удаления файла в linux должна использоваться очень осторожно, чтобы не удалить ничего лишнего. В утилите есть опция -i, которая заставляет программу спрашивать пользователя перед тем, как удалить файл linux:
rm: удалить пустой обычный файл «/home/user/file»?
Если файлов очень много, вы уверены в правильности команды и отвечать каждый раз y неудобно, есть противоположная опция - f. Будут удалены все файлы без вопросов:
rm -f /home/user/file*
Для удаления директорий, вместе с файлами и поддиректориями используется опция -R, например:
rm -Rf /home/user/dir
Будет удалено все что находиться в папке dir, и эта папка. Только будьте бдительны, чтобы не получился знаменитый патч Бармина:
Не стоит выполнять эту команду в своей системе, как видите, она удаляет все файлы в файловой системе Linux.
Удаление файла в linux также возможно с помощью утилиты find. Общий синтаксис find:
find папка критерий действие
Например, мы хотим удалить файл linux по имени:
find . -type f -name "file" -exec rm -f <> \;
Будут найдены все файлы с именем file в текущей папке и для них вызвана команда rm -f. Можно не вызывать стороннюю утилиту, а использовать действие delete:
find . -type f -name "file" -delete
Удалить все файлы в текущей директории, соответствующие определенному регулярному выражению:
find . -regex '\./[a-f0-9\-]\.bak' - delete
Или удалить файлы старше определенного строка, может быть полезно для удаления старых логов:
find /path/to/files* -mtime +5 -exec rm <> \;
Будет выполнено удаление файлов через терминал все файлы в папке старше 5-ти дней.
Чтобы полностью стереть файл, без возможности восстановления используйте команду shred. Во время удаления файлов с помощью утилиты rm удаляется только ссылка на файл, само же содержимой файла по-прежнему находиться на диске, пока система не перезапишет его новыми данными, а пока этого не случится файл можно легко восстановить. Принцип действия утилиты такой - после удаления файла, его место на диске несколько раз перезаписывается.
Опцией -n - можно указать количество перезаписей диска, по умолчанию используется 3. А если указать опцию -z программа при последней перезаписи запишет все нулями чтобы скрыть, уничтожение файла.
Выводы
Вот и все. Теперь вы знаете как удалить файл в Ubuntu, как видите, делать это не так уж сложно. Если у вас остались вопросы, пишите в комментариях!
Для новичков как вообще в 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 не первый день и поэтому глупые ошибки маловероятны. да, что то подобное натворить я мог когда только первые разы ставил и настраивал систему. сейчас все летает и работает на уверенную четверку, и ничего особо правит редактировать не особо нужно. :-) А в особо глубокие места не лезу стараюсь, так как времени на это реально нет. За предупреждение спасибо, да под рутом надо поменьше копаться по ФС ОС.
Пожалуйста попробуйте что я мог бы такого сделать чтобы поламать систему, просто ятобы я не наступил на эти и подобные грабли своей криворукости. про криворукость: не отправлять на винду, меня линь устраивает вполне, ибо в игрушки я вообще не работаю, фотошоп ненужен так как заглаза хватает гимпа. . хотя в винде мой твтюнер встроенный в ноутбук работает, а тут так и не настроил (упорствовать не упорствовал но надобы).
Создать или удалить файл в Linux — что может быть проще? Однако в некоторых ситуациях ваш верный и проверенный способ может не сработать. В этом случае разумно будет искать решение проблемы, но если на это нет времени, вы можете воспользоваться другими способами создания или удаления файлов в Linux. В этой статье как раз будут разобраны наиболее популярные из них.
Способ 1: Терминал
Подготовительные мероприятия
Файловый менеджер
Итак, допустим, вы хотите создать или, наоборот, удалить файл из папки «Документы», что находиться по пути:
Команда cd
Вот пример выполняемой операции:
После того как вы узнали, как выбрать директорию, в которой будут проводиться работы с файлами, можно переходить непосредственно к самому процессу создания и удаления файлов.
Утилита touch
Итак, для создания файла вам необходимо в командной строке прописать:
touch «Имя_Файла» (обязательно в кавычках).
Вот пример такой команды:
Функция перенаправления процесса
Этот способ можно считать самым простым. Чтобы создать файл с его помощью, необходимо всего лишь указать знак перенаправления и ввести имя создаваемого файла:
> «Имя_Файла» (обязательно в кавычках)
Команды echo и функция перенаправления процесса
Этот способ практически ничем не отличается от предыдущего, только в этом случае необходимо перед знаком перенаправления вписать команду echo:
echo > «Имя_Файла» (обязательно в кавычках)
Утилита cp
Как и в случае с утилитой touch, главным предназначением команды cp не является создание новых файлов. Она необходима для копирования. Однако задав переменную «null», вы создадите новый документ:
cp /dev/null «Имя_Файла» (обязательно без кавычек)
Команда cat и функции перенаправления процесса
cat — это команда, служащая для связки и просмотра файлов и их содержимого, но стоит ее использовать вместе с перенаправлением процесса, как она сразу создаст новый файл:
cat /dev/null > «Имя_Файла» (обязательно в кавычках)
Текстовый редактор vim
Примечание: если текстовый консольный редактор vim у вас уже установлен, то пропустите этот шаг и переходите сразу к созданию файла с его помощью
Для установки введите команду:
sudo apt install vim
После нажатия Enter потребуется ввести пароль. Вводите его и ждите окончания загрузки и установки. В процессе у вас могут потребовать подтверждение выполнения команды — введите букву «Д» и нажмите Enter.
О завершении установки программы можно судить по появившемуся логину и имени компьютера.
После установки текстового редактора vim можно приступить к созданию файлов в системе. Для этого нужно воспользоваться командой:
vim -c wq «Имя_Файла» (обязательно в кавычках)
Выше были перечислены шесть способов, как можно создавать файлы в дистрибутивах Linux. Конечно, это не все возможные, а лишь часть, но с их помощью обязательно получится выполнить поставленную задачу.
Команда rm
Именно команда rm служит в Linux для удаления файлов. Вам всего-навсего нужно указать директорию, ввести команду и вписать имя файла, который нужно удалить:
rm «Имя_Файла» (обязательно в кавычках)
Если вы хотите очистить целую директорию от ненужных файлов, то будет довольно долго вписывать их наименования раз за разом. Проще воспользоваться специальной командой, которая вмиг безвозвратно удалит все файлы:
Выполнив эту команду, вы можете видеть как в файловом менеджере удалились все ранее созданные файлы.
Способ 2: Файловый менеджер
В любом случае пользователям, которые недавно установили дистрибутив Linux себе на компьютер, он отлично подойдет, так как сходство с Windows, как говорится, налицо.
Примечание: в статье в качестве примера будет использован файловый менеджер Nautilus, который является стандартным для большинства дистрибутивов Linux. Однако инструкция для других менеджеров схожа, могут отличаться лишь названия пунктов и расположение элементов интерфейса.
Создаем файл в файловом менеджере
Необходимо делать следующее, чтобы создать файл:
-
Открыть файловый менеджер (в данном случае Nautilus), нажав по его иконке на панели задач или проведя поиск по системе.
После этого в директории появится пустой файл, которому остается лишь задать имя.
Удаляем файл в файловом менеджере
Процесс удаления в менеджерах Linux проходит еще проще и быстрее. Для того, чтобы удалить файл, по нему нужно сначала нажать ПКМ, а затем в контекстном меню выбрать пункт «Удалить».
Также можно ускорить этот процесс, выбрав нужный файл и нажав клавишу DELETE на клавиатуре.
Заключение
Отблагодарите автора, поделитесь статьей в социальных сетях.
В операционной системе Linux практически все операции можно выполнить с помощью терминала. Для этого в системе предусмотрено мужество очень мощных и гибких команд и утилит, которые позволяют очень тонко управлять системой.
В этой инструкции мы рассмотрим удаление файлов. Это типичная и очень простая процедура, выполнять которую должен уметь любой пользователь. Здесь вы узнаете, как удалить файл в Linux через терминал и какие команды для этого понадобятся. Статья будет актуальной для любого дистрибутива Linux, например, Ubuntu Linux, Debian и т. д.
Удаление файлов с помощью rm
Для того чтобы удалить файл в Linux через терминал необходимо использовать команду « rm » (от английского «remove»). Данная команда удаляет все указанные ей файлы, но по умолчанию не удаляет каталоги. Чтобы позволить команде « rm » удалять каталоги нужно добавить опцию « -r » или « -R ». Более подробно об этом во второй половине статьи.
Также нужно отметить, что команда « rm » не выполняет физическое удаление данных, вместо этого указанные файлы просто удаляются из файловой системы, а занимаемое ими место маркируется как свободное. Это означает, что после удаления данные остаются на диске и пока они не будут перезаписаны другими данными, их можно будет восстановить с помощью специальных программ. Для физического удаления данных с перезаписью диска следует использовать команду « shred ».
В общем случае для удаления файла в Linux через терминал достаточно просто ввести в терминал « rm » и указать имя документа. Например, для того чтобы удалить « file1.txt » из текущего каталога нужно выполнить вот такую команду:
Если удаляемый файл находится не в текущем каталоге, то в терминале нужно указать полный путь. Например, это может выглядеть вот так:
При необходимости, с помощью команды « rm » можно удалить сразу несколько файлов. Для этого просто введите « rm » и перечислите имена через пробел, например:
Для удаления большого количества похожих файлов можно использовать маски. Например, чтобы удалить все документы с расширением txt нужно выполнить вот такую команду:
Также маску можно использовать для удаления вообще всех файлов. Например, чтобы удалить все файлы в текущей папке нужно выполнить:
Аналогичным способом можно удалить все файлы в определенной папке:
Главное, соблюдать осторожность, так как при использовании масок можно удалить что-то лишнее.
Синтаксис и опции команды rm
Команда « rm » имеет множество опций, что позволяет очень тонко управлять процессом удаления файлов. Вы можете изучить все доступные опции если введете в терминал Linux команду « man rm ». Здесь же мы будем рассматривать самые простые и часто используемые опции.
Синтаксис команды « rm » выглядит следующим образом:
Разберем основные опции команды rm:
Теперь разберем некоторые опции, которые часто используются при удалении файлов в Linux через терминал. Например, очень часто возникает необходимость удалить папку вместе с всем содержимым. Для этого нужно использовать опцию «-r», которая включает рекурсивный обход папок. Например, для того чтобы удалить папку «folder1» и все ее содержимое нужно выполнить:
Если права доступа к файлу разрешают только чтение, то в терминале Linux появится запрос подтверждения, и чтобы продолжить вам нужно будет ввести букву « y » (от англ. «yes»).
Чтобы избежать такой ситуации и удалять все файлы без предупреждения нужно использовать опцию « -f ». Например:
Не редко возникает необходимость удалить папку вместе со всеми файлами и без запросов на подтверждение. В этом случае нужно комбинировать опции « -r » и « -f ». В результате команда выглядит вот так:
Если вы, наоборот, хотите каждый раз получать запрос подтверждения, то команду « rm » нужно выполнять с опцией « -i ». Например, для того чтобы удалить все файлы в текущем каталоге с запросом подтверждения нужно выполнить:
Также бывает полезной опция « -v ». При ее использовании в терминале будет появляться подробная информация о выполняемых действиях. Например, для того чтобы удалить все файлы в текущем каталоге и вывести информацию в терминал нужно выполнить:
Естественно все эти опции можно комбинировать, в зависимости от ваших задач.
Поиск и удаление файлов с помощью find
Также нужно отметить, что существуют и альтернативные способы удаления файлов. Например, вы можете использовать команду поиска « find ». Команда « find » будет полезна в тех случаях, когда вам нужно удалить определенные файлы в целом ряде папок.
Например, для того чтобы найти и удалить все txt-файлы в текущей и во всех вложенных папках можно выполнить вот такую команду:
Чтобы узнать больше об использовании « find » введите в терминал команду « man find ».
Читайте также: