고려하다:
$ ssh fo<tab>
foo fool football
이러한 값을 반복하려면 for 루프를 어떻게 작성해야 합니까?
#!/usr/bin/env bash
for SERVER in $(ssh fo<MAGIC HERE>) ; do echo $SERVER ; done
목록은 주기적으로 변경될 수 있으므로 값을 하드코딩하는 것은 옵션이 아닙니다. SSH의 특정 경우에는 호스트의 SSH 구성 파일과 일치하도록 grep할 수 있다는 것을 알고 있습니다. 그러나 다음과 같은 다른 완료 상황이 발생합니다.
$ git che<tab>
checkout cherry cherry-pick
답변은 이러한 다른 임시 완료에도 유용해야 합니다.
답변1
캠프겐아래와 같이 한 단어만 사용할 수 있습니다.
compgen -c git
귀하의 사례에 맞는 맞춤형 솔루션은 다음과 같습니다.
먼저 bash-completion 스크립트를 얻은 다음 설정해야 합니다.비교하다_bash_completion
*vars는 이 사용 사례를 충족한 다음 프로그래밍 방식으로 기본 함수 완료를 트리거합니다.기능COMPREPLY
그런 다음 결과는 배열 로 수집됩니다 (예는 다음에서 가져옴).여기):
# load bash-completion helper functions
source /usr/share/bash-completion/bash_completion
# array of words in command line
COMP_WORDS=(git c)
# index of the word containing cursor position
COMP_CWORD=1
# command line
COMP_LINE='git c'
# index of cursor position
COMP_POINT=${#COMP_LINE}
# execute completion function
_xfunc git _git
# print completions to stdout
printf '%s\n' "${COMPREPLY[@]}"
추신: 명령 완료 중에 호출되는 정확한 함수를 확인하려면 다음을 사용하십시오.complete -p <command>
산출:
checkout
cherry
cherry-pick
clean
clone
column
commit
config
credential
이 콘텐츠의 전체 개요를 보려면 소유자 게시물을 방문하세요.여기