mvコマンドは、ディレクトリ名とコマンドオプションを混同します


12

というディレクトリがあり--pycache--、これに移動する必要があり__pycache__ます。mv次の方法でコマンドを使用すると、リストされた出力が表示されます。を使用しCLIて希望することを行うにはどうすればよいですか?

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

回答:


22

これは、従来のシンボルではないファイル名/ディレクトリの標準的な問題です。あなたの問題は、mvが--pycache--を長いオプション名として処理していることです(-で始まるため、短いオプションもあるため、-で始まります)。長いオプションと短いオプションの詳細については、getoptのマンページを参照してください。

このような状況での標準問題を回避するには、空の二重ダッシュを使用することです-コマンド伝え、すべての引数の前に(あなたのケースでMVを、他のもの、例えばCPで動作します)オプションとして以下のものを処理することを停止して、それを処理するために引数。

したがって、コマンドは次のようになります。

$ mv -- --pycache--/ __pycache__

失敗しません。


8
良い答えですが、あなたが意味すると思います-オプションとして続くものの処理を停止し、引数として処理することをコマンドに指示し、逆ではありません。
ラウンドタワー

1
私はそれを前に付けるより移植だと思います./mv ./--pycache-- __pycache__
ケビン

3
@Kevin引数がファイル名の場合のみ機能します。
スターブルー

16

コマンドの最初の文字-があいまいですmv(または、オプション名が後に続くことを明確に意味します)。

代わりにこれを試してください:

mv ./--ppycache-- __pycache__

ソース:linux.about.com


2
コマンドがサポートしていない場合にも機能する代替ソリューションの+1
Sverre Rabbelier
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.