특정 키에 따라 완성 순서로 표시되어야 하는 단어 목록이 있지만 bash는 COMPREPLY
배열에 할당된 내용을 내부적으로 정렬하는 것 같습니다. 이 상황을 피하는 방법은 무엇입니까?
예:
_comm() {
_init_completion -s -n : || return
case $prev in
-a) COMPREPLY=(zxy abcdef tyuu fgsfds)
;;
esac
}
complete -F _comm comm
이 코드를 실행하면 bash가 완료됩니다.
$ comm -a
그리고
abcdef fgsfds tyuu zxy
즉, 알파벳순으로 정렬합니다.
답변1
Bash 4.4부터 nosort
옵션을 사용할 수 있습니다. 귀하의 예에서 마지막 줄을 다음으로 변경하십시오.
complete -o nosort -F _comm comm
그리고 알파벳순으로 정렬하지 않고도 할 수 있어야 합니다.
중요: 옵션(지정된 사용 -o
)함수 앞에 와야 합니다.( -F
). 이것이 coderofsalvation의 코드가 작동하지 않는 이유입니다.