Der Befehl mv verwechselt den Verzeichnisnamen mit der Befehlsoption
12
Ich habe ein Verzeichnis namens --pycache--, in das ich wechseln muss __pycache__. Wenn Sie den mvBefehl folgendermaßen verwenden, erhalte ich die aufgelistete Ausgabe. Wie kann ich mit dem CLImachen, was ich will?
Dies ist ein Standardproblem bei Dateinamen / Verzeichnissen, die mit weniger herkömmlichen Symbolen beginnen. Ihr Problem ist, dass mv --pycache-- als langen Optionsnamen behandelt (da es mit - beginnt, gibt es auch kurze Optionen, die mit - beginnen). Weitere Informationen zu langen und kurzen Optionen finden Sie in der Manpage für getopt .
Die Standardumgehung in dieser Situation besteht darin, einen leeren doppelten Bindestrich zu verwenden - vor allen Argumenten, der den Befehl (in Ihrem Fall mv, funktioniert aber mit anderen, z. B. cp) anweist, das Folgende nicht mehr als Optionen zu behandeln und als zu behandeln Argumente.
Gute Antwort, aber ich denke, Sie meinen - fordert den Befehl auf, das Folgende nicht mehr als Optionen zu behandeln und es als Argumente zu behandeln, nicht umgekehrt.
RoundTower
1
Ich denke, es ist tragbarer, vorangestellt zu werden ./: mv ./--pycache-- __pycache__.
Kevin
3
@ Kevin Das funktioniert nur, wenn das Argument ein Dateiname ist.
Starblue
16
Ihr erstes Zeichen -ist für den mvBefehl nicht eindeutig (oder bedeutet eindeutig, dass ein Optionsname folgt).
./
:mv ./--pycache-- __pycache__
.Ihr erstes Zeichen
-
ist für denmv
Befehl nicht eindeutig (oder bedeutet eindeutig, dass ein Optionsname folgt).Versuchen Sie stattdessen Folgendes:
Quelle: linux.about.com
quelle