Подтвердить что ты не робот

Как мне обрабатывать имя файла, которое начинается с символа дефиса (-)?

Как-то, в какой-то момент, я случайно создал файл в моем домашнем каталоге с именем "-s". Это около 500 кб, и я понятия не имею, содержит ли он важные данные или нет. Я не могу найти способ сделать что-либо с этим файлом, потому что каждая команда, которую я использую для просмотра, копирования или перемещения, интерпретирует имя файла как аргумент.

Я попытался помещать его в кавычки, избегая его с обратной косой чертой, комбинация из двух, ничего не работает.

Кроме того, когда я впервые задал этот вопрос своим коллегам, мы некоторое время озадачивали его, пока кто-то наконец не услышал и спросил: "Почему бы вам просто не переименовать его?" После того, как я объяснил ему, что cp и mv оба считают, что имя файла является аргументом, поэтому он не работает, он сказал: "Нет, не из командной строки, сделайте это от Gnome". Я застенчиво следовал его совету, и это сработало. ОДНАКО Меня все еще интересует, как бы вы решили эту проблему, если у вас не было диспетчера окон, и единственная опция была в командной строке.

4b9b3361

Ответ 1

Вы можете обратиться к нему либо с помощью ./-filename, либо некоторая команда позволит вам поместить его после двойной тире:

rm -- -filename

Ответ 2

Вы можете избавиться от него:

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 не считает ее опцией (поскольку она не начинается с -), но она все еще ссылается на конкретный файл в текущем каталоге.

Ответ 3

Вы можете использовать -, например:

rm -- -file

Ответ 4

используя rm, если вы знаете язык, вы также можете использовать их. Такие бородавки не затронуты.

Рубин (1.9 +)

$ ruby -rfileutils -e 'FileUtils.rm("-s")'

или

$ ruby -e 'File.unlink("-s")'