나는 <command> --help | grep <feature>
매일 아주 많은 일을 하고 있는 나 자신을 발견합니다. 나는 이와 같은 것을 ^^
확장 할 수 있는지 궁금합니다 "--help | grep"
.
ls ^^ size
그러면 다음이 수행됩니다.
ls --help | grep size
답변1
이를 달성하기 위해 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
답변2
의 경우 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
확장 할 수 있습니다. readline 사용 과 같은 다른 애플리케이션이 아닌 --help|grep
작업만 수행하려면 구성 API 인 bash 내장 명령을 사용할 수 있습니다 . 예를 들어 다음과 같습니다 .bash
gdb
bind
bash
readline
~/.bashrc
bind '"^^": "--help|grep "'
또는 ~/.inputrc
(readline의 구성 파일)에 다음을 추가하세요:
$if Bash
"^^": "--help|grep "
$endif
rc
(비슷 하거나 readline을 사용하는 다른 쉘이 있으며 es
바인딩을 수행할 위치가 합리적일 수 있지만 내가 아는 한 그들은 rl_readline_name
호출하기 전에 변수를 설정하지 않으므로 일부 명령문을 추가 readline
할 수 없습니다. $if
( other
모든 응용 프로그램이 동일하게 표시됩니다. 응용 프로그램 이름을 알려주지 않고 readline을 사용합니다)).
^
교체가 이루어지려면 첫 번째 값(기본값)의 0.5초 이내에 두 번째 값을 입력 해야 합니다 .
답변3
readline 바인딩을 사용할 수 있습니다:
다음과 같은 줄을 추가하십시오.
"^^": "--help | grep "
~/.inputrc에
그런 다음 용어에 ^X ^R을 누르면 바인딩이 활성화됩니다.
이제 입력 ls ^^
하면 ls --help | grep
.
답변4
@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"
)