На Linux, top
на самом деле поддержки, фокусирующиеся на единственном процессе, хотя это естественно не имеет графика истории:
top -p PID
Это также доступно на Mac OS X с другим синтаксисом:
top -pid PID
При создании символьной ссылки на относительный путь это сохранит его как относительную символьную ссылку, не абсолютную как шоу в качестве примера. Это обычно - хорошая вещь. Абсолютные символьные ссылки не работают, когда файловая система смонтирована в другом месте.
Причина Ваш пример не работает, состоит в том, что это относительно родительского каталога символьной ссылки и не где ln
выполняется.
Можно сделать:
$ pwd
/home/beau
$ ln -s foo/bar.txt bar.txt
$ readlink -f /home/beau/bar.txt
/home/beau/foo/bar.txt
Или для этого вопросы:
$ cd foo
$ ln -s foo/bar.txt ../bar.txt
Важно понять что первый аргумент после ln -s
хранится как цель символьной ссылки. Это может быть любая произвольная строка (с единственными ограничениями, что это не может быть пусто и не может содержать символ NUL), но в то время, когда символьная ссылка используется и разрешается, та строка понята как относительный путь к родительскому каталогу символьной ссылки (когда это не запускается с /
).
Извините, нет. Символьные ссылки относительно местоположения, в котором находится ссылка, не местоположение Вы были при создании ссылки. Существует несколько серьезных оснований для этого поведения, большинство которых включает монтирующиеся удаленные файловые системы.
Вы могли попробовать:
ln -s `pwd`/bar.txt /home/beau/bar.txt
Но, это делает символьную ссылку на абсолютный путь. Ваш текстовый вопрос спрашивает относительный путь упоминаний...
Обычно, относительный путь - то, что Вы хотите, и что ln -s
дает Вам. Я думаю, что Вы хотите:
cd /home/beau
ln -s foo/bar.txt bar.txt
Как наиболее распространенные оболочки разворачивает пути, для создания относительной символьной ссылки, которую необходимо заключить "исходному пути в кавычки".
Кроме того, -s
средства параметра --symbolic
. ln
создает жесткие ссылки по умолчанию.
$ ln -s '../../relative_path' path
$ ls -al path
lrwxrwxrwx 1 empjustine empjustine 19 Aug 6 01:38 path -> ../../relative/path
Если вы используете более новые coreutils (я использую coreutils-8.22-11), то есть возможность:
ln --help | grep relative
может содержать произвольный текст; при последующем разрешении относительная ссылка - это -r, -относительная создавать символические ссылки относительно места расположения ссылки
Например:
$ mkdir /tmp/test
$ touch /tmp/test/to
$ ln -rs /tmp/test/to /tmp/test/from
$ ls -l /tmp/test/from
lrwxrwxrwx 1 ptr ptr 4 aug 25 17.02 /tmp/test/to -> from
Есть удобная небольшая утилита, называемая символическими ссылками
(первоначально от Марка Лордса, теперь поддерживаемая Дж. Брандтом Бакли), присутствующая во многих Linux раздачи.
Чтобы преобразовать все абсолютные символические ссылки в каталоге в относительные:
symlinks -c /path/to/directory
К сожалению, нет возможности преобразовать отдельную ссылку, вам придется сначала переместить ее в ее собственный каталог.
mkdir ../tmp
mv link-to-relativize ../tmp
symlinks ../tmp
mv ../tmp/* .
rmdir ../tmp
~
работал бы. – Joe 25.02.2017, 09:05