Intereting Posts
Pluggin кучу жестких дисков USB в систему Linux? Почему нет иконки для некоторых файлов в File Manager (Xfce)? ssh: определить группу серверов Установите daemon для запуска при загрузке с помощью systemd Как заменить один символ другим во всех именах файлов текущих каталогов? Пользовательская раскладка клавиатуры сбрасывается до значения по умолчанию после ожидания или перезагрузки Как установить эти разрешения? Определите соединение с общим доступом на основе имени пользователя Отрицательный взгляд на несколько строк Почему преобразование Imagemagick изменяет метаданные TIFF? Демон OpenVPN не использует файл конфигурации Простой эмулятор терминала (с возможностью записи) с меткой-копией с «универсальным» $ TERM Какой процесс / демон заменяет netplugd в Centos 7.1? Sed: заменить одну / две цифры (-ы) Как запустить команду glob ZSH рекурсивно для подкаталогов

Как работать с символическими ссылками на каталоги

Я экспериментирую с символическими ссылками, и я сталкиваюсь с несколькими проблемами. Во-первых, после того, как после символической ссылки на каталог, чтобы отобразить фактический рабочий каталог вместо каталога в отношении символической ссылки (например, при использовании pwd ). Во-вторых, как «создать резервную копию» в фактический каталог в файловой системе, а не в символическую ссылку.

От man pwd на моем Ubuntu:

ваша оболочка может иметь свою собственную версию pwd

Я использую bash . Простая команда pwd дает мне путь относительно символической ссылки; yet /bin/pwd возвращает фактический путь. Команда cd также встроена в bash.

Другими словами: это оболочка специфическая.

EDIT: комментарий thrig (см. Ниже) кажется лучшей альтернативой всему, что я написал ниже этой строки.

Для «резервного копирования» в фактический каталог попробуйте cd "$(/bin/pwd)/.." или cd "$(/bin/pwd)"; cd .. cd "$(/bin/pwd)"; cd .. Вторая форма может быть изменена, чтобы создать псевдоним для cd , я думаю:

 alias cd='cd "$(/bin/pwd)"; cd' 

Аналогичным образом вы можете избавиться от bash pwd builtin:

 alias pwd=`/bin/pwd` 

Вы хотите pwd -P .

От man pwd на CentOS 6:

  -L, --logical use PWD from environment, even if it contains symlinks -P, --physical avoid all symlinks 

Или, с man-страницы BSD pwd и немного более полезно сформулировать:

  -L Display the logical current working directory. -P Display the physical current working directory (all symbolic links resolved). 

Я не уверен на 100%, что вы подразумеваете под «резервным копированием», но предполагая, что вы имеете в виду «Изменить каталоги в родительском каталоге текущего каталога», вы можете использовать:

 cd "$(dirname "$(pwd -P)")" 

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

Кроме того, вы можете использовать cd "$(pwd -P)" чтобы перейти к физическому пути текущего логического каталога, а затем использовать cd .. по желанию.