Каталог (как и любой файл) не определяется его именем. Подумайте о том , как имя самого каталога адрес . Когда вы перемещаете каталог, он остается тем же каталогом, точно так же, как если вы переезжаете в другой дом, вы все тот же человек. Если вы удаляете каталог и создаете новый с тем же именем, это новый каталог, точно так же, как кто-то, кто переезжает в дом, где вы жили, не вы.
У каждого процесса есть рабочий каталог . Команда cd
в оболочке изменяет текущий рабочий каталог оболочки. Команда pwd
выводит путь к текущему рабочему каталогу.
Когда вы удалили каталог A, он удалил запись для A в родительском каталоге. Сам каталог A остался в файловой системе, но в отдельном состоянии, без имени. Он еще не был удален, потому что он использовался процессом, а именно первой оболочкой. Когда вы изменили каталог в первой оболочке, каталог был окончательно удален. То же самое происходит, когда файл удаляется, когда процесс все еще имеет его: запись каталога в файле немедленно удаляется, а сам файл удаляется, когда он перестает использоваться.
Точно так же наблюдайте, что происходит, когда вы перемещаете каталоги.
mkdir one two
touch one/1 two/2
cd one
ls
В другой оболочке:
mv one tmp
mv two one
mv tmp two
В первой оболочке:
ls
Файл 1
находится в каталоге, который изначально вызывался one
и теперь называется two
. Файл 2
находится в каталоге, который изначально вызывался two
и теперь называется one
.
¹ Точнее, путь, который не может быть уникальным , если символические ссылки или другие тонкости участвуют.
cd $PWD
.