次の動作は、BSDユーティリティを使用するOS X(10.9.5)では発生しますが、GNUユーティリティを使用するLinux(Ubuntu 15.10)では発生しません。
オペレーティングシステム:
$ man -v
man, version 1.6c
Linux:
$ man --version
man 2.7.4
bash / tcshオートコンプリートで使用するために特定のプログラムでサポートされているオプションを自動的に解析するシェルスクリプトを作成しようとしています。たとえば、これは、端末から見たときの名前出力ごとのPerlの名前と要約部分です。
$ man perl | cat
NAME
perl - The Perl 5 language interpreter
SYNOPSIS
perl [ -sTtuUWX ] [ -hv ] [ -V[:configvar] ]
[ -cw ] [ -d[t][:debugger] ] [ -D[number/list] ]
[ -pna ] [ -Fpattern ] [ -l[octal] ] [ -0[octal/hexadecimal] ]
[ -Idir ] [ -m[-]module ] [ -M[-]'module...' ] [ -f ]
[ -C [number/list] ] [ -S ] [ -x[dir] ]
[ -i[extension] ]
[ [-e|-E] 'command' ] [ -- ] [ programfile ] [ argument ]...
$ man perl > /tmp/perl.out
初めて疑ったとき
$ </tmp/perl.out awk '/SYNOPSIS/ {print}'
何行も印刷されませんでした。ファイルを開いてvi
みるとこの内容がありました。一体なぜこんなに不必要に繰り返される文字と^H
文字が多いのでしょうか?
N^HNA^HAM^HME^HE
perl - The Perl 5 language interpreter
S^HSY^HYN^HNO^HOP^HPS^HSI^HIS^HS
p^Hpe^Her^Hrl^Hl [ -^H-s^HsT^HTt^Htu^HuU^HUW^HWX^HX ] [ -^H-h^Hhv^Hv ] [ -^H-V^HV[:_^Hc_^Ho_^Hn_^Hf_^Hi_^Hg_^Hv_^Ha_^Hr] ]
[ -^H-c^Hcw^Hw ] [ -^H-d^Hd[t^Ht][:_^Hd_^He_^Hb_^Hu_^Hg_^Hg_^He_^Hr] ] [ -^H-D^HD[_^Hn_^Hu_^Hm_^Hb_^He_^Hr_^H/_^Hl_^Hi_^Hs_^Ht] ]
答え1
の出力はman
プレーンテキストではありません。代わりに試してみてくださいman perl | col -b
。