В чем разница между "cd ../" и "cd /.."?
Что означают эти две команды?
cd ../
cd /..
Я попал в две директории вверх по дереву по первой команде и в корневой каталог со второй команды. Почему это происходит?
3 ответа
/
в конце название каталога / папки необязательно. Большую часть времени, включая или опуская последнюю косую черту в имени каталога, не изменяет эффект команды.
Так cd ../
эквивалентно cd ..
,
Пути, которые не начинаются с /
относительные пути; они разрешены относительно текущего каталога.
Каждый каталог имеет специальные записи:
- запись в каталоге называется
.
который разрешает в сам каталог - запись в каталоге называется
..
который разрешает родительский каталог (т. е. каталог, который содержит этот каталог)
Следовательно cd ../
а также cd ..
сменить каталог на родителя текущего каталога. Таким образом, если вы начинаете в /home/fazlan
и беги cd ..
или же cd ../
вы окажетесь в /home
,
По сравнению, /..
это абсолютный путь (хотя и необычный). /
является корневым каталогом файловой системы - каталог, к которому вы попадаете, если поднимаетесь вверх по иерархии каталогов. (Используя ту же родительскую и дочернюю метафору, мы говорим /
является предком всего в файловой системе.)
поскольку ..
означает "родительский каталог этого каталога" и /
означает "вершина файловой системы" /..
означает "родительский каталог вершины файловой системы".
Но что значит говорить о каталоге, который содержит /
? Что ж, /
исключение Поскольку ни один каталог не содержит его, мы говорим, что /
Родитель это сам. Поэтому в /
, ..
является /
, Как следствие, /..
такой же как /
,
Вот почему cd ../
приносит вам один каталог, откуда вы начали, в то время как cd /..
приводит вас к самой вершине. Более элегантные и легко читаемые способы сделать это cd ..
а также cd /
соответственно.
Первый относительный путь. Второй - абсолютный путь.
Оператор.. в этом аргументе означает перейти на единицу.
Косая черта, когда не в начале означает разделение имени подкаталога.
Косая черта в начале означает "Это абсолютный путь. Начать с корневого каталога"... сбрасывается, так как вы не можете отступить дальше. (Было время, когда многие из них позволяли ломать chroot)
Одна точка (.) Представляет текущий каталог. На самом деле, если вы выполнили cd .
это поместит вас в ваш текущий каталог (который, похоже, ничего не сделает). Если бы вы скопировали что-то из /dir1 в ваш текущий каталог, вы можете сделать это следующим образом:
cp /dir1/somefile.txt .
Выполнение cd ..
поднимает вас на один уровень каталогов. cd ../
делает то же самое. Если вы хотите подняться на два уровня, вы бы добавили еще две точки в конце, например:
cd ../..
Чтобы вернуться в корневой каталог, вы можете выполнить cd /
, Теперь допустим, я выполнил следующее:
cd /dir1/dir2/dir3/..
Это помещает меня в каталог /dir1/dir2, потому что (как мы установили выше) ..
говорит ему подняться на один уровень. Так что он идет к dir3, а затем идет вверх.
Призывая cd /..
вы говорите, чтобы перейти в корневой каталог /
и затем на один уровень выше, что он не может сделать. Таким образом, он фактически оставляет вас в корневом каталоге.