2015-07-13

pdfgrepを使って、pdf形式のzshマニュアルを簡単に検索する

はじめ


Terminalで「man $name」 を見る時には、zshスクリプトを用いて、pdf形式に変換して、閲覧と保存しています。なお、そのスクリプトの要点は次の2行です;
  • man -t ${name} | pstopdf -i -o ${name}.pdf  
  • open $name.pdf
このような手間を掛けるのは、次のようなメリットがあるからです;
  1. Previewでコメントを付けて保存すれば、見返すのが効率的になる。
  2. 過去に閲覧したマニュアルが一瞥できる。

しかし、これらのpdfを検索をするのに、「grep」や「mdfind」は不適切でした。インターネットで調べると、「pdfgrep」が良いらしいです。そこで「brew info pdf  」をすると「pdfgrep」がありました。
% brew search pdf   
cups-pdf        pdf-redact-tools    pdf2svg            pdftohtml
diff-pdf        pdf-tools        pdfcrack        qpdf
djvu2pdf        pdf2htmlex        pdfgrep            svg2pdf
mupdf-tools        pdf2json        pdflib-lite
以下略...

具体例 

図1

Figure 1. pdfgrep on zshall.pdf.





















図1では、検索のターゲット・ファイルとして 「zshall.pdf」としています。4つのケースを示しています;
  1. pdfgrep -inH ' f ' zshall.pdf 
    • ノイズが多い。
  2. pdfgrep -inH '          f ' zshall.pdf
    • ノイズ消失!
  3. pdfgrep -inH '          = ' zshall.pdf
  4. pdfgrep -inH '          @ ' zshall.pdf
表示が素敵なのに驚愕した;
  • ファイル(magenta):ページ番号:(green)が全ての行に明示されていて、
  • 検索語(red)も視認性がいい、
  • 検索結果行(white)も常に1行に収まっている。
これだけでも「zshマニュアル」 を気楽に調べることが出来てうれしい。


 図2

Figure 2. search printf for *.pdf
  • コマンド: pdfgrep -inH printf *.pdf 
    • 検索対象をzshに限定しなくても良いのか。
  • 一部にエラーが出ているが、検索内容には問題はない;
    • poppler/error: Illegal URI-type link
    • ZshWiki_array.pdf: browser Firefox:: html -> pdf.
    • エラー出力は別ファイルに纏めた方がよいだろう。
  • (zshall.pdf: 7) = (zshbuiltin.pdf: 2)+(zshcontrib.pdf: 5)


これから


冒頭で紹介したスクリプト(man2pdf)はマニュアルの管理もする。これにpdfgrepを組み込みたい。


____
この記事の履歴
  1. 開始 2015-07-13(月) 00:44:41




注目の投稿

Terminalでの、なんちゃってViモドキ

近頃、ようやくKarabiner-Elementsに慣れてきたので、 Terminalで動作する「擬似Vi-Mode」を作って見たので、ご紹介します。 『概要』 「擬似Vi-Mode」の所以は、方向キー「←↓↑→」を通常の「hjkl」ではなくて「jkil」としました。これ...