Z zsh
użyłbyś globalnego aliasu:
$ 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)
Dzięki bash
możesz być w stanie użyć rozszerzenia historii, które dzieje się wystarczająco wcześnie w analizie składni powłoki, aby mogło działać przy podstawianiu potoku:
Poddaj historię tekstem, który chcesz zastąpić, i znakiem specjalnym, którego w innym przypadku raczej nie użyjesz (tak jak £
tutaj na mojej klawiaturze):
$ --help $(: £)|grep
bash: --help: command not found
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.
Następnie użyj rozszerzenia historii, aby je odzyskać:
$ 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
Lub możesz readline
rozwinąć --help|grep
klawisz po naciśnięciu klawisza lub sekwencji klawiszy. Aby to dotyczyło bash
tylko (a nie innych aplikacji takich jak gdb
readline), możesz użyć bind
wbudowanej komendy bash, która jest bash
interfejsem API do konfiguracji readline
, na przykład w ~/.bashrc
:
bind '"^^": "--help|grep "'
Lub dodaj do swojego ~/.inputrc
(pliku konfiguracyjnego readline):
$if Bash
"^^": "--help|grep "
$endif
(istnieją inne powłoki, takie jak rc
lub es
wykorzystujące readline, i gdzie wykonanie tego powiązania może mieć sens, ale AFAICT, nie ustawiają rl_readline_name
zmiennej przed wywołaniem, readline
więc nie będzie można dodawać $if
dla nich instrukcji (będą other
wyglądać jak wszystkie aplikacje) które używają readline bez podawania nazwy aplikacji)).
Pamiętaj, że musisz wprowadzić drugi ^
w ciągu pół sekundy (domyślnie) po pierwszym, aby nastąpiła zamiana.
Możesz do tego użyć funkcji bash:
Umieść w swoim ~ / .bashrc:
Po zapisaniu
bashrc
zróbsource ~/.bashrc
to można zrobić:źródło
qh () { type -all "$1" ; { "$1" --help || man "$1" ;} | egrep -i -- "$2" ;}
Zmieniłbym to na: # stąd możesz: qh ls size, qh ls "coś | innego" itd. (Optionnal)type -all "$1"
również dodaje informacje o 1 $: mówi, czy będziesz uruchamiał alias, funkcję, a polecenie itp. I przekazuje informacje od człowieka „$ 1”, jeśli polecenie $ 1 nie ma opcji „--help” (zdarza się to czasami)-a
, ale nic nie mówi o-l
lub-all
, ale funkcja działa.Możesz użyć powiązań readline:
dodaj linię jak
do twojego ~ / .inputrc
Następnie naciśnij ^ X ^ R w swoim terminie, a wiązanie zostanie aktywowane.
Kluczowanie
ls ^^
spowoduje terazls --help | grep
.źródło
Używanie
less
do przeglądania komunikatu pomocyPrzydatne może być sprawdzenie otaczającego kontekstu wierszy pasujących do zapytania.
Składnia wywołania tej
bash
funkcji jest podobna do funkcjiqh
w odpowiedzi @ tgwtdt, przy czym pierwszym argumentem jest polecenie do sprawdzenia, a drugim argumentem jest wyszukiwane hasło. Na przykład:Spowoduje to otwarcie komunikatu pełnej pomocy
less
, wyróżnienie każdego wystąpienia wyszukiwanego terminu i przewinięcie do pierwszego wystąpienia wyszukiwanego terminu. Następnie możesz nacisnąć przycisk,n
aby przewinąć do przodu do następnego wiersza zawierającego wyszukiwane hasło,n
ponownie dla następnego i tak dalej. Aby przewinąć z powrotem do poprzedniego wystąpienia, naciśnijN
. UżyjHome
,End
,Page Up
,Page Down
,Up Arrow
, aDown Arrow
klucze do ogólnej nawigacji. Naciśnijq
lub,Q
aby wyjśćless
i powrócić do wiersza poleceń.źródło
Podobało mi się rozwiązanie @tgwtdt, więc trochę go ulepszyłem.
Robi to samo, ale trochę zajmuje się błędami, a także próbuje przetwarzać wbudowane.
qh używa () zamiast {}, więc qh1 () i out są lokalne (w podpowłoce).
źródło