Kendimi <command> --help | grep <feature>her gün çok sık yaparken buluyorum . Gibi bir şey yapmak mümkün oldu acaba ^^bu genişletir "--help | grep"ve daha sonra bunu:
ls ^^ size
Bu aşağıdakileri gerçekleştirir:
ls --help | grep size
Kendimi <command> --help | grep <feature>her gün çok sık yaparken buluyorum . Gibi bir şey yapmak mümkün oldu acaba ^^bu genişletir "--help | grep"ve daha sonra bunu:
ls ^^ size
Bu aşağıdakileri gerçekleştirir:
ls --help | grep size
Yanıtlar:
İle zsh, bir kullanırsınız küresel takma:
$ 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)
İle bash, kabuk sözdizimi ayrıştırmasında bir borunun değiştirilmesinde çalışabileceği kadar erken gerçekleşen geçmiş genişletmeyi kullanabilirsiniz :
Tarihi, yerine koymak istediğiniz bir metinle ve başka türlü kullanmanız mümkün olmayan özel bir karakterle ( £burada olduğu gibi klavyemde olur) kullanın:
$ --help $(: £)|grep
bash: --help: command not found
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.
Sonra bunu almak için geçmiş genişletmeyi kullanarak:
$ 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
Ya da bir tuşa veya tuş dizisine bastığınızda readlinegenişleyebilirdiniz --help|grep. Bunun bashyalnızca (ve gdbreadline kullanımı gibi diğer uygulamalara ) uygulanmaması için, yapılandırmak için API'sı bindolan bash yerleşik komutunu kullanabilirsiniz, örneğin :bashreadline~/.bashrc
bind '"^^": "--help|grep "'
Veya ~/.inputrc(readline'ın yapılandırma dosyasına) ekleyin :
$if Bash
"^^": "--help|grep "
$endif
( readline kullanan rcya esda readline kullanan başka kabuklar da vardır ve bu bağlamayı yapmanın AFAICT'den başka bir anlamı olabilir, ancak çağrılmadan rl_readline_nameönce değişkeni ayarlamazlar, readlineböylece $ifonlar için bazı ifadeler ekleyemezsiniz ( othertüm uygulamalar gibi gösterecektir) uygulama adını söylemeden readline kullanan)).
Değişikliğin gerçekleşmesi için ikincisini ^ilkinden yarım saniye sonra (varsayılan olarak) girmeniz gerektiğini unutmayın .
Bunun için bir bash işlevi kullanabilirsiniz:
Aşağıdakileri ~ / .bashrc dosyasına koyun:
qh() {
type -all "$1" ; { man "$1" || "$1" --help ;} | egrep -i -- "$2"
}
Yaptığınız bashrc işi kaydettiğinizde source ~/.bashrcşunları yapabilirsiniz:
$ 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
qh () { type -all "$1" ; { "$1" --help || man "$1" ;} | egrep -i -- "$2" ;} # dolayısıyla şunları yapabilirsiniz: qh ls boyutu, qh ls "bir şey | başka" vb. (Optionnal) type -all "$1"ayrıca 1 $ hakkında bilgi ekler: bir takma ad, bir işlev, bir Eğer $ 1 komutu "--help" (bu bazen olur) seçeneğine sahip değilse "$ 1" adamından bilgi verir (bu bazen olur)
-a, ama -lya da hakkında bir şey söylemiyor -all, ancak işlev çalışıyor.
Readline bağlamaları kullanabilirsiniz:
gibi bir çizgi ekle
"^^": "--help | grep "
~ / .inputrc'nize
Ardından teriminizde ^ X ^ R tuşuna bastığınızda ciltleme etkinleştirilir.
Anahtarlama ls ^^şimdi ile sonuçlanacaktır ls --help | grep.
lessYardım mesajını görüntülemek için kullanmaArama sorgunuzla eşleşen satırların çevreleyen içeriğini görmek yararlı olabilir.
hh () { "${1}" --help | less -p "${2}" ; }
Bu bashişlevi çağıracak sözdizimi qh@ tgwtdt'in yanıtındaki işleve benzer , ilk argüman incelenecek komuttur ve ikinci argüman arama terimi olur. Örneğin:
hh ls size
hh ls "symbolic link"
Bu, yardım mesajının tamamını açar, lessarama teriminin her örneğini vurgular ve arama teriminin ilk örneğine geçer. Ardından n, arama terimini içeren bir sonraki satıra, bir sonraki adım için ntekrar ilerlemek için düğmesine basabilirsiniz . Önceki bir örneğe geri gitmek için tuşuna basın N. Kullanım Home, End, Page Up, Page Down, Up Arrow, ve Down Arrowgenel navigasyon için tuşları. Çıkmak ve komut satırına dönmek için qveya düğmesine basın .Qless
@Tgwtdt tarafından çözümü beğendim, bu yüzden biraz geliştirdim.
Bu aynı şeyi yapar, ancak hataları işlemek için biraz yapar ve yerleşik işlemleri işlemeye çalışır.
qh, {} yerine () kullanır, bu nedenle qh1 () ve out yereldir (alt kabukta).
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"
)