Вы использовали -l
опцию:
Переходит по символическим ссылкам, если они указывают на каталоги, как если бы они были каталогами. Символьные ссылки, которые приведут к рекурсии, избегаются при обнаружении.
Теперь, причина, по которой оно печатает это предупреждение, не в том, что оно на самом деле повторяется. Мы можем ясно видеть, что это просто перечислило бы bbb/ccc
дерево снова.
Я предполагаю, что настоящая проблема - это проблема остановки : tree
команда не может знать, будет ли она бесконечно повторяться, и поэтому она должна прекратить уже, когда обнаруживает символическую ссылку на каталог, который она уже посетила, даже если следует за этим каталогом. будет просто напечатать поддерево и не повторять.
Даже если вы можете остановить рано или после заранее определенного числа рекурсий, все это делается для того, чтобы не использовать бесконечные объемы памяти. По крайней мере, это моя интерпретация.
Соответствующий код здесь, кстати. Если номер инода каталога, на который указывает символическая ссылка, найден в хеш-таблице (та, которая заполнена символами saveino
и findino
), он просто пропустит ее.