"file.txt"フォルダを1つのフォルダの上に移動したいが、mv file.txt ../file.txt
入力がありませんmv file.txt ../
。
これでファイルが消え、エラーメッセージは表示されません。したがって、一部の操作が正常に完了したようです。ところでここで何が起こっているのでしょうか?
バックアップがあるので、少なくとも大丈夫です。しかし、私が何をしたのか、何を変更したのか、それともファイルが魔法のように消えたのか知りたいです。
ベストアンサー1
ファイルが次に移動されました。実際そのディレクトリに到達するために使用したシンボリックリンクの親ではなく、現在存在するディレクトリの親です。デフォルトでは、発生時のcd
動作はまたはls
とは異なります。上のパスをたどると効果的にシンボリックリンクを逆さまに進みますが、他のディレクトリはどのように到達したかに関係なく、自分がいるディレクトリの実際の親ディレクトリに移動します。mv
..
cd
次のディレクトリツリーを想像してください(~
はホームディレクトリ、shortcut
銀へのシンボリックリンクですmaindir/subdir
)。
~
├── maindir/
│ └── subdir/
│ └── file.txt
└── shortcut -> maindir/subdir/
簡単に言えば、表示されcd
表示されます。 ~/shortcut
ls
file.txt
pwd
~/shortcut
しかし、pwd
、の出力はそこに到達するために従ったシンボリックリンクに基づいて正確ですが、実際には(必要に応じて「物理的に」)にあり、それを知っている~/maindir/subdir
のでls
実際の親ディレクトリに移動します。期待することもできます。mv
mv file.txt ..
file.txt
~/maindir
~
スイッチを使用すると、cd
他の人のように振る舞うことができます-P
。したがって、元のコマンドmv
(~/shortcut
)を実行して実行したディレクトリにある場合は、次の場所cd -P ..
に移動します。実際親ディレクトリ(たとえば)を使用すると、単純な.dllを介して実際の現在のディレクトリにアクセス~/maindir
できます。file.txt
ls file.txt
cd -P .