С помощью 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
некоторые клавиши или последовательности клавиш. Чтобы это применимо bash
только к (а не к другим приложениям, таким как gdb
использование readline), вы можете использовать bind
встроенную команду bash, которая является bash
API для настройки readline
, например, в вашем ~/.bashrc
:
bind '"^^": "--help|grep "'
Или добавьте в свой ~/.inputrc
(файл конфигурации readline):
$if Bash
"^^": "--help|grep "
$endif
(существуют другие оболочки, подобные rc
или es
использующие readline, и где такое связывание может иметь смысл, но AFAICT не устанавливает rl_readline_name
переменную перед вызовом, readline
поэтому вы не сможете добавить некоторые $if
операторы для них (они будут отображаться как other
все приложения которые используют readline, не называя это своим именем приложения)).
Обратите внимание, что вам нужно ввести второй ^
в течение полсекунды (по умолчанию) после первого, чтобы произошла замена.
qh () { type -all "$1" ; { "$1" --help || man "$1" ;} | egrep -i -- "$2" ;}
#, следовательно, вы могли бы: qh ls size, qh ls «что-то | другое» и т. Д. (Optionnal)type -all "$1"
также добавить информацию о $ 1: в ней говорится, что вы будете запускать псевдоним, функцию, a команда и т. д. И она выдает информацию от man «$ 1», если команда $ 1 не имеет опции «--help» (это иногда случается)