Ruby切换目录报错:chdir找不到/Desktop目录问题排查
解决Ruby脚本删除Ubuntu桌面文件时的路径错误问题
嘿,这个错误其实很好排查——问题出在你指定的桌面路径完全不对!
你代码里用了/Desktop,但在Ubuntu系统中,桌面目录根本不在根目录(/)下面,而是属于当前用户的个人目录,正确的路径应该是~/Desktop(这里的~是当前用户主目录的快捷方式,展开后类似/home/你的用户名/Desktop)。根目录下默认不会有/Desktop这个文件夹,所以Ruby自然找不到它,就抛出了No such file or directory的错误。
给你修正后的脚本示例,还加了一些安全检查:
require 'fileutils' # 正确获取当前用户的桌面路径 desktop_path = File.expand_path("~/Desktop") # 先检查路径是否存在,避免报错 if Dir.exist?(desktop_path) Dir.chdir(desktop_path) do # 遍历桌面所有内容,只删除文件(保留文件夹) Dir.glob("*").each do |item| if File.file?(item) File.delete(item) puts "已删除文件: #{item}" end end # 如果需要连文件夹一起删除,替换上面的代码为下面这行(谨慎操作!会彻底删除所有内容) # FileUtils.rm_rf(Dir.glob("*")) end else puts "错误:桌面路径 #{desktop_path} 不存在!" end
几个额外提醒:
- 如果你用
root用户运行脚本,~会指向root的桌面目录(/root/Desktop),而不是普通用户的桌面,要注意这点。 FileUtils.rm_rf是强制删除所有内容的命令,包括文件夹和子文件,使用前一定要确认你真的想清空整个桌面!- 可以先用
Dir.glob("*")打印出所有要删除的内容,确认无误后再执行删除操作,避免误删重要文件。
内容的提问来源于stack exchange,提问作者Menporul Poriyalan
相关产品推荐
相关产品推荐

