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?
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:
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.
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.
cd '-my-directory'
?Respostas:
Isso deve funcionar:
EDIT :
De acordo com esta pergunta , isso funciona se você quiser apenas inserir o nome:
fonte
--
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.--
método funciona como "desativa" a análise de argumentos.--
.geralmente funciona muito bem aqui (e também com outros comandos)
fonte
Colocar o nome entre aspas deve funcionar.
fonte
-
como um caractere de opção. Mas não há como citar deve poder mudar esse comportamento.