Ответ 1
Вы можете обратиться к нему либо с помощью ./-filename
, либо некоторая команда позволит вам поместить его после двойной тире:
rm -- -filename
Как-то, в какой-то момент, я случайно создал файл в моем домашнем каталоге с именем "-s". Это около 500 кб, и я понятия не имею, содержит ли он важные данные или нет. Я не могу найти способ сделать что-либо с этим файлом, потому что каждая команда, которую я использую для просмотра, копирования или перемещения, интерпретирует имя файла как аргумент.
Я попытался помещать его в кавычки, избегая его с обратной косой чертой, комбинация из двух, ничего не работает.
Кроме того, когда я впервые задал этот вопрос своим коллегам, мы некоторое время озадачивали его, пока кто-то наконец не услышал и спросил: "Почему бы вам просто не переименовать его?" После того, как я объяснил ему, что cp и mv оба считают, что имя файла является аргументом, поэтому он не работает, он сказал: "Нет, не из командной строки, сделайте это от Gnome". Я застенчиво следовал его совету, и это сработало. ОДНАКО Меня все еще интересует, как бы вы решили эту проблему, если у вас не было диспетчера окон, и единственная опция была в командной строке.
Вы можете обратиться к нему либо с помощью ./-filename
, либо некоторая команда позволит вам поместить его после двойной тире:
rm -- -filename
Вы можете избавиться от него:
rm ./-s
Команда rm
(по крайней мере, под Ubuntu 10.04) даже сообщает вам следующее:
[email protected]:~$ rm -w
rm: invalid option -- 'w'
Try `rm ./-w' to remove the file `-w'.
Try `rm --help' for more information.
Причина, по которой работает, заключается в том, что rm
не считает ее опцией (поскольку она не начинается с -
), но она все еще ссылается на конкретный файл в текущем каталоге.
Вы можете использовать -, например:
rm -- -file
используя rm
, если вы знаете язык, вы также можете использовать их. Такие бородавки не затронуты.
Рубин (1.9 +)
$ ruby -rfileutils -e 'FileUtils.rm("-s")'
или
$ ruby -e 'File.unlink("-s")'