Что произошло с файлом, когда я ввел “mv file.txt.. /”?

Можно использовать objdump:

objdump -T -C libfoo.so
  • - T обозначает динамические символы
  • - C поможет более человечески-благоприятным методам C++ создания

2
03.04.2013, 02:32
3 ответа

Файл был перемещен в фактический родительский каталог того, который Вы были в, а не родительский каталог символьной ссылки, за которой Вы следовали для получения там. По умолчанию 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 ..)

5
27.01.2020, 21:49

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
4
27.01.2020, 21:49
  • 1
    Вы пропустили несколько пробелов для блока кода в конце там, но мне не разрешают сделать редактирования меньше чем шестью символами. –  depquid 02.04.2013, 19:44

mv file.txt ../ абсолютно законная команда: Вы сказали ядру перемещать имя файла к родительскому каталогу текущего каталога. file.txt не должен был исчезать, это должно все еще появиться в родителе любого каталога, Вы дали команду.

Возможно, что обстоятельства изменят то, что происходит. Например, если ../file.txt уже существовал, его содержание является теперь теми ./file.txt, и безотносительно ../file.txt ранее содержавший был удален.

3
27.01.2020, 21:49

Теги

Похожие вопросы