Что такое «альтернативное имя каталога» в CDPATH для команды cd?

Лучший способ просмотра изображений в вашем терминале на Mac — это iTerm +imgcat(часть его утилит оболочки ). На самом деле вы можете установить imgcatна машину с Linux, а затем подключиться к ней с помощью ssh в экземпляре iTerm, и он будет отлично отображать изображения.

13
07.08.2020, 09:03
2 ответа

Переменная не установлена ​​по умолчанию (, по крайней мере, в системах, с которыми я знаком ), но может быть установлено для использования другого каталога для поиска целевого каталога, который вы указали cd]. Вероятно, это легче проиллюстрировать на примере:

$ echo $CDPATH    ## CDPATH is not set

$ cd etc          ## fails: there is no "etc" directory here
bash: cd: etc: No such file or directory
$ CDPATH="/"      ##CDPATH is now set to /
$ cd etc          ## This now moves us to /etc
/etc

Другими словами, поведение по умолчанию для cd foo— «перейти в каталог с именем 'foo', который является подкаталогом текущего каталога или любого другого каталога, указанного в CDPATH». Когда CDPATHне установлен, cdбудет искать только в текущем каталоге, но, когда он установлен, он также будет искать совпадения в любом из каталогов, для которых вы его установили.

Двоеточие не используется с cd, оно используется для разделения каталогов, которые вы хотите установить вCDPATH:

CDPATH="/path/to/dir1:/path/to/dir2:/path/to/dirN"
25
18.03.2021, 23:14

Другие ответы объясняют основное использование CDPATH, но я думаю, что конкретный вариант использования является иллюстративным. Часто я обнаруживаю, что мне нужно многократно выполнять операцию внутри ряда подкаталогов, начиная с одного и того же корня.

cd ~/wrk
for d in */.git/hooks/; do
  ( cd "$d" && mv pre-commit pre-commit.off )
done

Подоболочка необходима для того, чтобы каждая итерация начиналась с одного и того же корня. Или это? Можем ли мы избежать повторения подоболочек здесь? Да мы можем!

cd ~/wrk &&
CDPATH=$PWD
for d in */.git/hooks; do
  cd "$d" && mv pre-commit pre-commit.off
done

Это имеет дополнительное преимущество, поскольку cd сообщает нам, где мы находимся на каждом шаге.

А как насчет альтернативных имен каталогов? Я думаю, что пример Квазимодо особенно хорош. Если .отсутствует в вашем CDPATH, то ваш CDPATH имеет приоритет. Но если вы хотите быть уверены, что каталоги прямо перед вами имеют приоритет, ваш CDPATH должен начинаться с ..

1
18.03.2021, 23:14

Теги

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