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 readline
genişleyebilirdiniz --help|grep
. Bunun bash
yalnızca (ve gdb
readline kullanımı gibi diğer uygulamalara ) uygulanmaması için, yapılandırmak için API'sı bind
olan bash yerleşik komutunu kullanabilirsiniz, örneğin :bash
readline
~/.bashrc
bind '"^^": "--help|grep "'
Veya ~/.inputrc
(readline'ın yapılandırma dosyasına) ekleyin :
$if Bash
"^^": "--help|grep "
$endif
( readline kullanan rc
ya es
da 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, readline
böylece $if
onlar için bazı ifadeler ekleyemezsiniz ( other
tü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 -l
ya 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
.
less
Yardı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 bash
iş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, less
arama 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 n
tekrar 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 Arrow
genel navigasyon için tuşları. Çıkmak ve komut satırına dönmek için q
veya düğmesine basın .Q
less
@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"
)