использовать xkblayout -состояние
$ xkblayout-state print "Current layout: %s(%e)"
Current layout: us(us)
Действие 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
Правильная цитата для 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 может иметь другое имя или путь.