Il comando mv confonde il nome della directory con l'opzione di comando


12

Ho una directory chiamata --pycache--, che devo spostare __pycache__. Utilizzando il mvcomando nel modo seguente, mi dà l'output elencato. Come posso usare il CLIper fare quello che voglio?

$ mv --pycache-- __pycache__
/bin/mv: unrecognized option '--pycache--/'

Risposte:


22

Questo è un problema standard con nomi di file / directory che iniziano con simboli meno convenzionali. Il tuo problema è che mv sta trattando --pycache-- come nome di opzione lungo (poiché inizia con -, ci sono anche opzioni brevi, iniziano con -). Per maggiori dettagli sulle opzioni lunghe e brevi, consultare la manpage di getopt .

La soluzione standard in questa situazione è usare un doppio trattino vuoto - prima di ogni argomento, che dice al comando (mv nel tuo caso, ma funzionerà con altri, cp per esempio) di smettere di trattare ciò che segue come opzioni e trattarlo come argomenti.

Pertanto, il tuo comando diventerà:

$ mv -- --pycache--/ __pycache__

e non fallirà.


8
buona risposta ma penso che intendi : dice al comando di smettere di trattare ciò che segue come opzioni e di trattarlo come argomenti, non viceversa.
RoundTower,

1
Penso che sia più portabile di anteporre ./: mv ./--pycache-- __pycache__.
Kevin,

3
@Kevin Funziona solo se l'argomento è un nome file.
Starblue,

16

Il tuo primo personaggio -è ambiguo per il mvcomando (o meglio, significa inequivocabilmente che segue un nome di opzione).

Prova questo invece:

mv ./--ppycache-- __pycache__

Fonte: linux.about.com


2
+1 per la soluzione alternativa che funziona anche se il comando non supporta -
Sverre Rabbelier,
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.