사용 가능한 시스템 글꼴을 사용하여 bash 자동 완성 기능

사용 가능한 시스템 글꼴을 사용하여 bash 자동 완성 기능

나에게는 기능이 있습니다. 사용 가능한 글꼴 이름으로 자동 완성을 어떻게 추가할 수 있나요?

예를 들어 이와 같이 입력하면 doSomethingWithFont Ubun<tab>완료됩니다 doSomethingWithFont Ubuntu\ Mono.

doSomethingWithFont () {
    echo $1
}

_completeWithFontName () {
    # ????
}

complete -F _completeWithFontName doSomethingWithFont

답변1

입력하려는 형식으로 사용 가능한 글꼴을 나열하려면 fc_list 명령을 사용해야 할 수도 있습니다.

이것이 예제 코드에 맞는 방식입니다:

    _completeWithFontName() { < <(fc-list -f "%{family}\n" | grep "^$2" | sort -u) mapfile -t COMPREPLY; }
    complete -F _completeWithFontName doSomethingWithFont

mapfile 명령을 파이프하면 안 됩니다. 대상 명령을 서브셸로 파이프하면 서브셸을 종료할 때 COMPREPLY 배열의 새 내용이 즉시 손실됩니다. <프로세스에서 리디렉션을 교체하는 것이 <(...)더 잘 작동합니다.

fc-list에 대한 인수는 -f간단한 grep 명령의 형식을 지정하여 명령줄에 입력된 첫 번째 문자와 일치하는 글꼴 이름을 선택하고 편의상 정렬합니다. 또한 -u정렬에 (유일한) 매개변수를 추가했습니다. 이 경우에는 제품군만 나열하기 때문입니다. 각 변형은 중복 항목으로 표시되므로 분류해야 합니다.

관련 정보