Я запускал скрипт Python, который работал со сбоями и использовал sudo
для создания файла с именем >
.
Как я могу избавиться от этого файла?
Конечно, когда я пытаюсь sudo rm >
, я получаю ошибку bash: syntax error near unexpected token 'newline'
, потому что он думает, что я пытаюсь перенаправить вывод rm
.
Его разрешения есть -rw-r--r--
.
sudo touch >
в оболочке выдается та же ошибка.) Вы сказали, что это был скрипт Python, предположительно созданный путем передачи">"
какой-либоos
функции. Так чтоsudo python <<< 'import os; os.remove(">")'
должно работать просто отлично.Ответы:
Любой из них должен работать:
Обратите внимание, что последние две команды, которые используют
find
, найдут все файлы или каталоги, названные>
в текущей папке и во всех ее подпапках. Чтобы избежать этого, используйте GNU find:источник
find
это не так,rm
потому что это рекурсивно и удалит каждый файл, указанныйrm
в вашем текущем дереве каталогов, независимо от его глубины.rm
варианты) все одинаковы. Это всего лишь три разных способа защитить это имя файла от оболочки. На самом деле нет причин предпочитать одно другому.find(1)
? Единственная проблема здесь заключается в том, что метасимвол оболочки должен быть заключен в кавычки. Существует миллион программ, которые могут удалить файл, но используют что-то, кроме того,rm(1)
что просто запутывают ответ.sudo find . ! -name . -prune -name '>' -exec rm {} +
,find
ничего не добавляет для ответа на заданный вопрос.Вы также можете использовать Python, чтобы удалить его:
С POSIX
find
:источник
>
как перенаправления вывода.То, что я делал вначале, тоже работает:
Это, конечно, вариант по проще
sudo rm \>
.источник
Я попробовал это как комментарий, но все вышло на одной строке
источник
Процитируйте символ, чтобы он не интерпретировался оболочкой как перенаправление:
Однако, если у вас есть другие файлы со странными символами, самый безопасный способ - открыть проводник GUI-файла, например,
nautilus
и удалить его там.источник