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--/'

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.


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


2
+1 untuk solusi alternatif yang juga berfungsi jika perintah tidak mendukung -
Sverre Rabbelier
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.