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

相关推荐
newnazi5 小时前
RedHat10 安装MS SQL Server2025
linux·服务器·数据库
zkkkkkkkkkkkkk6 小时前
Linux进行管理工具Supervisor配置与使用
linux·python·supervisor
开发者联盟league6 小时前
linux普通用户使用pip安装模块
linux·python·pip
QuestLab6 小时前
③-进阶篇:vLLM实战——多卡部署、压测与排障
linux·服务器·网络
Languorous.6 小时前
Windows 安装 Linux 虚拟机 / WSL 完整教程(新手零失败)
linux·运维·windows
颂love7 小时前
Linux命令的简单学习
linux·运维·学习
satadriver8 小时前
ip-guard网络通信加解密
linux·网络·tcp/ip
meilindehuzi_a8 小时前
【Linux 进程基础】一文读懂命令行参数与环境变量
linux·服务器
用户86859214418748 小时前
Linux I2C 调试实录:用寄存器打印揪出 TRISE 配置过小
linux
脆皮炸鸡7558 小时前
进程信号~信号的产生
linux·服务器·开发语言·经验分享·笔记·学习方法