man
страница для find
дает:
-prune True; if the file is a directory, do not descend into it. If
-depth is given, false; no effect. Because -delete implies
-depth, you cannot usefully use -prune and -delete together.
Таким образом в первом примере это не так, чтобы -path ./.git -prune
неверно и поэтому действие по умолчанию (-print
) не был бы назван, следовательно строка печатается.
не проблема LS
. Это то, как работают симличины. ..
Получает вас в родитель текущего каталога, каталог не знает, что вы добрались до него через SymLink. Оболочка должна вмешиваться, чтобы предотвратить это поведение. Для встроенного CD ..
.
, есть специальное обращение, которое не просто звонить ChDIR
, но запоминает полный путь к каталогу и пытается выяснить, что вы хотите. LS
, однако, не является встроенным. Оболочка должна измениться ..
к другому пути, прежде чем передавать его на LS
, если вы хотите получить то, что вы ожидаете. ZSH
Вариант Chase_dots
поможет вам с этим.
Вообще говоря, SymLinks к каталогам являются грязным бизнесом. Для критических и полупостоянных приложений, скорее используйте Mount --bind
.
Так как вы пометили свой вопрос с ZSH
Я предполагаю, что мы говорим об этой оболочке.
, скорее всего, вы настроили (прямо или косвенно с некоторым внешним сценарием, как OH-My-ZSH
) Переменные Chase_Links
и / или Chase_dots
. Чтобы подтвердить, что запустить SETOPT | Greep -i Chase
и посмотрите, перечислены ли они. Если они, просто unset их:
unsetopt CHASE_DOTS
unsetopt CHASE_LINKS