Как перейти в каталог с именем, начинающимся с «-» (минус)?


10

У нас есть несколько папок, имена которых начинаются с "-". Если я пытаюсь ввести их с терминала, cdинтерпретирует «-» как вариант. Как я мог справиться с этим?


1
Было бы разумно избегать таких символов в именах каталогов / папок.
Mindwin

Не могли бы вы просто сделать cd '-my-directory'?
OldBunny2800

@ oldbunny2800 Вы пробовали это?
холме

1
@ OldBunny2800 Нет. Кавычки не позволяют оболочке обрабатывать символы отдельно; Строки, начинающиеся с дефисов, обрабатываются как параметры (или нет) командой, которая получает аргументы, независимо от того, как эти строки были представлены в оболочке.
chepner

1
@patrix Я сделал сразу после того, как опубликовал комментарий, затем отвлекся на другие терминальные махинации, затем забыл о своем комментарии. :) Чепнер Оооо, это имеет больше смысла.
OldBunny2800

Ответы:


20

Это должно просто работать:

cd /path/to/-folderthatstartswithdash

РЕДАКТИРОВАТЬ :

Согласно этому вопросу , это работает, если вы хотите ввести только имя:

cd -- -folderthatstartswithdash

5
--Метод правильный ответ ... он будет работать с большинством стандартных утилит , которые принимают имя файла в качестве аргумента , и избавляет от необходимости полностью определить путь.
Кайтар

--Метод работает как «Отключает» аргумент разбор.
Тони Уильямс

3
Почему ограничение «если вы хотите только ввести имя»? Если вам нужно больше аргументов, просто поставьте их перед --.
Федерико Полони

@FedericoPoloni Я просто говорю, что если вам не нужен полный путь, вы можете использовать этот. Все остальные аргументы должны идти до -.
Том Шен

19
cd ./-folder

обычно работает довольно хорошо здесь (а также с другими командами)


Хорошая особенность этого решения в том, что оно работает с любой программой или командой, а не только с «cd»; это не зависит от команды или программы, имеющей какое-либо специальное поведение, например "-", чтобы изменить интерпретацию последующих аргументов.
Ларри

-5

Ввод имени в кавычки должно работать.


3
Почему это работает? Как утилита узнает разницу? Заключение в кавычки выполняется оболочкой, в конце концов, массив аргументов, который получает утилита, будет в любом случае одинаковым . Я признаю, что я не пробовал ваше решение, но из того, что я мало знаю об оболочках, кажется довольно очевидным, что это не может сработать.
Йорг Миттаг

Это должно работать на Windows IIRC, и это то, о чем я думал в первую очередь, но я могу подтвердить, что на Mac это не работает.
Cullub

2
Если это работает в Windows, это только потому, что модель командной строки Windows совершенно нелепа и непоследовательна. Или просто потому, что команды Windows не рассматриваются -как символы опции. Но цитирование не может изменить это поведение.
R .. GitHub ОСТАНОВИТЬСЯ, ПОМОГАЯ ЛЬДУ
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.