perintah mv membingungkan nama direktori dengan opsi perintah

12

Saya memiliki direktori bernama --pycache--, yang harus saya pindahkan __pycache__. Menggunakan mvperintah dengan cara berikut, memberi saya output terdaftar. Bagaimana saya dapat menggunakan CLIuntuk melakukan apa yang saya inginkan?

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

Jawaban:

22

Ini adalah masalah standar dengan nama file / direktori yang dimulai dengan simbol yang kurang konvensional. Masalah Anda adalah bahwa mv memperlakukan --pycache-- sebagai nama opsi yang panjang (sejak dimulai dengan -, ada juga opsi pendek, mereka mulai dengan -). Silakan lihat manual untuk getopt untuk detail tentang opsi panjang dan pendek.

Solusi standar dalam situasi ini adalah dengan menggunakan tanda hubung ganda kosong - sebelum semua argumen, yang memberi tahu perintah (mv dalam kasus Anda, tetapi akan bekerja dengan orang lain, cp misalnya) untuk berhenti memperlakukan yang berikut sebagai opsi dan memperlakukannya sebagai argumen.

Dengan demikian, perintah Anda akan menjadi:

$ mv -- --pycache--/ __pycache__

dan tidak akan gagal.

vtest
sumber
8
jawaban yang bagus tapi saya pikir maksud Anda - memberi tahu perintah untuk berhenti memperlakukan yang berikut sebagai opsi dan memperlakukannya sebagai argumen, bukan sebaliknya.
RoundTower
1
Saya pikir itu lebih portabel untuk tambahkan ./: mv ./--pycache-- __pycache__.
Kevin
3
@Kevin Itu hanya berfungsi jika argumennya adalah nama file.
starblue
16

Karakter pertama Anda -ambigu untuk mvperintah (atau lebih tepatnya, itu jelas berarti bahwa nama opsi mengikuti).

Coba ini sebagai gantinya:

mv ./--ppycache-- __pycache__

Sumber: linux.about.com

yms
sumber
2
+1 untuk solusi alternatif yang juga berfungsi jika perintah tidak mendukung -
Sverre Rabbelier