Keep Learning

12 May 2015

因为各种原因我经常要在osx上查英文单词,在osx系统下,查字典其实是一件非常优雅的事情,三指轻触,简单快速。在terminal中其实也是这样,3指轻触需要查询的单词,释义一触即发,用户体验非常好。不过如果没有触摸板,是否可以直接在命令行中使用命令查询单词呢?答案是肯定的,经过尝试,我发现了如下一些方案。

方案1:命令行中调用字典应用

open dict://the_word_you_looking_for

效果如下图

使用这条命令可以直接打开字典应用并查询相应单词。不过这不够geek,还需要改进。

方案2:使用python调用系统api

osx系统中自带的python可以访问apple的一些原生api,于是便有了下面的脚本

# dict.py
#!/usr/bin/python

import sys
from DictionaryServices import *

def main():
    try:
        searchword = sys.argv[1].decode('utf-8')
    except IndexError:
        errmsg = 'You did not enter any terms to look up in the Dictionary.'
        print errmsg
        sys.exit()
    wordrange = (0, len(searchword))
    dictresult = DCSCopyTextDefinition(None, searchword, wordrange)
    if not dictresult:
        errmsg = "'%s' not found in Dictionary." % (searchword)
        print errmsg.encode('utf-8')
    else:
        print dictresult.encode('utf-8')

if __name__ == '__main__':
    main()

使用方法

chmod +x dict.py
mv dict.py dict
ln -s /where/your/dict.py/is/dict /usr/local/bin/dict
dict the_word_you_look_for

效果如下

dict hello

hello
*[hә'lәu']
interj. 喂, 嘿

方案3:在线查询

系统字典虽好,但是词汇量及相应周边有限,仍然略有不足。其实比较好的一个方案是在线查询,可以查到更多更准确的释义。

在这个方案里我们要用到terminal中运行的浏览器w3m

首先安装w3m

brew install w3m

然后再写一个名为youdao的shell脚本,因为我们是去有道词典进行查询,所以命名如此

touch youdao
chmod +x youdao
ln -s /where/your/youdao/is/youdao /usr/local/bin/youdao

其内容如下

#! /bin/sh
if [ -z "$1" ]
then
  echo 'Usage youdao <word>'
else
  w3m http://dict.youdao.com/search?q=$1
fi

这样使用

youdao the_word_you_looking_for

效果如下图

按q退出,按space向下浏览。

方案4:在线查询,如果不需要中文释义的话

curl dict://dict.org/d:<word_to_search_for>

该方案也适用于liunx