Como cd para um diretório com um nome começando com um "-" (menos)?


10

Temos algumas pastas em que os nomes começam com um "-". Se eu tentar entrar com o terminal, cdinterpreta o "-" como uma opção. Como eu pude gerenciar isso?


1
Seria prudente evitar esses caracteres nos nomes de diretório / pasta.
Mindwin

Você não poderia simplesmente fazer cd '-my-directory'?
OldBunny2800

@ oldbunny2800 Você tentou isso?
nohillside

1
@ OldBunny2800 Não. As aspas impedem que o shell trate os caracteres separadamente; cadeias iniciando com hífens são tratadas como opções (ou não) pelo comando que recebe os argumentos, independentemente de como essas cadeias foram apresentadas ao shell.
chepner

1
@patrix eu fiz logo depois que postei o comentário, depois me distraí com outras travessuras do terminal e esqueci o meu comentário. :) Chepner ohhh, isso faz mais sentido.
OldBunny2800

Respostas:


20

Isso deve funcionar:

cd /path/to/-folderthatstartswithdash

EDIT :

De acordo com esta pergunta , isso funciona se você quiser apenas inserir o nome:

cd -- -folderthatstartswithdash

5
O --método é a resposta correta ... ele funcionará com a maioria dos utilitários padrão que aceitam um nome de arquivo como argumento e poupa a qualificação completa do caminho.
precisa saber é o seguinte

O --método funciona como "desativa" a análise de argumentos.
Tony Williams

3
Por que a restrição "se você deseja apenas inserir o nome"? Se você precisar de mais argumentos, basta colocá-los antes do --.
Federico Poloni 22/03

@FedericoPoloni Só estou dizendo que se você não quiser o caminho completo, pode usar este. Todos os outros argumentos devem ir antes do -.
Tom Shen

19
cd ./-folder

geralmente funciona muito bem aqui (e também com outros comandos)


Uma coisa legal dessa solução é que ela funciona com qualquer programa ou comando, não apenas com 'cd'; não depende que o comando ou programa tenha algum comportamento especial como "-" para alterar a interpretação dos argumentos subseqüentes.
Larry Gritz 27/03

-5

Colocar o nome entre aspas deve funcionar.


3
Por que isso funcionaria? Como o utilitário vai saber a diferença? A citação é feita pelo shell, afinal, a matriz de argumentos que o utilitário recebe será exatamente a mesma . Admito que não tentei sua solução, mas pelo pouco que sei sobre os reservatórios, parece bastante evidente que isso não pode funcionar.
Jörg W Mittag

Isso deve funcionar no Windows IIRC, e foi o que pensei primeiro, mas posso confirmar que não funciona no mac.
Cullub 21/03

2
Se funciona no Windows, é apenas porque o modelo de linha de comando do Windows é totalmente ridículo e inconsistente. Ou apenas porque os comandos do Windows não estão tratando -como um caractere de opção. Mas não há como citar deve poder mudar esse comportamento.
R .. GitHub Pare de ajudar o gelo
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.