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,定期备份这个文件到移动硬盘或者网盘中即可。

相关推荐
Soneswy3 小时前
Linux系统篇--重定向与文件操作命令
linux
有毒的教程3 小时前
Linux底层存储路由配
linux·运维·网络
Linux系统运维工程师_郭主任4 小时前
运维人还在被拒offer?现在能考的,只有 RHCE 10.0。
linux
自养Agent4 小时前
MCP Server Boundary Audit Report
linux·服务器·人工智能·windows·大模型·llm
Coisinier5 小时前
docker命令管理镜像及容器
linux·运维·nginx·docker·容器·操作系统
A心有千千结5 小时前
通过 SSH 反向代理让服务器借用本机网络访问 GitHub 的最佳实践
linux·服务器·网络·git·ssh·github
书生执笔画浮沉6 小时前
Linux 内核模块为什么不能自己解决兼容性问题?
linux·c·kernel·update·灵感
15Moonlight6 小时前
Linux网络(03):Socket 编程 TCP
linux·网络·tcp/ip
广州灵眸科技有限公司6 小时前
单芯片同时跑 Linux 与 RT-Thread:RV1126B的AMP异构方案完整拆解
linux·运维·服务器
小雪崩6 小时前
嵌入式学习:Linux驱动开发总结
linux·驱动开发·学习