"tab complete"로 표시되는 명령 목록을 파이프하는 방법은 무엇입니까?


12

bash에서 명령을 사용할 때 사용 가능한 명령을 표시하는 이중 탭 옵션이 마음에 듭니다. 일부 명령은 다른 명령보다 더 많은 일치 항목이 있습니다.

탭 완성 스크린 샷 http://img13.imageshack.us/img13/5541/picturemhy.jpg

더블 탭의 출력을 다른 곳으로 파이프 할 수있는 방법이 grep있습니까? 관련 게시물을 찾았 지만 여전히 grep에 파이프하기 위해 구현하는 방법을 모르겠습니다.


grep정규식에 어떻게 들어갈 것이라고 상상 하십니까? (y or n or g[rep])? 나는 비관적으로 들리는 것을 싫어하지만 bash 코드에 추가하지 않고도이 작업을 수행 할 수는 없습니다.
케빈

답변:


21

명령의 경우 compgen -c:

$ compgen -c bas
basename
base64
bashbug
bash
basename
base64
bashbug

이 출력을 통해 간단히 파이프 할 수 있습니다 grep.


+1 명령 ... 다음으로 흥미로운 부분은 바로 가기 키를 만드는 방법입니다.
rozcietrzewiacz

3

@ salutis의 답변에 따라 내가라는 스크립트 생성 comp및 저장 ~/bin/comp이 검색 commands' aliases, 그리고 builtins(옵션 플래그는, -cab참조 bash는 사람이 항목을 선택 두 번째 매개 변수로, 이는, 현재, 파이프 경우에 출력) grep및 검색 두 번째 매개 변수.

Usage: comp string [keyword-for-grep]

암호:

#!/bin/bash

if [ -z "$1" ]; then
    echo usage: comp string [keyword-for-grep]
    echo 
    exit
fi

if [ -z "$2" ]; then
    compgen -cab -- $1
    exit
fi

compgen -cab -- $1 | grep -i $2

개인적으로 나는 또한 역사를 history -d검색 할 때 항목을 bash찾을 수 없도록 스크립트의 쉘 기록에서 마지막 명령을 제거하는 방법을 알아내는 데 관심이 있습니다 (관련 내용 ) comp. 나도 이것을 할 수 있다는 것을 알고 HISTIGNORE있지만 리눅스는 매우 강력하므로 스크립트 파일에서도 그렇게 할 수있는 방법이 있어야합니다.


1
물론 필요에 맞게 조정할 수 있지만 시작해야합니다.
마크

-3

당신이 찾고있는 것을 찾으십시오?

예:

find / -name ec2* -executable -type f -perm -og+rx -print

사용 사례를 알고 있으면 더 자세한 명령 예제를 만들 수 있습니다.


2
즉, bash의 완성이 무엇이든간에 다시 구현할 수 있습니다. 물론, 그것은 실용적이지 않으며, 질문에 관한 것이 아닙니다.
Gilles 'SO- 악마 그만
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.