Come eseguire il cd in una directory con un nome che inizia con un "-" (meno)?


10

Abbiamo alcune cartelle in cui i nomi iniziano con un "-". Se provo a inserirli con il terminale, cdinterpreta il "-" come opzione. Come potrei gestirlo?


1
Uno sarebbe saggio evitare tali caratteri nei nomi di directory / cartelle.
Mindwin

Non potresti farlo cd '-my-directory'?
OldBunny2800

@ oldbunny2800 Ci hai provato?
Nohillside

1
@ OldBunny2800 No. Le virgolette impediscono alla shell di trattare i personaggi separatamente; le stringhe che iniziano con trattini sono trattate come opzioni (o meno) dal comando che riceve gli argomenti, indipendentemente da come quelle stringhe sono state presentate alla shell.
Chepner,

1
@patrix L'ho fatto subito dopo aver pubblicato il commento, poi sono stato distratto da altri shenanigans terminali, quindi ho dimenticato il mio commento. :) Chepner ohhh, ha più senso.
OldBunny2800

Risposte:


20

Questo dovrebbe funzionare solo:

cd /path/to/-folderthatstartswithdash

MODIFICA :

Secondo questa domanda , funziona solo se si desidera inserire il nome:

cd -- -folderthatstartswithdash

5
Il --metodo è la risposta corretta ... funzionerà con la maggior parte delle utility standard che accettano un nome file come argomento e risparmiano di qualificare completamente il percorso.
Kaithar,

Il --metodo funziona in quanto "spegne" l'analisi dell'argomento.
Tony Williams,

3
Perché la restrizione "se si desidera solo inserire il nome"? Se hai bisogno di più argomenti, mettili prima del --.
Federico Poloni,

@FedericoPoloni Sto solo dicendo che se non vuoi il percorso completo puoi usare questo. Tutti gli altri argomenti dovrebbero precedere il -.
Tom Shen,

19
cd ./-folder

di solito funziona abbastanza bene qui (e anche con altri comandi)


Una cosa bella di questa soluzione è che funziona con qualsiasi programma o comando, non solo con "cd"; non dipende dal fatto che il comando o il programma abbiano un comportamento speciale come "-" per cambiare l'interpretazione degli argomenti successivi.
Larry Gritz,

-5

Mettere il nome tra virgolette dovrebbe funzionare.


3
Perché dovrebbe funzionare? In che modo l'utilità saprà la differenza? La quotazione viene fatta dalla shell, dopotutto, l'array di argomenti che l'utility riceve sarà esattamente lo stesso in entrambi i casi. Devo ammettere che non ho provato la tua soluzione, ma da quel poco che so delle shell, sembra abbastanza evidente che questo non può funzionare.
Jörg W Mittag,

Questo dovrebbe funzionare su Windows IIRC, ed è quello che ho pensato prima, ma posso confermare che non funziona su Mac.
Cullub,

2
Se funziona su Windows è solo perché il modello da riga di comando di Windows è assolutamente ridicolo e incoerente. O semplicemente perché i comandi di Windows non vengono considerati -come un carattere opzione. Ma non è possibile che il preventivo sia in grado di modificare questo comportamento.
R .. GitHub smette di aiutare ICE il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.