零基础如何通过ruby教程开发简单的命令行工具

admin 综合编程开发技术 2


是不是总觉得命令行工具很高大上,只有资深程序员才能开发?想批量处理文件、统计数据,却只能手动一个个操作,累得腰酸背痛;看到别人用一行命令搞定复杂任务,自己却不知道从哪学起;跟着教程学 Ruby,却不知道怎么把语法用到实际工具开发中?其实啊,用 Ruby 开发命令行工具超简单,零基础也能上手,今天兔子哥就带大家一步步做个实用的命令行工具,从环境准备到代码实现,每个步骤都讲透,保证你学完就能自己开发工具解决实际问题!

一、先搞懂:命令行工具到底是啥?为啥用 Ruby 开发?


场景痛点:“听着‘命令行工具’就怕,是不是很难啊?”


别被名字吓住!命令行工具就是能在终端(命令提示符)里运行的小程序,比如批量重命名文件、统计文本字数、自动生成报告这些重复工作,都能做成命令行工具一键搞定。

1. 为啥 Ruby 特别适合开发命令行工具?


  • 语法简单:Ruby 代码像说话一样自然,处理文本、文件的语法超简洁,几行代码就能实现复杂功能。
  • 内置功能强:Ruby 自带文件操作、正则表达式、命令行参数解析等工具,不用装太多额外库。
  • 跨平台:写好的工具在 Windows、Mac、Linux 上都能运行,不用改代码。

之前带过的学员小王,是做行政的,每天要统计 Excel 里的数据,手动算半天。用 Ruby 开发了个命令行工具后,拖文件到终端一跑,3 秒出结果,现在他逢人就说 Ruby 好用。

2. 开发前的准备:这些东西得备好


  • 环境:确保 Ruby 已安装(之前教程讲过安装方法),终端输ruby -v能看到版本号就没问题。
  • 编辑器:用 VS Code 就行,装个 Ruby 插件,写代码时有语法提示,调试也方便。
  • 需求明确:先想清楚工具要解决啥问题,比如 “批量重命名图片”“统计文本里的关键词出现次数”,从小需求入手更容易成功。

二、核心知识:开发命令行工具必学的 Ruby 语法


场景问题:“学了 Ruby 基础,不知道哪些语法对开发工具有用”


开发命令行工具不用学高深语法,掌握这几个核心点,足够开发大多数实用工具。

1. 获取命令行参数:让工具知道你要干啥


命令行工具之所以灵活,是因为能接收参数。比如ruby tool.rb file.txtfile.txt就是参数,Ruby 里用ARGV数组获取:
ruby
# 新建文件 tool.rb# 打印所有参数puts "你输入的参数是:#{ARGV.inspect}"

在终端运行ruby tool.rb 苹果 香蕉 橘子,会输出你输入的参数是:["苹果", "香蕉", "橘子"]ARGV[0]就是第一个参数,ARGV[1]是第二个,超方便。

2. 文件操作:读文件、写文件、遍历目录


命令行工具常和文件打交道,Ruby 处理文件的语法超简单:
  • 读文件:ruby
    # 读取文件内容content = File.read("test.txt") # 一次性读整个文件puts content

  • 写文件:ruby
    # 写入内容到文件(覆盖原有内容)File.write("result.txt", "这是新内容")# 追加内容到文件File.open("log.txt", "a") { |f| f.puts "操作时间:#{Time.now}" }

  • 遍历目录下的文件:ruby
    # 遍历当前目录所有.rb文件Dir.glob("*.rb").each do |file|puts "找到Ruby文件:#{file}"end


3. 用户交互:让工具和人 “对话”


有时候需要用户输入信息,用gets获取输入,puts输出提示:
ruby
puts "请输入要处理的文件路径:"file_path = gets.chomp # chomp去掉输入后的换行符if File.exist?(file_path) # 判断文件是否存在puts "文件存在,开始处理..."elseputs "错误:文件不存在!"end

三、实战开发:做个 “批量重命名图片” 工具,超实用


场景痛点:“手机拍的照片命名都是 IMG_202405.jpg,想改成‘旅行_001.jpg’这样的格式,手动改太累”


咱们就开发个批量重命名图片的工具,支持指定前缀、起始编号,一步搞定重命名。

1. 需求分析:工具要实现这些功能


  • 能指定要重命名的目录(默认当前目录);
  • 能自定义文件名前缀(比如 “旅行”“会议”);
  • 能设置起始编号(比如从 1 开始,或从 100 开始);
  • 只处理图片文件(.jpg、.png、.jpeg)。

2. 代码实现:分步骤写,每步都测试


新建文件rename_images.rb,一步步写代码:
① 解析命令行参数

ruby
# 默认参数dir = "." # 默认当前目录prefix = "image" # 默认前缀start_num = 1 # 默认起始编号# 解析参数(支持 -d 目录 -p 前缀 -n 起始编号)i = 0while i < ARGV.sizecase ARGV[i]when "-d"dir = ARGV[i+1]i += 2when "-p"prefix = ARGV[i+1]i += 2when "-n"start_num = ARGV[i+1].to_i # 转成整数i += 2elseputs "未知参数:#{ARGV[i]}"exit # 退出程序endend

② 验证目录是否存在

ruby
# 检查目录是否存在unless Dir.exist?(dir)puts "错误:目录 #{dir} 不存在!"exitend

③ 遍历图片文件并改名

ruby
# 获取目录下的图片文件,按创建时间排序image_extensions = %w[.jpg .png .jpeg] # 支持的图片格式files = Dir.glob(File.join(dir, "*")).select do |file|File.file?(file) && image_extensions.include?(File.extname(file).downcase)end.sort_by { |f| File.ctime(f) } # 按创建时间排序# 批量重命名files.each_with_index do |old_path, index|ext = File.extname(old_path) # 获取文件扩展名(.jpg等)num = start_num + index # 计算当前编号new_name = "#{prefix}_#{num.to_s.rjust(3, '0')}#{ext}" # 格式化文件名,比如“旅行_001.jpg”new_path = File.join(dir, new_name)# 执行重命名File.rename(old_path, new_path)puts "已重命名:#{File.basename(old_path)}#{new_name}"endputs "重命名完成,共处理 #{files.size} 个文件!"

3. 测试工具:这样用超方便


在终端运行:
bash
# 基本用法:当前目录,默认前缀“image”,从1开始编号ruby rename_images.rb# 自定义目录、前缀和起始编号ruby rename_images.rb -d "D:/照片" -p "旅行" -n 10

运行后,指定目录的图片就会被重命名为 “旅行_010.jpg”“旅行_011.jpg” 这样的格式,是不是超实用?

四、常见错误及解决:新手开发工具常踩的坑


错误现象大概率原因解决办法
报 “Permission denied”没有文件操作权限,比如修改系统目录文件换个自己有权限的目录(比如用户目录),或用管理员权限运行终端
重命名后文件消失路径写错了,比如把 “D:/ 照片” 写成 “D: 照片”(漏了斜杠)File.join拼接路径,比如File.join("D:", "照片", "file.jpg")
参数解析错乱没按顺序输入参数,比如-p 旅行 -d 目录写成-d 目录 -p 旅行代码里用case判断参数名,和顺序无关,按上面的代码写就没问题
中文文件名乱码(Windows)终端编码问题运行前在终端输chcp 65001切换到 UTF-8 编码

五、用户经验分享:零基础也能开发实用工具


学员小李是做新媒体的,之前每次发文章都要手动压缩图片、改尺寸,费时又费力。跟着这个方法学了一周,开发了个 “图片批量处理工具”,支持压缩、改尺寸、加水印,现在处理 100 张图片只要 30 秒。他说:“刚开始怕自己学不会,没想到 Ruby 语法这么简单,跟着步骤写代码,错了就按兔子哥说的查错误,慢慢就成了,现在同事都喊我‘工具大神’呢!”

六、自问自答:开发命令行工具的进阶问题


Q:“想给工具加帮助说明,比如输入-h显示用法,怎么弄?”
A:简单!在参数解析里加个-h判断:
ruby
when "-h"puts "用法:ruby rename_images.rb [选项]"puts "选项:"puts "  -d 目录   指定图片目录(默认当前目录)"puts "  -p 前缀   文件名前缀(默认image)"puts "  -n 数字   起始编号(默认1)"puts "  -h        显示帮助"exit

这样输入ruby rename_images.rb -h就会显示帮助信息啦。
Q:“开发好的工具能不能双击运行,不用输ruby命令?”
A:能!Windows 系统可以在文件头部加一行#! ruby.exe,然后把文件后缀改成.rb,右键 “打开方式” 选 Ruby;Mac/Linux 系统加#!/usr/bin/env ruby,再用chmod +x 文件名赋予执行权限,就能直接输文件名运行了。
兔子哥觉得,用 Ruby 开发命令行工具是零基础练手的绝佳方式 —— 需求明确、反馈及时,写完立马能解决实际问题,特别有成就感。别害怕动手,哪怕一开始代码写得简单,能跑起来就是进步。先从解决自己工作生活中的小麻烦入手,比如批量整理文件、统计数据,慢慢积累经验,你会发现编程真的能提高效率,改变工作方式。
就像小李说的:“以前觉得编程离自己很远,现在发现用 Ruby 开发工具,就像搭积木一样简单,解决问题的那一刻,比喝奶茶还开心!” 现在就打开编辑器,从批量重命名工具开始,动手试试吧,你会发现自己也能开发出超实用的命令行工具!

标签: 正则表达式 腰酸背痛

发布评论 0条评论)

  • Refresh code

还木有评论哦,快来抢沙发吧~