
前言
在日常工作学习中,我们会经常遇到一些不认识的英语单词,于时我们会打开翻译网站或者翻译软件进行查询,但是大部分工具没有生词本的功能,而有生字本的软件又需要注册登陆,免不了很麻烦,而且自己的数据存放在别人的服务器,免不了会泄漏自己的隐私,并且一旦用了某个软件的生字本,那么可能就只能一直使用它,因为我们不可能同时使用好几个软件来管理我们的生字,这样不便于管理。为了解决上述的这些痛点,于是乎,小编把自己使用的实用shell脚本开发的生字本程序分享给大家,既实用又可以学习linux shell脚本开发知识。
很抱歉,本专栏主要是学习linux shell编程的,所以该程序目前不支持Windows,如果感兴趣的可以参考本代码使用windows cmd进行开发。
生子本的功能概览
jagitch@jagitch-MS-7B93:~$ nw facilitates
facilitates already added
jagitch@jagitch-MS-7B93:~$ sw in
individual
inspired
instant
interoperability
源码
jagitch@jagitch-MS-7B93:~$ cat .newword.sh
WORD_FILE=~/.newword.txt# 创建文件
if [ ! -f $WORD_FILE ]; thentouch $WORD_FILE
fi
nw(){if [ -n "$1" ]; then# 判断是否存在rgrep "\b$1\b" $WORD_FILE > /dev/nullif [ $? -eq 0 ]; thenecho "$1 already added"returnfiecho $1 | tee -a $WORD_FILEfi
}sw(){if [ ! -f $WORD_FILE ]; thentouch $WORD_FILEreturnfigrep "$1" $WORD_FILE | tac | head -n 10 | sortif [ ${PIPESTATUS[0]} -ne 0 ]; then echo "$1 not found"fi
}
源码解析
-  该脚本将单词保存在一个文本文件中,使用 WORD_FILE变量设置文件的路径
-  该脚本定义了2个函数,nw (new word)命令的作用是添加一个单词到生字本;sw (search word or show word) 命令查找单词 
-  ${PIPESTATUS[0]}获取管道第一个命令的退出代码,可以判断该命令是否执行成功
-  源码比较简单,如果有不懂的地方欢迎评论区留言 
安装
-  创建文件,输入上述源码保存 touch ~/.newword.sh
-  在 ~/.bashrc文件末尾添加如下代码source ~/.newword.sh
-  刷新 ~/.bashrcsource ~/.bashrc
使用
-  添加生字到单词本 jagitch@jagitch-MS-7B93:~$ nw facilitates facilitates jagitch@jagitch-MS-7B93:~$ nw facilitates facilitates already added
-  在单词本中查找单词 jagitch@jagitch-MS-7B93:~$ sw in individual inspired instant interoperability
-  查找最近添加的单词(最多10个) jagitch@jagitch-MS-7B93:~$ sw closure facilitates gregorian idempotent individual instant interoperability opportunistically regulate simultaneously
备份
所有单词都保存在WORD_FILE变量指定的文件中,默认是~/.newword.txt,定期备份这个文件到移动硬盘或者网盘中即可。