Давайте рассмотрим некоторую особенность, связанную с командой rm и ее применением к файловой системе. Вы не сможете, как бы не старались, удалить каталог, который является поддержкой файловой системы, вы не сможете. Да и зачем удалять его? Давайте вообще их не трогать.
Как удалять файл, который имеет в своем имени пробел? Самый простой способ – вызвать команду rm и указать имя файла в качестве пары метров – не подойдет. Ведь заданное имя, эта команда будет интерпретировать как отдельные параметры. Но на самом деле, данная задача решается не сложно.
Нужно всего лишь ввести имя файла в кавычках.
1 2 3 4 5 6 7 8 9 |
ls cousin harold.jpg cousin_roy.jpg cousin_beth.jpg rm cousin harold.jpg rm: cannot remove 'cousin': No such file or directory rm: cannot remove 'harold.jpg': No such file or directory rm "cousin harold.jpg" ls cousin_roy.jpg cousin_beth.jpg |
И еще есть проблема: как удалять файлы, имя которых начинаются с дефисом?
1 2 3 4 5 |
ls cousin_roy.j pg cousin_beth.j pg rm cousin_roy.jpg rm: invalid option с Try 'rm help' for more information. |
Командой rm вы воспринимаете символ как признак опции, но в этом случае опция не распознается, начинается с буквы с, а далее следуют символы ousin_roy.jpg. В конечном итоге, команда не знает, что делать.
Эту проблему можно решить двумя способами. Первым, вы сможете предварить имя файла парой дефисов ( ). Это будет означать, что находящие следующие данные за ним, будут восприниматься не в виде опции, а в виде имени файла или каталога.
1 2 3 4 5 |
ls cousin_roy.j pg cousin_beth.jpg rm cousin_roy.jpg ls cousin_beth.jpg |
Вторым способом, можно как часть пути к файлу использовать точку, благодаря этому, устранится пробел вначале дефиса, что собственно и вводил команду rm в заблуждение.
1 2 3 4 5 |
ls cousin_roy.jpg cousin_beth.jpg rm ./ cousin_roy.jpg ls cousin_beth.jpg |
Данный пример, в который раз подтвердил: изобретательность юзеров операционной системы Linux без границ. Но все же, лучше будет, если в начало файла дефис не включать.