私は<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秒以内に2番目の値を入力する必要があります。
答え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"
)