Unix/Linux shell实用小程序1:生字本

时间:2024-07-05 22:38:29

在这里插入图片描述

前言

在日常工作学习中,我们会经常遇到一些不认识的英语单词,于时我们会打开翻译网站或者翻译软件进行查询,但是大部分工具没有生词本的功能,而有生字本的软件又需要注册登陆,免不了很麻烦,而且自己的数据存放在别人的服务器,免不了会泄漏自己的隐私,并且一旦用了某个软件的生字本,那么可能就只能一直使用它,因为我们不可能同时使用好几个软件来管理我们的生字,这样不便于管理。为了解决上述的这些痛点,于是乎,小编把自己使用的实用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 ]; then
  touch $WORD_FILE
fi
nw(){
  if [ -n "$1" ]; then
    # 判断是否存在
    rgrep "\b$1\b" $WORD_FILE > /dev/null
    if [ $? -eq 0 ]; then
      echo "$1 already added"
      return
    fi
    echo $1 | tee -a $WORD_FILE
  fi
}

sw(){
  if [ ! -f $WORD_FILE ]; then
    touch $WORD_FILE
    return
  fi
  grep "$1" $WORD_FILE | tac | head -n 10 | sort
  if [ ${PIPESTATUS[0]} -ne 0 ]; then 
    echo "$1 not found"
  fi
}

源码解析

  1. 该脚本将单词保存在一个文本文件中,使用WORD_FILE变量设置文件的路径

  2. 该脚本定义了2个函数,nw (new word)命令的作用是添加一个单词到生字本;sw (search word or show word) 命令查找单词

  3. ${PIPESTATUS[0]}获取管道第一个命令的退出代码,可以判断该命令是否执行成功

  4. 源码比较简单,如果有不懂的地方欢迎评论区留言

安装

  1. 创建文件,输入上述源码保存

    touch ~/.newword.sh
    
  2. ~/.bashrc文件末尾添加如下代码

    source ~/.newword.sh
    
  3. 刷新~/.bashrc

    source ~/.bashrc
    

使用

  1. 添加生字到单词本

    jagitch@jagitch-MS-7B93:~$ nw facilitates
    facilitates
    jagitch@jagitch-MS-7B93:~$ nw facilitates
    facilitates already added
    
  2. 在单词本中查找单词

    jagitch@jagitch-MS-7B93:~$ sw in
    individual
    inspired
    instant
    interoperability
    
  3. 查找最近添加的单词(最多10个)

    jagitch@jagitch-MS-7B93:~$ sw
    closure
    facilitates
    gregorian
    idempotent
    individual
    instant
    interoperability
    opportunistically
    regulate
    simultaneously
    

备份

所有单词都保存在WORD_FILE变量指定的文件中,默认是~/.newword.txt,定期备份这个文件到移动硬盘或者网盘中即可。