web-dev-qa-db-ja.com

「mvファイル」と今ではありません

ターミナルウィンドウで、次のように入力しました。

mv filename ..\..      [Note the wrong slash.]

今、私はそれを見つけることができません。消えた。いくつかの検索を実行し、回復可能な削除済みファイルを調べました。なし。失礼。直前にWindowsマシンを使用するのにぴったりです。

誰がどこに行ったのか知っていますか?

32
John

それはどこにも行かず、現在のディレクトリにあります。 ....(4つのドット)に名前が変更されました。

.が前にあるファイル名は隠しファイルとして扱われるため、隠されています。したがって、lsを実行すると、見つかりません。いつものように、隠しファイルを表示するにはls-a(または-A)オプションが必要です。つまり、表示するにはls -a(またはls -A)です。

mv filename ..\..を実行した場合、最初の2つのドットは../であれば親ディレクトリを意味しますが、バックスラッシュ..\を使用して、次をエスケープすることを示します文字ですが、ドット.はシェルにとって特別な意味を持ちません。したがって、それはリテラル.として扱われ、最後に追加された.も追加されるため、ファイル名として4つのドット....が得られます。

以前の(元の)名前に戻すには、mv .... filenameを実行します。

71
heemayl

mv .... filenameを実行して、名前を変更します。 (mv ..\.. filenameも機能しますが、\は不要です。元のコマンドと同じです。)

  • ファイルは削除されていないため、回復可能な削除済みファイルを検索しても見つかりませんでした。
  • Windowsと同様に、.および..エントリはすべてのディレクトリに存在し、それぞれ「現在」および「親」ディレクトリを参照します。ただし、Windowsとは異なり、3つ以上のドットのシーケンスには特別な意味はありません。珍しいことですが、少なくとも3ドットの長さであれば、通常のファイルに完全にドットだけで構成される名前を付けることは完全に自由です。
  • Windowsとは異なり、Ubuntuでは、シェルは\をエスケープ文字として使用し、シェルが特別な意味を与えるのではなく、次の文字を文字どおりに処理するようにします。 .文字は、シェルでは特別な意味を持ちません(特に、.および..エントリを機能させるのはシェルではありません)。したがって、コマンドでは、\..と同等でした。
  • heemayl says のように、デフォルトでは、ほとんどのユーティリティは名前が.で始まるファイルとディレクトリを表示しません。 .....で始まるため、-Aまたは-aフラグなしでlsを実行しても表示されませんでした。
13
Eliah Kagan

これはまだ同じディレクトリにあり、「隠しファイル」になっています。 「mv .... filename」で回復できます。

5
Bruce