_path_files
의 -F 옵션 형식은 무엇입니까 compadd
?
여러 디렉토리를 다음으로 전달합니다 _path_files
.
_path_files -W "($base_directories)" -/
그러나 나는 이 특정 명령에 대해 일부 디렉토리 트리를 완성하고 싶지 않습니다.
내가 찾을 수 있는 문서에는 like 와 같은 옵션을 _path_files
허용한다고 나와 있지만 이를 전달하는 형식을 찾을 수 없습니다.-F
compadd
고생해도 결과가 없습니다.
예를 들어 나는 다음과 같은 것을 시도했습니다.
_path_files -W "($base_directories)" -/ -F shared; # shared still shows up
_path_files -W "($base_directories)" -/ -F "(shared)"; # barfs on that guy
답변1
shared
디렉토리 트리의 루트를 무시하려면 을 무시 해야 합니다. 그러나 계층 구조의 더 깊은 곳을 $base_directories
무시하려면 패턴을 배열에 넣어야 합니다. 인용.shared
-F "(shared **shared)"
local -a ignored base_directories
base_directories=(…)
ignored=(shared '*/shared')
_path_files -W base_directories -/ -F ignored
_cvs
의 표준 분포에 예가 있습니다 _darcs
.
그래도 도움이 되지 않으면 문제가 되는 코드를 추가 set -x
하고 해결하여 무슨 일이 일어나고 있는지 조사해 보십시오 . 또는 현재 함수가 지속되는 동안에만 옵션을 변경하는 경우도 있습니다 .set +x
setopt local_options xtrace
set -x