1

Как я могу создать команду (или псевдоним), чтобы перейти в каталог, который содержит целевой файл символической ссылки. Например, если у меня есть символическая ссылка

symFile@ -> /Users/zhermes/some/dir/someFile

Я хотел бы быть в состоянии выполнить <command> symFile и он мне cd - диск /Users/zhermes/some/dir/

1 ответ1

1

Следующая функция проверяет, существует ли символическая ссылка и cd в ее родительский каталог. Конечно, это также работает с обычными файлами. Это может быть умнее с ошибками readlink или cd , но это только начало.

GNU/Linux:

В GNU/Linux вы можете использовать readlink -f:

cdln() { [[ -f $1 ]] && cd "$(dirname "$(readlink -f "$1")")" || echo "No such file: $1" }

BSD / OS X:

Следующее должно работать на Unix / OS X, где нет опции -f для readlink . Конечно, это означает, что он не будет следовать вложенным символическим ссылкам.

cdln() { [[ -f $1 ]] && cd "$(dirname "$(readlink "$1")")" || echo "No such file: $1" }

В OS X вы можете установить coreutils с Homebrew и использовать вместо него greadlink -f .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .