как к grep сложной иерархии?

Я не полностью понимаю то, что Вы спрашиваете. Если я не знал ничего лучшего, я думаю, что Вы спрашивали, был ли способ обнаружить это в то время как посреди контакта с файлом. Я не полагаю, что это возможно.

Единственный метод, из которого я могу забеременеть, делает находку, где Вы конкретно начинаете просматривать конкретное ответвление в дереве каталогов.

Пример

$ tree 
.
`-- a
    `-- b
        |-- c
        |   `-- d
        |       `-- e -> ../../../../a/b
        `-- e -> e

5 directories, 1 file

find команда обнаружит этот цикл, но не действительно скажет Вам много об этом.

$ find -L . -mindepth 15
find: File system loop detected; `./a/b/c/d/e' is part of the same file system loop as `./a/b'.
find: `./a/b/e': Too many levels of symbolic links

Я произвольно выбрал 15 уровней, чтобы заблокировать любой вывод, отображаемый find. Можно однако отбросить тот переключатель (-mindepth) если Вы не заботитесь об отображаемом дереве каталогов. find команда все еще обнаруживает цикл и остановки:

$ find -L . 
.
./a
./a/b
./a/b/c
./a/b/c/d
find: File system loop detected; `./a/b/c/d/e' is part of the same file system loop as `./a/b'.
find: `./a/b/e': Too many levels of symbolic links

Кстати, если Вы хотите переопределить значение по умолчанию MAXSYMLINKS который является, по-видимому, 40 на Linux (более новый 3.x версии ядра), Вы видите это названные Вопросы и ответы U&L: Как Вы увеличиваете MAXSYMLINKS.

Используя команду символьных ссылок

Существует инструмент, который специалисты по обслуживанию FTP-сайта могли использовать названный symlinks который поможет выставить проблемы с инструментом долго или повисшими деревьями, которые были вызваны символьными ссылками.

В определенных случаях symlinks инструмент мог использоваться для удаления предлагаемых каналов также.

Пример

$ symlinks -srv a
lengthy:  /home/saml/tst/99159/a/b/c/d/e -> ../../../../a/b
dangling: /home/saml/tst/99159/a/b/e -> e

glibc библиотека

glibc библиотека надеется предлагать некоторые функции C вокруг этого, но я не полностью знаю их роли или как на самом деле использовать их. Таким образом, я могу только просто указать на них Вам.

Страница справочника, man symlink показывает функциональное определение для вызванной функции symlink(). Описание идет как это:

символьная ссылка () создает символьную ссылку, названную newpath, который содержит строку oldpath.

Одно из состояний ошибки, которые возвращает эта функция:

С ELOOP Слишком много символьных ссылок встретились в разрешении newpath.

Я также направлю Вас к странице справочника, man path_resolution который обсуждает, как Unix определяет пути к объектам на диске. Конкретно этот абзац.

If  the component is found and is a symbolic link (symlink), we first 
resolve this symbolic link (with the current lookup directory as starting 
lookup directory).  Upon error, that error is returned.  If the result is 
not a directory, an ENOTDIR error is returned.  If the resolution of the 
symlink is successful and returns a directory, we set the current lookup
directory to that directory, and go to the next component.  Note that the 
resolution process here involves recursion.  In order  to  protect  the 
kernel against stack overflow, and also to protect against denial of 
service, there are limits on the maximum recursion depth, and on the maximum 
number of symbolic links followed.  An ELOOP error is returned  when  the
maximum is exceeded ("Too many levels of symbolic links").

3
22.05.2014, 17:25
2 ответа
[1173205] типичное задание [1173671]awk[1173672]:
  • (на Solaris вам может понадобиться [1173673]/usr/xpg4/bin/awk[1173674] или [1173675]nawk[1173676]).
  • Хотя это также можно сделать с помощью [1173677]sed[1173678]:

    (здесь предполагается, что пути не содержат [1173679]|[1173680] символов).[1173212].

    2
    27.01.2020, 21:23
    [1173213] Вот как я бы сделал это на питоне.

    Скрипт читает из [1173681]stdin[1173682] и печатает на stdout. Он также ожидает, что входные данные будут соответствовать определённому формату. Если у вас есть строки, которые не соответствуют этому формату, вам придется настроить скрипт:

    1
    27.01.2020, 21:23

    Теги

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