英辞郎をLinuxのコマンドラインで使う
書き物をしていたり翻訳していたりするときに、コマンドラインで英辞郎が使えたらいいのに、と思っていたらあっさりできたのでメモします。ぼくは少し古い第4版を持っていたのでそのデータを使っていますが、新しい版だと違うかもしれません。DebianとUbuntuで試したので、それを前提に書きます。
yikemacさんのLinux活用Tipsを参考にしました。
やること:
- Windows上で英辞郎のデータを書き出す
- データの文字コードをUTF-16からUTF-8にする
- データの置き場所をつくってコピー(/usr/share/dict/eijiro/)
- シェルスクリプトをつくる(/usr/local/bin/eiwa)
- シェルスクリプトを実行可能にする
1
Windowsにインストールした英辞郎を見るためのPDICというソフトウェアからデータを書き出します。PDICを起動して、[File]->[辞書設定<詳細>]と進んで辞書を選びます。今回は英和辞書だけあればよかったので、「Eijiro112.dic」を選択して右クリックから[辞書の変換]を選択。「変換先ファイル形式」を「PDIC1行テキスト形式」にして、「変換先辞書」は好きなところを指定。OK。できたファイルを外付けメディア等に保存してLinuxに移します。
2
Linux上でデータの文字コードをUTF-16からUTF-8に変換。nkfで文字コードを調べてみたらUTF-16でした。
$ nkf -g Eijiro112.txt
UTF16
なので、iconvで変換(iconvのほうが使い慣れているからというだけです)。
$ iconv -f UTF16 -t UTF8 Eijiro112.txt > Eijiro112_utf8.txt
3
データの置き場所をつくってコピーします。ここでは、/usr/share/dict/eijiro/におくことにします。
$ sudo mkdir /usr/share/dict/eijiro
$ sudo cp Eijiro112_utf8.txt /usr/share/dict/eijiro
4
シェルスクリプトをつくります。エディタをたちあげて次のようなかんじのスクリプトを書いて、「eiwa」とでも名づけて保存します。
#!/bin/shDICT=/usr/share/dict/eijiro/
WORD=$1
grep -Eh "^$WORD ///" $DICT/Eijiro112_utf8.txt | sed -r "s/(\/\/\/|\\\\)/\n/g" | sed -r "s/◆/ #/g" | more
辞書のデータを見ると、見出しとそれ以下が「///」で区切られ、訳が複数ある場合は「\」で区切られていることがわかるので、それを改行文字に置換。それから訳の補足説明のようなものが「◆」につづけて書かれていますが、見にくいので「 #」に置換しています。
これを次のディレクトリにコピー
$ sudo cp eiwa /usr/local/bin/
5
シェルスクリプトを実行可能にします。
$ cd /usr/local/bin/
$ sudo chmod +x eiwa
以上で英辞郎の英和辞書がコマンドラインから使えるようになりました。二語以上の見出しの場合はクオートします。grepを使っているので正規表現も使えます。このようなかんじです。
$ eiwa Mughal
Mughal
【名・形】ムガール人(の) #1526〜1857インド大半を制覇したモンゴル系のイスラム王朝の人々$ eiwa "civil service"
civil service
公務(員)、行政事務 #【略】CS
【形】<→civil-service>$ eiwa viceroy.+
viceroyalty
【名】副王[総督]の職[位・権限・任期]
viceroyship
【名】副王[総督]の職[位・権限・任期]
検索結果をmoreやlessで出すようにしておくと、分割したEmacsのペインなどでターミナルを動かしていて縦幅が狭くても見やすいです。もちろん、Emacsを使わなくてもターミナルが開いてあればいつでも使えます。