当前位置: 首页 > news >正文

Linux命令行翻译工具

一、背景

经常在linux命令行下有些单词不认识,复制出来通过翻译软件很不方便,如果有个命令行翻译就比较舒服了。通过下面shell脚本可以在/usr/bin/yd创建yd命令来进行快速命令行翻译。

二、代码

git地址

#!/bin/bash
# 
# 
CMD=/usr/bin/yd

cat >${CMD} <<EOF
#!/bin/bash
ARGS=1
E_BADARGS=1
TEM_FILE="/tmp/dict.tmp"
example_enable=false

if [ \$# -lt "\$ARGS" ]
 then
    echo "Usage:\$(basename \$0) word"
    exit \$E_BADARGS
fi

#处理参数
while getopts "a" arg
do
  case \$arg in
    a)
      example_enable=true
      shift
      ;;
    ?)
    example_enable=false
    echo "unkown argument"
  exit 1
  ;;
  esac
done

keyword="\$*"
keyword=\${keyword// /%20}

# 抓取页面,删除html代码,空行等,只留下想要的内容
curl -s 'http://dict.youdao.com/search?q='\$keyword'' | awk 'BEGIN{j=0;i=0;} {if(/phrsListTab/){i++;} if(i==1){print \$0; if(/<\/ul>/){i=0;}} if(/collinsToggle/){ j++;} if
(j==1) {print \$0; if(/<\/ul>/){j=0;}}}' | sed 's/<[^>]*>//g' | sed 's/ //g'| sed 's/→//g' | sed 's/^\s*//g' | sed '/^$/d'> \$TEM_FILE
# 处理输出
is_head=true # 当前行是否属于“头部”
head="" # 头部内容
body="" # 主体内容
ln_item=0 # 每一条解释的行号
ln_eg=0 # 例句行号

while read line
do
    let ln_item++
    let ln_eg++
    num_flag=\$(echo "\$line" | awk '/[0-9]+\.\$/')
    if [ "\$num_flag" != "" ]; then ## 遇见'数字+点'开头的行
        is_head=false # 第一次遇见数字行  将头部标示设置为false
        ln_item=0
    fi

    eg_flag=\$(echo "\$line" | awk '/例:\$/') # 遇见'例:'开头的行
    if [ "\$eg_flag" != "" ]; then
        ln_eg=0
    fi

    if \$is_head ; then
        head="\$head \$line"
    else
        if [ \$ln_item == 0 ] ; then
            line="\033[32;1m\n\n\$line\033[0m" # 释义编号
        elif [ \$ln_item == 1 ] ; then
            line="\033[32;1m[\$line]\033[0m" # 词性
        elif [ \$ln_item == 2 ] ; then
            line="\033[1m\$line\033[0m" # 释义 
        elif [ \$ln_eg == 0 ] ; then
            line="\033[32;1m\n   \$line\033[0m" # 例:
        elif [ \$ln_eg == 1 ]; then
            line="\033[33m\$line\033[0m" # 例句 
        elif [ \$ln_eg == 2 ]; then
            line="\033[33m\$line\033[0m" # 例句释义 
        fi
        body="\$body \$line"
    fi
done < \$TEM_FILE
if \$example_enable
then
    echo -e "\033[31;1m\$head\033[0m \$body"
else
    echo -e "\033[31;1m\$head\033[0m"
fi
exit 0
EOF

chmod +x ${CMD}

三、测试

  • 安装
    直接下载shell脚本,bash运行脚本即可
    bash linux_fanyi.sh
  • 翻译单词
    Linux命令行翻译工具

  • 批量翻译单词
    可以将单词放在一个文件中,去遍历翻译,例如这里翻译了下linux系统的用户名
    Linux命令行翻译工具

四、其他

也可以使用python

wget https://raw.githubusercontent.com/dantangfan/fanyi/master/fanyi.py
sudo mv ./fanyi.py /usr/local/bin/fanyi
sudo chmod +x /usr/local/bin/fanyi

转载于:https://blog.51cto.com/kaliarch/2301105

相关文章:

  • 保障邮件安全
  • Linux系统_Centos7下安装Nginx
  • 源码安装Apache服务器遇到的问题及解决方法
  • 优秀互联网高级测试工程师应该具备的能力
  • raid5实现原理
  • Go 可变参数和切片
  • Tomcat7 catalina.out 日志分割
  • storm drpc实例
  • 监控CPU(一)
  • RIP
  • Lintcode104 Merge k Sorted Lists solution 题解
  • jQuery基础一
  • heartbeat主配置文件
  • Mysql5.6到5.7升级需要以下操作
  • GDI+绘制极坐标图(Polar Diagram)
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • canvas 高仿 Apple Watch 表盘
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • ComponentOne 2017 V2版本正式发布
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • Java|序列化异常StreamCorruptedException的解决方法
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • leetcode388. Longest Absolute File Path
  • mongodb--安装和初步使用教程
  • mysql 数据库四种事务隔离级别
  • opencv python Meanshift 和 Camshift
  • Python_OOP
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • SpringCloud集成分布式事务LCN (一)
  • Webpack 4 学习01(基础配置)
  • 编写符合Python风格的对象
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 免费小说阅读小程序
  • 全栈开发——Linux
  • 使用common-codec进行md5加密
  • 阿里云服务器购买完整流程
  • 整理一些计算机基础知识!
  • (13):Silverlight 2 数据与通信之WebRequest
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (javascript)再说document.body.scrollTop的使用问题
  • (四)汇编语言——简单程序
  • (转)socket Aio demo
  • .gitignore文件设置了忽略但不生效
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .NET与 java通用的3DES加密解密方法
  • .sh 的运行
  • ::前边啥也没有
  • @Transaction注解失效的几种场景(附有示例代码)
  • [ Linux 长征路第五篇 ] make/Makefile Linux项目自动化创建工具