如何在osx的终端下使用字典
因为各种原因我经常要在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

如何在osx的终端下使用字典的更多相关文章
- 教你如何在Kali Linux 环境下设置蜜罐?
导读 Pentbox是一个包含了许多可以使渗透测试工作变得简单流程化的工具的安全套件.它是用Ruby编写并且面向GNU/Linux,同时也支持Windows.MacOS和其它任何安装有Ruby的系统. ...
- Linux终端下安装jdk
linux 终端下安装jdk(rpm方法) 1.下载jdk对应版本rpm文件(以下称为jdk.rpm) 放在对应文件夹下 2.使用命令给定权限 #chmod +x jdk.rpm 3.解压rpm文件 ...
- linux终端下 编译c语言程序
linux终端下,编译C语言程序步骤为: 采用vi进行源代码编写,编写完成后,:wq存盘退出,如: vi test.c 在命令行下,运行gcc编译程序,生成执行码,如: gcc -o test te ...
- mac终端下运行shell脚本
最近公司要弄关于IOS下自动化打包的东西,研究了用命令行的形式来代替手工的方式来处理.即: 用xcodebuild 和xcrun 语法来进行脚本实现. 但由于语法的结构够了,另一个问题产生了, ...
- Android系统在超级终端下必会的命令大全(adb shell命令大全)
. 显示系统中全部Android平台: android list targets . 显示系统中全部AVD(模拟器): android list avd . 创建AVD(模拟器): android c ...
- .Net 应用程序如何在32位操作系统下申请超过2G的内存【转】
作者: eaglet 2008 年我写过一篇博客叫 <让.Net 应用程序突破2G的内存访问限制> 这篇博客主要讲述了如何在32位操作系统下利用AWE 扩展访问超过2G的内存.AWE方式虽 ...
- linux终端下文件不同颜色的含义
偶然注意到在终端下花花绿绿的目录显示效果,开始以为只是些特效,后来研究了一下,原来其中有些规律性的东西,总结如下: 蓝色表示目录:
- mac 终端下ssh 登录远程服务器不发输入中文
转:https://segmentfault.com/q/1010000000150673 用Mac的iterm2 ssh连上去,终端显示中文乱码,也不能输入中文,然而本地终端可以显示和输入. 解决方 ...
- 保留键的情况下取字典中最大的值(max\zip函数的联合使用)
在我们平常想要获取字典中value最大或者最小的值的时候,常常使用如下函数: testDict = {"age1":18,"age2":20,"age ...
随机推荐
- JS获取当前/指定URL参数
方法: 首先通过 document.location 获得当前访问网页的网址, 其次用 split 方法通过“?”把网址分为两部分. 如果网址中有参数(arrObj.length > 1) 再用 ...
- 高级NUMA参数
Advanced NUMA Attributes You can use the advanced NUMA attributes to customize NUMA usage. Attribute ...
- SqlServer插入1000条记录
1.想在SqlServer中插入指定数量的测试记录怎么办? 2.解决: DECLARE @var INT ) BEGIN INSERT INTO test (Name) VALUES (convert ...
- LIST OF NOSQL DATABASES [currently 150]
http://nosql-database.org Core NoSQL Systems: [Mostly originated out of a Web 2.0 need] Wide Column ...
- 【Linux】找出文件之间的差异
使用命令comm可以找出2个文件之间的差异 现在有文件如下: Linux:/qinys # cat A.txt apple lemon onion orange pear Linux:/qinys # ...
- ASP.NET之通过JS向服务端(后台)发出请求(__doPostBack is undefined)
ASP.NET回发数据是通过函数__doPostBack来实现的.该函数在加入了服务端控件,并将AutoPostBack设置为true之后,将自己主动生成,详细能够參看以下的图. watermark/ ...
- 【TP3.2】详解_initialize() 和 __construct() 的区别和联系
1.假设 一个AdminController.class.php 集成至 \Think\Controller 类, 我们来看看Controller.class.php的构造方法源码: /** * 架构 ...
- java struts2入门学习实例--用户注册和用户登录整合
需求: 1.用户注册(user_register.jsp)-->注册成功(UserRegister.action)-->显示注册信息(register_success.jsp)2.用户登录 ...
- 升级cocoapods1.1.1版本
先切换gem源 gem sources --remove https://rubygems.org/ gem source -a https://gems.ruby-china.org 查看是否切换成 ...
- 【LeetCode】227. Basic Calculator II
Basic Calculator II Implement a basic calculator to evaluate a simple expression string. The express ...