特定のフラグを確認するためだけに、特定のCLIツールのマニュアルページを開くことがよくあります。 man iptables
チェックする -t
国旗。
それを簡素化するツールはありますか?もちろん、Bashでmanページのコンテンツをgrepする簡単な関数を書くこともできますが、manページの構造を使用して、必要なもの(つまり、特定のフラグの説明)を正確に見つけるものを探しています。
マニュアルページで特定のフラグをクエリするためのAPI /メカニズムが見つかりません。ただし、 この単純な関数 は、私が必要としていることを正確に実行しているようです。
function manswitch () { man $1 | less -p "^ +$2" }
使用法:
manswitch iptables -t
マニュアルページャーがless
であるとすると、環境変数less
を使用して、事前に任意のコマンドをLESS
に渡すことができます。
したがって、-t
のman iptables
オプションを検索するには:
LESS='+/-t' man iptables
これは、/-t
内でman ipatbles
を実行するのと同じ効果があります。パターンを変更して、より細かく制御できます。
必要に応じて、簡単にアクセスできる関数を作成できます。
search_man () { LESS=+/"$2" man "$1" ;}
今やっている:
search_man iptables '-t'
同じ効果があります。
編集:
検索するのではなく、マニュアルページの特定のオプションに移動する場合は、LESS
と一致する正規表現を使用できます。
LESS='+/^[[:blank:]]+-t' man iptables
-t
のman iptables
オプションの説明に直接移動します。同様に関数を定義することもできます。
search_man () { LESS=+/^[[:blank:]]+"$2" man "$1" ;}
1つあります。今。この関数:
flag() {
man "$1" | grep -- "$2";
}
それはこのように動作します:
$ flag iptables -t
iptables [-t table] {-A|-C|-D} chain rule-specification
ip6tables [-t table] {-A|-C|-D} chain rule-specification
iptables [-t table] -I chain [rulenum] rule-specification
iptables [-t table] -R chain rulenum rule-specification
iptables [-t table] -D chain rulenum
iptables [-t table] -S [chain [rulenum]]
iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]
iptables [-t table] -N chain
iptables [-t table] -X [chain]
iptables [-t table] -P chain target
iptables [-t table] -E old-chain-name new-chain-name
target = -j targetname [per-target-options]
-t, --table table
This is the default table (if no -t option is passed). It
iptables -t nat -n -L
さて、最後の2行は破棄されます。
とにかく、それをあなたの.bashrc
に追加する方法を知っていますか?それとも、~/bin
よりもスクリプトとして使用したいですか?
flag() {
man "$1" | grep -A5 -- "$2";
}
$ flag iptables -t
iptables [-t table] {-A|-C|-D} chain rule-specification
ip6tables [-t table] {-A|-C|-D} chain rule-specification
iptables [-t table] -I chain [rulenum] rule-specification
iptables [-t table] -R chain rulenum rule-specification
iptables [-t table] -D chain rulenum
iptables [-t table] -S [chain [rulenum]]
iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]
iptables [-t table] -N chain
iptables [-t table] -X [chain]
iptables [-t table] -P chain target
iptables [-t table] -E old-chain-name new-chain-name
rule-specification = [matches...] [target]
match = -m matchname [per-match-options]
target = -j targetname [per-target-options]
DESCRIPTION
Iptables and ip6tables are used to set up, maintain, and inspect the tables of IPv4 and IPv6 packet filter rules in the Linux kernel. Several different tables may be defined. Each table contains a
number of built-in chains and may also contain user-defined chains.
--
-t, --table table
This option specifies the packet matching table which the command should operate on. If the kernel is configured with automatic module loading, an attempt will be made to load the appropriate
module for that table if it is not already there.
The tables are as follows:
--
This is the default table (if no -t option is passed). It contains the built-in chains INPUT (for packets destined to local sockets), FORWARD (for packets being routed through the box),
and OUTPUT (for locally-generated packets).
nat:
This table is consulted when a packet that creates a new connection is encountered. It consists of three built-ins: PREROUTING (for altering packets as soon as they come in), OUTPUT (for
altering locally-generated packets before routing), and POSTROUTING (for altering packets as they are about to go out). IPv6 NAT support is available since kernel 3.7.
--
iptables -t nat -n -L
Please note that it is often used with the -n option, in order to avoid long reverse DNS lookups. It is legal to specify the -Z (zero) option as well, in which case the chain(s) will be atom‐
ically listed and zeroed. The exact output is affected by the other arguments given. The exact rules are suppressed until you use
iptables -L -v
-S, --list-rules [chain]