You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 06:56:00