Bashのマニュアルページに「中括弧拡張」(大文字と小文字を区別しない)という文字列を含むすべての行を表示するコマンドはどれですか?
man -wK . | grep "[Bb]race [Ee]xpansion"
を試しました。一連の「改行できませんでした」エラーが発生しました。
次に、 manページ内にハイフンを含むパターンを検索する方法 のクエリを読んだ後、コマンドman -s1 -Kw --regex 'brace expansion'
を使用して検索しようとしました。
私は戻りました:
/usr/share/man/man1/bash.1.gz
cat
を使用してファイルを印刷しようとしましたが、すべての奇妙な記号が表示されました。
コマンドman bash
を実行すると、システムのデフォルトのポケットベル(通常はless
)でドキュメントを開きます。特定のパターンに一致する行にスキップするには、/<pattern>
と入力します。たとえば、マニュアルページを入力した直後に次のように入力します。
/brace expansion
その後、自動的に最初のオカレンスに移動します。そこからn
を押すと、後のオカレンスに移動できます。
また、.gz
ファイル拡張子は、ファイルがgzipを使用して圧縮されることを意味します。このファイルを直接読み取ることはできません。
検索の結果(システム上のmanページのソースファイル)をローカルモードでmanに返して、各ページを読み取ることができます。
man -wK --regex 'Brace Expansion' | sort -u | xargs man -l -P cat | grep -inF 'Brace Expansion'
Manコマンド検索に使用される正規表現は、デフォルトでは大文字と小文字を区別しません。検索結果のリストが並べ替えられ、重複があれば削除されます。次に、xargs
を使用してmanに返されます。 cat
ページャーを使用すると、処理された各マニュアルページを標準出力に印刷できます。その時点で、データはgrepが操作できるプレーンテキストのストリームです。
man
の-l
オプションは、ローカルモードをアクティブにするために使用されます。ローカルモードでは、システムのMANPATHを解析する代わりに、ファイルを直接解析します。
man
の-P cat
オプションは、ポケットベルをcat
に設定します。これは、処理されたマニュアルページがcat
を使用して表示されることを意味します。
grep
の-i
オプションは、大文字と小文字を区別しない検索に使用されます。 -n
オプションは、行番号を出力します(便宜上追加されただけです)。 -F
オプションは、パターンが固定文字列であることを指定します。
次のコマンドで元の質問をすると、bashのmanページに「中括弧の展開」を含むすべての行が表示されます。
for page in $( man -k bash | awk '{print $1}' ); do
zgrep -i -n 'brace expansion' $(man -w $page) /dev/null
done
最初に、説明の「bash」に対応するマニュアルページのリストを取得し、その後、取得したリストを繰り返し処理して、一致する「中括弧拡張」文字列を検索します。 zgrep(1)は、ファイルをサイレントに解凍します;)