β

终端下的字典dict

codeplayer‘s blog 219 阅读

起源

最开始接触到dict是因为异想天开的在apt-cache search查找jargon file(新黑客词典),既然jargon file是词典那么我想肯定可以在字典软件中直接查询使用,没想到还真的查到了——”dict-jargon – dict package for The Jargon Lexicon”(如果想要查看jargon
file全文也可以安装jargon-text)。不过装完之后不能直接使用,原来dict-jargon只是一个dict包,想要使用还的安装dictd与dict——dict服务器与客户端。dictd在安装dict-jargon时就已经自动装好了,再把剩下的dict安装上就可以使用了。


dict

介绍

dict是字典服务协议(DICT)的一个客户端,基于TCP事务的查询/响应协议,提供了从一组自然语言词典数据库中访问词典的定义功能。分为服务器和客户端,很有趣,与xorg很像,服务器可以是本地的,也可以是互联网上的。词典数据放在特殊格式的文件内,由服务器提供服务,客户端发出查询请求。

优点

dict的优点在于终端下工作,速度快、消耗资源少、操作方便,只要打开终端就可以使用。同时字典数量也很多,尤其是还包含jargon-file,虽然中文字典比较少。

字典包

使用apt-cache search可以查询到很多基于dict的词典包,包含很多种语言,除了上面介绍的dict-jargon外,还有两个英汉字典——xdict与Stardic。除了这些之外,我还安装了两本英英词典foldoc——The Free On-line Dictionary of Computing(自由线上电脑词典)和vera——Virtual Entity of Relevant Acronyms(数字化实体有关首字母缩写)。终端下输入dict -D可以查询服务器并显示可用的数据库。


silence@codeplayer:~$ dict -D
Databases available:
 foldoc     The Free On-line Dictionary of Computing (18 May 2012)
 jargon     The Jargon File (version 4.4.7, 29 Dec 2003)
 vera       V.E.R.A. -- Virtual Entity of Relevant Acronyms (June 2006)
 stardic    Stardic English-Chinese Dictionary
 xdict      XDICT the English-Chinese dictionary

最后还有一个非常强大的英英词典dict-gcide——the GNU version of the Collaborative International Dictionary of English。GCIDE包含1913年的韦氏词典未删节版,和由WordNet、1906年世纪词典、志愿者贡献的许多额外的定义为辅的完整文本,包含释义词性例句等等。但是由于该词典每一个单词的解释都太长,而且很少会用到,所以后来将它删除了。


使用方法

dict使用起来很简单在终端下输入 dict word 即可,而 dict -v word 可以显示详细的信息, dict -r word 可以显示更加详细的信息。 dict -D 在前面已经说过, dict -S 则可以查询服务器并显示可用的搜索策略。 dict -s strategy 可以设置特定的搜索策略,默认的策略一般会是 exact

另外, TAB 键的bash补全在输入单词的时候仍然可以用,非常方便!


silence@codeplayer:~$ dict -S
Strategies available:
 exact      Match headwords exactly
 prefix     Match prefixes
 nprefix    Match prefixes (skip, count)
 substring  Match substring occurring anywhere in a headword
 suffix     Match suffixes
 re         POSIX 1003.2 (modern) regular expressions
 regexp     Old (basic) regular expressions
 soundex    Match using SOUNDEX algorithm
 lev        Match headwords within Levenshtein distance one
 word       Match separate words within headwords
 first      Match the first word within headwords
 last       Match the last word within headwords
总结

#查询word
dict word
#查询word并显示详细信息
dict -v word
#查询word并显示非常详细的信息
dict -r word

#使用特定的服务器进行查询
dict -h server
#使用特定的端口进行查询(默认为2628)
dict -p server
#使用特定的数据库进行查询
dict -d dbname
#不显示释义而仅仅显示匹配的词
dict -m

#查询可用的数据库
dict -D
#查询可用的搜索策略
dict -S
#设置特定的搜索策略
dict -s strategy

#查询服务器信息
dict -I

更详细的信息可以 man dict 查看。


配置文件

dict的主要配置文件有:


#dict用户配置文件
~/.dictrc
#dict系统配置文件
/etc/dictd/dict.conf

#dictdconfig的输出文件,包括字典数据库的文件位置
/var/lib/dictd/db.list
#dictd的配置文件,"includes" /var/lib/dictd/db.list
/etc/dictd/dictd.conf
#可选的dictdconfig顺序覆盖文件,控制字典的查询与显示顺序
/etc/dictd/dictd.order

dict.conf或.dictrc的格式非常简单,其主要是用来设置查询哪些服务器:


server dict.org
server dict.org { port 8080 }
server dict.org { user username secret }
server dict.org { port dict user username secret }

以上任意一种格式都可以。port为可选的端口号,user以及username、secret是特殊的服务器用来验证用的。

dictd.conf设置哪些机器可以使用本机的dcit服务(与防火墙类似)以及从哪读取字典数据(即/var/lib/dictd/db.list)。db.list是dictdconfig自动生成的文件,不可手工修改。dictd.order设置字典查询的顺序,一般将中文字典放到后面,放到前面的话如果后面有字典释义过长,还得使用less或more才能看到前面的中文释义。

其他配置文件信息输入 man dictd man dictdconfig 查看。


使用网络上的dict服务器

1.如果本地的服务器不可用,则dcit会依照dcit.conf中的顺序依次查询网络的服务器

2.使用命令 dict [options] dict://host:port/d:word:database dict [options] dict://host:port/m:word:database:strategy 来查询网络的字典服务器。例如:


silence@codeplayer:~$ dict dict://dict.org/d:hello:wn
 definition found

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

  hello
      n 1: an expression of greeting; "every morning they exchanged
           polite hellos" [syn: {hello}, {hullo}, {hi}, {howdy}, {how-
           do-you-do}]

点击这里查看 dict服务器列表

3.直接telnet到网络的服务器上,使用方法与mysql类似。例如:


silence@codeplayer:~$ telnet dict.org dict
Trying 216.18.20.172...
Connected to dict.org.
Escape character is '^]'.
 pan.alephnull.com dictd 1.12.0/rf on Linux 3.0.0-14-server  <107822.32132.1391328789@pan.alephnull.com>
DEFINE wn hello
 1 definitions retrieved
 "hello" wn "WordNet (r) 3.0 (2006)"
hello
    n 1: an expression of greeting; "every morning they exchanged
         polite hellos" [syn: {hello}, {hullo}, {hi}, {howdy}, {how-
         do-you-do}]
.
 ok [d/m/c = 1/0/16; 0.000r 0.000u 0.000s]

具体使用方法在telnet上去后输入help查看。


GUI前端

其实dict也有图形界面的前端,使用GTK的前端有Word Inspector、GDict、Idict,KDE的前端有Kdict,其他详细信息见 http://www.dict.org/links.html


参考文章

[1] 在Linux上查字典 http://blog.cathayan.org/item/1715

作者:codeplayer‘s blog
Just a code player.
原文地址:终端下的字典dict, 感谢原作者分享。

发表评论