что такое цель "кд ." команда?

использовать xkblayout -состояние

$ xkblayout-state print "Current layout: %s(%e)"
Current layout: us(us)

3
08.05.2020, 01:03
2 ответа

Действие cd.заключается в обновлении оболочки информацией о текущем рабочем каталоге. Это может быть полезно в обстоятельствах, когда путь (к текущему каталогу )изменяется не через cd.

$ pwd
/tmp/shell-bash.OoVntBAM
$ mkdir dir
$ cd dir
$ pwd
/tmp/shell-bash.OoVntBAM/dir

Итак, сейчас мы находимся где-то под /tmp, в каталоге с именем dir. Давайте переименуем каталог, в котором мы сейчас находимся.

$ mv../dir../new-dir

Итак, где мы сейчас?

$ pwd
/tmp/shell-bash.OoVntBAM/dir

Правда? Почему, это странно. Давайте убедимся, что оболочка знает, где мы находимся.

$ cd.
$ pwd
/tmp/shell-bash.OoVntBAM/new-dir

В скрипте cd.можно использовать для проверки наличия у пользователя доступа к текущему каталогу:

if ! cd. 2>/dev/null; then
    echo lost access to cwd >&2
    exit 1
fi

Или, наоборот, для проверки того, что текущий каталог более недоступен после какой-либо операции по отзыву доступа для текущего пользователя.

Причины потери доступа к текущему каталогу включают в себя удаление каталога или удаление кем-либо разрешений на его выполнение.


В другом примере используется cd., но с опцией -P, то есть cd -P.. Это поместит вас в «физический» каталог, если доступ к текущему каталогу осуществляется через символическую ссылку :

.
$ pwd
/tmp/shell-bash.OoVntBAM
$ mkdir dir
$ ln -s dir link-dir
$ ls -l
total 2
drwxr-xr-x  3 kk  wheel  512 May  8 00:48 dir
lrwxr-xr-x  1 kk  wheel    3 May  8 00:46 link-dir -> dir

Итак, теперь у нас есть каталог dirи символическая ссылка на этот каталог. Войдем в каталог по символической ссылке:

$ cd link-dir
$ pwd
/tmp/shell-bash.OoVntBAM/link-dir

Тогда...

$ cd -P.
$ pwd
/tmp/shell-bash.OoVntBAM/dir
6
28.04.2021, 23:15

Правильная цитата для cd..должна быть:

`..' is processed by removing the immediately previous pathname component back to a slash or the beginning of DIR.

И, да, cd.не должен менять текущий каталог, и да, это не так.
Но имя текущего каталога могло измениться:

$ mkdir thisdir
$ cd thisdir
$ cd.
$ pwd
/home/isaac/thisdir
$ mv../thisdir../xxxx
$ cd.
$ pwd
/home/isaac/xxxx

Либо текущий каталог содержит символическую ссылку, либо имя физического каталога изменилось.

$ cd ~/ttt
$ pwd
/home/isaac/ttt
$ cd -P.
$ pwd
/home/isaac/me/init/basicdirs.d/ttt

Итак, cd.используется, как и любой другой cd DIR, для замены pwdна DIR. Может показаться, что это один и тот же каталог, но, даже будучи одним и тем же каталогом, DIR может иметь другое имя или путь.

0
28.04.2021, 23:15

Теги

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