ln: создадим симлинк, используя другую симлинк

Вероятно, это не лучший вариант, но вы можете использовать команду find , чтобы проверить, пуста ли папка:

find "foo*" -type f -exec mv {} ~/bar/ \;
5
08.10.2018, 17:50
2 ответа

-Lработает только с жесткими ссылками; как , указанный в POSIX:

If the -s option is specified, the -L and -P options shall be silently ignored.

Если у вас есть readlink, вы можете использовать:

ln -s -- "$(readlink symlink1)" symlink4

Если ваш readlinkподдерживает параметр -f, вы можете использовать его для полной канонизации цели (, т. е. разрешить все символические ссылки в пути цели, если целевая символическая ссылка включает другие символические ссылки ).

10
27.01.2020, 20:32

Вы можете использовать cp -Pдля создания копии символической ссылки:

cp -P symlink2 symlink3

(предполагая, что symlink3еще не существует как каталог или символическая ссылка на каталог, см. вариант -Tс GNU cpдля этих случаев ).

Имейте в виду, что если цель символической ссылки является относительной, приведенное выше может привести к неработающей ссылке, если копия находится не в том же каталоге, что и оригинал.

С zsh,

ln -s -- symlink2(:P) symlink3

Будет создано symlink3в качестве символической ссылки на полный канонический (символическая ссылка -свободный )путь symlink2, подобно ln -s -- "$(readlink -f symlink2)" symlink3, но более надежный в том смысле, что он все равно будет работать правильно, если этот путь закончится в символах новой строки.

То же предостережение, что и выше, и тот же обходной путь с GNU ln.

5
27.01.2020, 20:32

Теги

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