iT邦幫忙

DAY 18
3

現代環境下的 Linux 裡的新工具系列 第 15

用指令查字典:dict;結果架dictd的服務

凍仁分享的 文字界面的字典 sdcv 這個指令很實用,我也再錦上添花加碼有關指令查字典的工具。
DICT 從縮寫所代表的全名的字面意思是字典網路協定,可以藉由網路的請求獲得查詢結果的機制。如果就命令列模式的字典查詢,除了 sdcv 之外,dict是另個可用的指令。

安裝使用
pacman -S dictd 即會安裝有 dict 的 server 及 client 的套件,來試試看:

$ dict -I
  dictd 1.12.0/rf on Linux 3.0.0-14-server
  On pan.alephnull.com: up 10+10:16:43, 1897319 forks (7580.8/hour)

  Database      Headwords         Index          Data  Uncompressed
  gcide              203645       3859 kB         12 MB         38 MB
  wn                 147311       3002 kB       9247 kB         29 MB
  moby-thes           30263        528 kB         10 MB         28 MB
...

dict 預設查詢的主機是 dict.org 其 IP 就是 pan.alephnull.com,顯示了相關系統的情況,並列出供查詢的資料庫,或說字典有哪些。

若用 dict delicious 查該字,會出現:

3 definitions found

From The Collaborative International Dictionary of English v.0.48 [gcide]:

  Delicious \De*li"cious\, a. [OF. delicieus, F. d['e]licieux, L.
     deliciosus, fr. deliciae delight, fr. delicere to allure. See
     {Delight}.]
     1. Affording exquisite pleasure; delightful; most sweet or
        grateful to the senses, especially to the taste; charming.
        [1913 Webster]
...

等三種資料庫或說字典的來源,落落長,如果只要指定 WordNet 提供的解釋,改輸入
$ dict -d wn delicious
1 definition found

From WordNet (r) 3.0 (2006) [wn]:

  delicious
      adj 1: greatly pleasing or entertaining; "a delightful
             surprise"; "the comedy was delightful"; "a delicious
             joke" [syn: {delightful}, {delicious}]
      2: extremely pleasing to the sense of taste [syn: {delectable},
         {delicious}, {luscious}, {pleasant-tasting}, {scrumptious},
         {toothsome}, {yummy}]
      n 1: variety of sweet eating apples

換不同的主機查詢
如果想要換不同的主機查詢,這個清單列出其他提供 dict 服務的名單:
DICT protocol server list
可以編輯家目錄裡的 .dictrc 的內容為 server dict.tw 後,發現 dict://dict.tw 沒有作用,而改設 server dict.uni-leipzig.de,發現提供很多種的語言:

  dictd 1.10.4/rf on Linux 2.6.24.3.pcai055
  On pcai055.informatik.uni-leipzig.de: up 7+02:44:13, 2925 forks (17.1/hour)

  Database      Headwords         Index          Data  Uncompressed
  afr-deu                3806         52 kB         50 kB        133 kB
  afr-eng                5135         72 kB         58 kB        153 kB
  bre-fra               32344        524 kB        530 kB       2002 kB
  ces-eng                 494          6 kB          5 kB         10 kB
  ckb-kmr                7858        114 kB        147 kB        384 kB
  cro-eng               79817       1790 kB       1007 kB       2821 kB
  cym-eng               12636        191 kB        111 kB        350 kB
  cze-eng                 493          6 kB          5 kB         11 kB
  dan-eng                4003         54 kB         43 kB        103 kB
  deu-eng               81622       1615 kB       1346 kB       4177 kB
  deu-fra                8174        120 kB         81 kB        216 kB
  deu-ita                4460         64 kB         38 kB         99 kB
...

試了幾個似乎找不到可以查到中文的,那就自行建立,就是在自己的主機建立自己的 dictd。

建立自己的字典站
先測試自己建個 同義字辭典。
依照這篇 Dictionary access under Linux 把dict 的服務建起來。
下載同義字辭典的檔案:
ftp://ftp.wu-wien.ac.at/pub/lib/lexica/dict.org/pre/debian/dict-moby-thesaurus\_1.0-5.tar.gz
解開後把檔案放在如下所在:

/usr/share/dictd/moby-thesaurus.dict.dz
/usr/share/dictd/moby-thesaurus.index

然後編輯 /etc/dict/dictd.conf 最後面加上這兩行:

database moby { data "/usr/share/dictd/moby-thesaurus.dict.dz"
        index "/usr/share/dictd/moby-thesaurus.index"}

啟動 dictd 的服務 systemd start dictd
編輯 ~/.dictrc 內容為 server localhost

[singernew@ithelp dict]$ dict -I
  dictd 1.12.1/rf on Linux 3.11.1-1-ARCH
  On ithelp: up 12.000, 1 fork (300.0/hour)

  Database      Headwords         Index          Data  Uncompressed
  moby      30263        528 kB         10 MB         28 MB

執行結果是成功的。

現再把中文的字典檔案抓下安裝在同目錄:
先抓下網路上提供的中文字典檔:
<ftp://ftp.tw.freebsd.org/pub/FreeBSD/ports/local-distfiles/rafan/chinese/dict-zh-1.6.tar.gz>
再重編 /etc/dict/dictd.conf 的內容為:

database moby { data "/usr/share/dictd/moby-thesaurus.dict.dz"
        index "/usr/share/dictd/moby-thesaurus.index"}
database cedict { data "/usr/share/dictd/cedict.dict.dz"
        index "/usr/share/dictd/cedict.index"}
database moecomp { data "/usr/share/dictd/moecomp.dict.dz"
        index "/usr/share/dictd/moecomp.index"}
database netterm { data "/usr/share/dictd/netterm.dict.dz"
        index "/usr/share/dictd/netterm.index"}
database pydict { data "/usr/share/dictd/pydict.dict.dz"
        index "/usr/share/dictd/pydict.index"}

再重啟動 dictd 的服務。

[singernew@ithelp dict]$ dict -I
  dictd 1.12.1/rf on Linux 3.11.1-1-ARCH
  On ithelp: up 4.000, 1 fork (900.0/hour)

  Database      Headwords         Index          Data  Uncompressed
  moby         30263        528 kB         10 MB         28 MB
  cedict       26348        203 kB        476 kB       1092 kB
  moecomp      67234       1705 kB        861 kB       2476 kB
  netterm       6454         97 kB         52 kB        121 kB
  pydict      177730       3254 kB       2662 kB       5753 kB

得知字典檔都成為服務內容了。
亂查一些字:

[singernew@ithelp dict]$ dict linux
1 definition found

From pydict data [pydict]:

  Linux
  使用於PC上的unix系統
[singernew@ithelp dict]$ dict unix
2 definitions found

From Taiwan MOE computer dictionary [moecomp]:

  UNIX
  UNIX作業系統; UNIX操作系統

From pydict data [pydict]:

  UNIX
  UNIX操作系統    ;      (INTERNET上常見的操作系統,UNIX本身非常適用於網絡操作)

也都是UTF-8的正常中文字出現。
查一些單字,同義字會出現一大堆,就不列舉。

要用字典指令,結果最後自行架個字典協定的服務。真是能夠學到東西的環境…

參考資料:
6 of the Best Free Linux Dictionary Tools
How to look up dictionary via command line on Linux
Best Dictionary Software for Linux
FreeDict Wiki!
dictd
星際譯王
The DICT Development Group


上一篇
在文字命令模式裡發送twitter的工具:ttytter
下一篇
代轉信件的 Nullmailer
系列文
現代環境下的 Linux 裡的新工具27

1 則留言

0
SunAllen
iT邦高手 1 級 ‧ 2013-10-03 21:39:55

沙發
小弟智慧不夠,有點不了解,不過感覺很炫讚讚讚

我要留言

立即登入留言