Чтобы установить разрешения x
для «других» в /dir1/dir2/.../target
и все промежуточные каталоги (, кроме корневого каталога ), и разрешения r
для каталога target
в конце пути:
dir=/dir1/dir2/dir3/dir4/target
chmod o+r "$dir"
while [ -n "$dir" ]; do
chmod o+x "$dir"
dir=${dir%/*}
done
Для заданного пути к каталогу будут выполнены команды
chmod o+r /dir1/dir2/dir3/dir4/target
chmod o+x /dir1/dir2/dir3/dir4/target
chmod o+x /dir1/dir2/dir3/dir4
chmod o+x /dir1/dir2/dir3
chmod o+x /dir1/dir2
chmod o+x /dir1
Значение переменных dir
изменяется на каждой итерации цикла путем удаления последнего /
и всего, что следует за ним.
Вы не можете, — или, по крайней мере, не без редактирования кода завершения fzf
— потому что завершение fzf
явно вызывает встроенный -Zsh в завершении, когда он терпит неудачу. Предоставленное завершениеfzf
просто не настроено для обработки всех случаев. Вот почему в какой-то момент он должен вернуться к построенному -.
Также обратите внимание, что compinit
не требуется для получения дополнений в Zsh. Это просто необходимо для активации новой системы завершения Zsh . Если вы не позвоните по номеру compinit
, вместо этого вы получите устаревшую систему завершения Zsh.