_path_files 및 compadd는 파일 인수를 무시합니다.

_path_files 및 compadd는 파일 인수를 무시합니다.

_path_files의 -F 옵션 형식은 무엇입니까 compadd?

여러 디렉토리를 다음으로 전달합니다 _path_files.

_path_files -W "($base_directories)" -/

그러나 나는 이 특정 명령에 대해 일부 디렉토리 트리를 완성하고 싶지 않습니다.

내가 찾을 수 있는 문서에는 like 와 같은 옵션을 _path_files허용한다고 나와 있지만 이를 전달하는 형식을 찾을 수 없습니다.-Fcompadd

고생해도 결과가 없습니다.

예를 들어 나는 다음과 같은 것을 시도했습니다.

_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 +xsetopt local_options xtraceset -x

관련 정보