Работа с файлами, имена которых начинаются с тире, требует осторожности. Символ тире (—) часто используется в завершении команд для ссылки на stdin или stdout. И в этом нет ничего особенного, ни в части файловой системы, ни в части ядра нет ограничений на использование символа тире.
Сложности могут возникнуть при попытке удалить файл, имя которого начинается с тире. Обычный прием с командой rm здесь не пройдет:
rm -f -myfile rm: invalid option -- t
Все дело в том, что shell использует тире для передачи параметров командам, в данном случае rm. Решением данной проблемы является использование двойного тире после указания всех опций:
rm -f -- -myfile
Когда shell встретит двойное тире, он перестанет искать опции и примет все остальные данные за параметр, в данном случае — имя файла для удаления.
Другим решением данной проблемы является следующий способ:
rm -f ./-myfile
Данный способ работает, так как выражение ./ предшествует тире в имени файла и знаменует начало параметра.