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

前言

在日常工作学习中,我们会经常遇到一些不认识的英语单词,于时我们会打开翻译网站或者翻译软件进行查询,但是大部分工具没有生词本的功能,而有生字本的软件又需要注册登陆,免不了很麻烦,而且自己的数据存放在别人的服务器,免不了会泄漏自己的隐私,并且一旦用了某个软件的生字本,那么可能就只能一直使用它,因为我们不可能同时使用好几个软件来管理我们的生字,这样不便于管理。为了解决上述的这些痛点,于是乎,小编把自己使用的实用shell脚本开发的生字本程序分享给大家,既实用又可以学习linux shell脚本开发知识。

很抱歉,本专栏主要是学习linux shell编程的,所以该程序目前不支持Windows,如果感兴趣的可以参考本代码使用windows cmd进行开发。

生子本的功能概览

bash 复制代码
jagitch@jagitch-MS-7B93:~$ nw facilitates
facilitates already added
jagitch@jagitch-MS-7B93:~$ sw in
individual
inspired
instant
interoperability

源码

bash 复制代码
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. 创建文件,输入上述源码保存

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

    bash 复制代码
    source ~/.newword.sh
  3. 刷新~/.bashrc

    bash 复制代码
    source ~/.bashrc

使用

  1. 添加生字到单词本

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

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

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

备份

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

相关推荐
chlk12317 小时前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
舒一笑17 小时前
Ubuntu系统安装CodeX出现问题
linux·后端
改一下配置文件18 小时前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
深紫色的三北六号1 天前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
SudosuBash1 天前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
哈基咪怎么可能是AI2 天前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
十日十行2 天前
Linux和window共享文件夹
linux
木心月转码ing3 天前
WSL+Cpp开发环境配置
linux
崔小汤呀4 天前
最全的docker安装笔记,包含CentOS和Ubuntu
linux·后端
何中应4 天前
vi编辑器使用
linux·后端·操作系统