Я использую терминал на машине с Ubuntu, и есть файл, который я хотел бы удалить. Имя файла \
(просто обратная косая черта).
Теперь обычно я просто делаю
rm filename
Однако, если я делаю rm \
это, он думает, что я пытаюсь написать многострочную команду.
Как я могу удалить этот файл? Я знаю, что могу просто использовать файловую систему с графическим интерфейсом, но это не очень эффективно.
Итак, как я могу удалить (в терминале) файл с именем \
?
code
блок здесь в этом комментарии!)fsck
. Шутки в сторону. Если названный файл/
существует, ваша файловая система повреждена.*
мной ...Ответы:
Используйте
rm \\
(избегайте обратной косой черты с другой обратной косой чертой). Обратите внимание , что это также работает , подобным образом , для каталогов имени\
( с использованием либоrmdir
, илиrm
с-r
флагом).Пример:
источник
rm '\'
(но неrm "\"
).\
символ используется в качестве escape-символа в строках с двойными кавычками. Сказаниеrm "\"
будет проанализировано в незамкнутую строку, так как вторая кавычка используется с escape-символом (и, следовательно, будет анализироваться как сам символ двойной кавычки, а не как конец строки). Таким образом, терминал будет ждать, пока вы не закончите строку с другим"
. Эквивалентный метод для использования двойных кавычек здесь будетrm "\\"
(который прямо эквивалентен обоимrm '\'
иrm \\
, как вы уже подтвердили).Общая тактика ручного удаления файлов с неудобными символами в именах:
Это предложит вам выбрать, следует ли удалять каждый файл в каталоге.
источник
rm -i ./?
./
Вы также можете отменить связь, ссылаясь на индекс файла
источник
Пожалуйста, сначала проверьте inode файла. ls -li
137791 -rw-rw-r--. 1 SVR 366 11 марта 15:57
индекс "\" равен "137791", а затем используйте команду find для удаления "\" с номером индекса.
находить . -inum 137791 -exec rm -i {} \;
rm: удалить обычный файл `./ \ '? да
"\" будет удален тогда.
источник