2016-11-13 10 views
1

Когда я сегодня получил доступ к моему серверу Ubuntu 16.04 и хотел удалить файл «test2», он просто не удалялся!Почему команда rm не удаляет файл?

Я использовал

rm test2 

, а также

rm -f test2 

, но он все еще не удалить его, как вы можете прочитать здесь:

[email protected]:~# ls 
basket desd.save packages scripts src test2 test5 unused 
[email protected]:~# rm test2 
[email protected]:~# ls 
basket desd.save packages scripts src test2 test5 unused 
[email protected]:~# rm -f test2 
[email protected]:~# ls 
basket desd.save packages scripts src test2 test5 unused 

Я также попытался удалить другие файлы, не работает!

Я являюсь владельцем «test2» и используя ls -la test2, вы можете видеть, что у меня есть права на чтение и запись этого файла!

[email protected]:~# ls -la test2 
-rw-r--r-- 1 root root 9 Nov 11 20:33 test2 

Использование which rm это говорит /bin/rm.

[email protected]:~# which rm 
/bin/rm 

А также \rm test2 не удаляет файл!

Я также проверил имя, нет пробелов в конце и т. Д., Потому что, когда я использую cat test2, отображается правильный контент!

Я также могу создать новый файл, но не могу удалить его.

rm также не является псевдонимом, я использовал unalias rm, но он сказал: «rm: not found».

Reboot также не помогло.

У меня была проблема с тем, что я случайно удалил файл вместо его перемещения, поэтому создал скрипт, который просто перемещает файл в определенную директорию.
Затем я использовал nano /etc/environment и добавил «:/root/scripts», где был установлен этот скрипт!
После этого я создал псевдоним rms, используя alias rms='./rm'. Я знаю, что это может быть немой имя файла, как системная команда, я уже изменил его, чтобы удалить!

Но после выполнения всего этого возникла ошибка, из-за которой rm не найдена и может быть найдена в следующих пакетах: coreutils. Поэтому я попробовал apt-get install coreutils, но он сказал, что он уже установлен.
Итак, я сначала использовал touch /bin/rm, а затем chmod +x /bin/rm.

После этого возникла эта проблема!

EDIT: проблема была /bin/rm файл был пустым, поэтому я настроил виртуальную машину и скопировал требуемый файл на сервер!

+2

Скачайте снимок экрана 'ls -l test2' –

+3

Что делает' type rm' print? 'rm' может быть сломанным псевдонимом или функцией оболочки. –

+1

или 'какой rm' тоже? –

ответ

1

Чтобы удалить файл, вы должны быть в состоянии изменить (записать) в каталог, содержащий файл. Если файл не удаляется, у вас, вероятно, нет разрешения на запись в каталог. Это может быть связано с тем, что файл находится в файловой системе только для чтения, но более вероятно, что у вас нет права на запись в каталоге. Использование rm -f подавляет сообщения об ошибках (и подсказки).

Еще одна возможность (возможно, не здесь) состоит в том, что имя файла имеет пробел или другой невидимый символ в конце, а имя, которое вы указываете как файл, фактически не существует (файл «test2» ", а не" test2 "или, может быть, это« test1<bs>2 », где <bs> представляет собой обратное пространство, или ... есть бесконечные способы столкнуться с проблемами).

Rerun rm test2; отвечать на запрос; посмотрите сообщения об ошибках.

Или запустите ls -ld . в каталоге, содержащем файл, и просмотрите разрешения, но помните, что списки ACL (списки управления доступом) и расширенные атрибуты могут затруднить работу с вашими разрешениями (хотя, опять же, они маловероятны быть фактором в проблеме).

+0

Даже root не может изменять файловую систему только для чтения, не переставляя ее с параметрами записи. –

+0

OP пытается 'rm' перед' rm -f'. Если проблема заключается в 'rm', то псевдоним 'rm -f', им нужно попробовать' \ rm', чтобы избежать псевдонима. –

+3

У меня есть нецензурные взгляды на людей, которые alias 'rm', особенно для' root'. Это, однако, означает оставаться местом SFW (в отличие от NSFW). –

 Смежные вопросы

  • Нет связанных вопросов^_^