polecenie mv myli nazwę katalogu z opcją polecenia
12
Mam katalog o nazwie --pycache--, do którego muszę się przenieść __pycache__. Użycie mvpolecenia w następujący sposób daje mi wymienione dane wyjściowe. Jak mogę wykorzystać CLIto, co chcę?
Jest to standardowy problem z nazwami plików / katalogami zaczynającymi się od mniej konwencjonalnych symboli. Problem polega na tym, że mv traktuje --pycache - jako długą nazwę opcji (ponieważ zaczyna się od -, są też krótkie opcje, zaczynają się od -). Szczegółowe informacje na temat długich i krótkich opcji można znaleźć na stronie man dla getopt .
Standardowym obejściem w tej sytuacji jest użycie pustego podwójnego myślnika - przed wszystkimi argumentami, które nakazują komendzie (mv w twoim przypadku, ale będzie działać z innymi, na przykład cp), aby przestał traktować to, co następuje, jako opcje i traktował to jako argumenty.
dobra odpowiedź, ale myślę, że masz na myśli - nakazuje komuś, aby przestał traktować to, co następuje, jako opcje i traktował to jako argument, a nie na odwrót.
RoundTower
1
Myślę, że to bardziej przenośne do prepend ./: mv ./--pycache-- __pycache__.
Kevin
3
@Kevin Działa to tylko wtedy, gdy argument jest nazwą pliku.
starblue
16
Twój pierwszy znak -jest niejednoznaczny dla mvpolecenia (a raczej jednoznacznie oznacza, że następuje nazwa opcji).
./
:mv ./--pycache-- __pycache__
.Twój pierwszy znak
-
jest niejednoznaczny dlamv
polecenia (a raczej jednoznacznie oznacza, że następuje nazwa opcji).Spróbuj zamiast tego:
Źródło: linux.about.com
źródło