부분 하위 문자열에서 BASH 별칭 완료 방법을 몇 가지 방법으로 얻을 수 있습니까?
-
21-08-2019 - |
문제
의문: 질문이 있습니다 이 이미 발행 된이 배쉬 완료 질문으로 대답하지 않은 것 같습니다 스택 오버 플로우에. 문제는 부분 하위 문자열에서 Bash 별칭 완료 (모든 별칭)를 얻는 방법입니다.
예시:예를 들어 다음과 같은 별칭이 있다고 가정합니다.
open.alicehome="cd /usr/home/alice"
open.bakerhome="cd /usr/home/baker"
open.charliehome="cd /usr/home/charlie"
gohomenow="shutdown -now"
두 번째 별칭을 호출하기 위해 "베이커 {{tab}}"을 게으르게 입력하고 싶습니다.
나는 "홈 {{tab}}"을 게으르게 입력하려면 키보드 (최적)로 선택할 수있는 위의 모든 별칭 목록을 얻거나 세 가지 옵션을 구별하는 명백한 부분 문자열을 입력하여 선택할 수 있습니다. (최적보다 적음).
.. 또는 ..
나는 "집"을 게으르게 입력 한 다음 내가 원하는 특정 별칭이 나타날 때까지 {{tab}}을 반복적으로 눌러 {{enter}}를 눌러 실행합니다.
창의적으로 자유롭게하십시오 :이를 수행 할 방법이 있다면, 극단적 인 전문가 해커에 의지해야하더라도 자유롭게 공유하고 구루 해커를 구현해야 할 5 살짜리 수준에 대해 자유롭게 설명하십시오. 자신에 대한 당신의 아이디어.
기존 웹 페이지 또는 RTFM에 대한 링크를 환영합니다.
해결책
지정된 하위 문자열에 대한 일치를 생성 할 수 있습니다. compgen -c -X'!*substring*'
이것을 bash autocompletion에 포함 시키려면 다음과 같은 내용을 포함하는 홈 디렉토리에 .bash_completion 파일을 만들 수 있습니다.
_comp() {
local cur
cur=${COMP_WORDS[$COMP_CWORD]}
COMPREPLY=( $( compgen -c -X '!*'$cur'*' ) )
}
complete -F _comp $nospace eval
이 일치 함수는 누르면 실행됩니다 <TAB>
논쟁에 eval
명령. Bash에서 첫 번째 명령 검색을위한 새로운 매칭 기능을 포함시키는 방법을 찾지 못했습니다. eval
위에.
그러나 나는 이것이 얼마나 유용한 지에 대해 약간 회의적입니다 ... 목록에서 원하는 경기를 선택하는 쉬운 방법은 없습니다.
다른 팁
당신이 정말로 변화하고 싶다면 bash
의 탭 동작,
# ~/.inputrc
# The default binding for [Tab] is ``complete'', which is what we're used to.
# ``menu-complete'' gives you irssi-like behavior: cycle through completions.
"\t": menu-complete
이것은 문서화되어 있습니다 gnu readline 라이브러리 # readline 유형을 당신을위한 Letting Letting.