부분 하위 문자열에서 BASH 별칭 완료 방법을 몇 가지 방법으로 얻을 수 있습니까?

StackOverflow https://stackoverflow.com/questions/509427

문제

의문: 질문이 있습니다 이 이미 발행 된이 배쉬 완료 질문으로 대답하지 않은 것 같습니다 스택 오버 플로우에. 문제는 부분 하위 문자열에서 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.

아마도 당신은 사용자 정의 bash_completion 설정으로 원하는 것을 달성 할 수 있지만, 나는 당신을 위해 일을하지 않을 것입니다. :-)

내가 무슨 말을하는지 모른다면 여기 그리고 여기 자세한 내용은. 그건 그렇고, 나는 이것을 매우 짜증나게 할 것입니다

나는 "집"을 게으르게 입력 한 다음 내가 원하는 특정 별칭이 나타날 때까지 {{tab}}을 반복적으로 눌러 {{enter}}를 눌러 실행합니다.

"완료"의 m $ 스타일이라고 생각합니다 (DOS/Windows 환경에오고 있습니까?)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top