Файл был перемещен в фактический родительский каталог того, который Вы были в, а не родительский каталог символьной ссылки, за которой Вы следовали для получения там. По умолчанию 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 ..
, это возьмет Вас к фактическому родительскому каталогу (например. ~/maindir
), и Вы сможете найти file.txt
там с простым ls file.txt
. (Можно также добраться до фактического текущего каталога с cd -P .
.)
mv file.txt ..
и mv file.txt ../file.txt
имейте точно тот же эффект. Существует тонкое различие в mv
:
..
), можно ввести несколько источников, и они перемещены к месту назначения с тем же именем (именами)Так, если dir является каталогом:
mv file1 file2 file3 dir # Moves the files there
mv file dir # Moves one file
mv file dir/newname # Moves file, new name
mv file newfile # Just renames
mv file.txt ../
абсолютно законная команда: Вы сказали ядру перемещать имя файла к родительскому каталогу текущего каталога. file.txt
не должен был исчезать, это должно все еще появиться в родителе любого каталога, Вы дали команду.
Возможно, что обстоятельства изменят то, что происходит. Например, если ../file.txt
уже существовал, его содержание является теперь теми ./file.txt
, и безотносительно ../file.txt
ранее содержавший был удален.