Позбавлення файлу під назвою "-d" [дублікат]


18

Можливі копії:
Як видалити файл з назвою "-p" з bash?
Як видалити файл з цим ім'ям на linux: -] ??????? q
Яку команду потрібно використовувати, щоб видалити файл з назвою `-rf`?

Я випадково створив файл під назвою: -d

Я намагався використати одиночні та подвійні лапки, а також підказки для видалення, але кожен раз, коли "rm" видає мені цю помилку:

Попередження: - опціяdidictory (-d) є бездокументованою і не працює. Використовуйте -rf для видалення не порожніх dirs rm: відсутній операнд Спробуйте `rm --help 'для отримання додаткової інформації.

Як я можу позбутися файлу?

Відповіді:


44
rm -- -d

--означає "закінчення варіантів". Все, що далі в командному рядку після цього, інтерпретується як аргумент (тобто ім'я файлу у вашому випадку), а не як варіант.



8

Використовувати "-" у цьому конкретному випадку - найпростіше. Однак більш загальним рішенням, якщо ви натрапите на файл з недрукованими символами управління, - це посилання на файл за допомогою inode:

% ls -ali aFileWithFunnyCharacters
      9215 -rw-r-----   1 chris  chris         0 Sep  8 16:55 aFileWithFunnyCharacters
% find . -xdev -inum 9215 -exec rm {} \;
% ls -ali aFileWithFunnyCharacters
aFileWithFunnyCharacters: No such file or directory

0

У Gnu-find є варіант -delete:

find -name "-d" -delete

ще можна спробувати

find -name "-d" -exec rm {} ";" 

але - -розв’язання зверху коротше, і спосіб зупинити інтерпретацію прапорів - використовується багатьма програмами, використовуючи getopt-бібліотеку, тож вивчити це взагалі корисно.

Але знайти / -забрати - це щось дуже корисне, щоб навчитися теж. Зауважте, що обидва приклади будуть видаляти файли з назвою "-d" рекурсивно, що може траплятися не часто, але якщо у вас є один файл з назвою "-d", ви можете мати їх більше. :)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.