나는 나 자신이 <command> --help | grep <feature>
매일 매우 자주 하는 것을 발견한다 . 나는 그런 ^^
것을 확장 할 수 있는지 궁금해하고 있었다 "--help | grep"
.
ls ^^ size
그러면 다음이 실행됩니다.
ls --help | grep size
답변
와 함께 zsh
, 당신은 사용하는 거라고 글로벌 별칭 :
$ alias -g '^^=--help|grep --color -i'
$ ls ^^ size
--block-size=SIZE scale sizes by SIZE before printing them; e.g.,
'--block-size=M' prints sizes in units of
1,048,576 bytes; see SIZE format below
-h, --human-readable with -l and/or -s, print human readable sizes
-s, --size print the allocated size of each file, in blocks
-S sort by file size, largest first
--sort=WORD sort by WORD instead of name: none (-U), size (-S),
-T, --tabsize=COLS assume tab stops at each COLS instead of 8
The SIZE argument is an integer and optional unit (example: 10K is 10*1024)
으로 bash
, 당신은 사용할 수 있습니다 히스토리 확장 은 파이프를 대체에서 작업 할 수있는 쉘 구문 분석에 충분히 일찍 일어나는 하나입니다 :
-
대체하고자하는 텍스트와 달리 사용하지 않을 특수 문자 (
£
내 키보드에있는 것처럼)로 역사를 준비 하십시오.$ --help $(: £)|grep bash: --help: command not found Usage: grep [OPTION]... PATTERN [FILE]... Try 'grep --help' for more information.
-
그런 다음 히스토리 확장을 사용하여 다음을 검색하십시오.
$ ls !?£? size ls --help $(: £)|grep size --block-size=SIZE scale sizes by SIZE before printing them; e.g., '--block-size=M' prints sizes in units of -h, --human-readable with -l and/or -s, print human readable sizes -s, --size print the allocated size of each file, in blocks -S sort by file size, largest first --sort=WORD sort by WORD instead of name: none (-U), size (-S), -T, --tabsize=COLS assume tab stops at each COLS instead of 8
또는 일부 키 또는 키 시퀀스를 누르면 readline
확장 --help|grep
될 수 있습니다 . 이를 readline 사용 bash
과 같은 다른 응용 프로그램에만 적용 하지 않으 려면 다음 과 같이 구성하는 API 인 bash builtin 명령을 gdb
사용할 수 있습니다 .bind
bash
readline
~/.bashrc
bind '"^^": "--help|grep "'
또는 ~/.inputrc
(readline의 구성 파일)에 추가하십시오 .
$if Bash
"^^": "--help|grep "
$endif
(이 같은 다른 조개 있습니다 rc
또는 es
의미하지만 AFAICT을 만들 수있는 바인딩, 그들이 설정하지 않도록하고 어디에 사용의 readline 그와 rl_readline_name
호출하기 전에 변수를 readline
일부 추가 할 수 없습니다 때문에 $if
(그들은으로 표시 할 그들을 위해 문을 other
모든 응용 프로그램과 같은 응용 프로그램 이름을 알려주지 않고 readline을 사용합니다)).
^
대체가 발생하기 위해 첫 번째 를 반 (초기) 이내에 초를 입력해야 합니다.
답변
이를 위해 bash 함수를 사용할 수 있습니다.
~ / .bashrc에 다음을 입력하십시오.
qh() {
type -all "$1" ; { man "$1" || "$1" --help ;} | egrep -i -- "$2"
}
작업을 저장하면 다음 bashrc
작업 source ~/.bashrc
을 수행 할 수 있습니다.
$ qh ls size
--block-size=SIZE scale sizes by SIZE before printing them; e.g.,
'--block-size=M' prints sizes in units of
-h, --human-readable with -l and/or -s, print human readable sizes
-s, --size print the allocated size of each file, in blocks
-S sort by file size, largest first
--sort=WORD sort by WORD instead of name: none (-U), size (-S),
-T, --tabsize=COLS assume tab stops at each COLS instead of 8
답변
readline 바인딩을 사용할 수 있습니다.
같은 줄을 추가
"^^": "--help | grep "
~ / .inputrc에
그런 다음 용어에서 ^ X ^ R을 누르면 바인딩이 활성화됩니다.
키잉 ls ^^
은 이제 결과가됩니다 ls --help | grep
.
답변
less
도움말 메시지를 보는 데 사용
검색어와 일치하는 줄의 주변 컨텍스트를 보는 것이 유용 할 수 있습니다.
hh () { "${1}" --help | less -p "${2}" ; }
이 bash
함수 를 호출하는 구문 은 qh
@tgwtdt의 답변에 있는 함수와 유사 합니다. 첫 번째 인수는 검사 할 명령이고 두 번째 인수는 검색어입니다. 예를 들면 다음과 같습니다.
hh ls size
hh ls "symbolic link"
그러면의 전체 도움말 메시지가 열리고 less
검색어의 모든 인스턴스가 강조 표시되고 검색어의 첫 번째 인스턴스로 스크롤됩니다. 그런 다음을 눌러 n
검색 용어가 포함 된 다음 행으로 n
다시 스크롤하고 다음을 다시 계속할 수 있습니다. 이전 인스턴스로 다시 스크롤하려면을 누릅니다 N
. 사용 Home
, End
, Page Up
, Page Down
, Up Arrow
, 및 Down Arrow
일반 네비게이션 키를. 를 누르 q
거나 Q
종료하려면 less
명령 줄로 돌아갑니다.
답변
@tgwtdt의 솔루션이 마음에 들었으므로 조금 향상되었습니다.
이것은 똑같은 일을하지만 약간의 오류를 처리하고 내장 처리를 시도합니다.
qh는 {} 대신 ()를 사용하므로 qh1 () 및 out은 로컬 (서브 쉘에서)입니다.
function qh () (
function qh1 () {
out="$(help "$1" 2>&1 )"
[ $? -ne 0 ] && return 1
echo "$out"
}
type -all "$1" ; { qh1 "$1" || "$1" --help 2>/dev/null || man "$1" 2>/dev/null ;} | egrep -i -- "$2"
)