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

相对路径和绝对路径解析

        在 Linux/Unix 和文件系统中,绝对路径相对路径是描述文件或目录位置的两种方式,它们的核心区别在于路径的起点使用场景。以下是详细对比:


目录

1. 定义与起点

2. 符号与语法

3. 使用场景

4. 实际示例

示例 1:定位文件

示例 2:返回上级目录

示例 3:跨多级目录

5. 优缺点对比

6. 如何选择?

用绝对路径:

用相对路径:

总结


1. 定义与起点

类型绝对路径相对路径
起点根目录(/开始当前工作目录开始
示例/home/user/docs/file.txtdocs/file.txt 或 ../backup/
特点唯一且完整,不受当前目录影响依赖当前目录,更简洁但需上下文

2. 符号与语法

  • 绝对路径
    始终以 / 开头,逐级列出所有父目录。
    示例:

    /var/log/nginx/access.log   # 根目录 → var → log → nginx → access.log
  • 相对路径
    不以 / 开头,使用以下符号简化路径:

    • .:当前目录(例如 ./script.sh)。

    • ..:上级目录(例如 ../config/settings.conf)。

    • 直接写子目录或文件名(例如 photos/2024.jpg)。
      示例:

      # 假设当前目录是 /home/user
      docs/report.txt             # 实际路径:/home/user/docs/report.txt
      ../../etc/hosts             # 实际路径:/etc/hosts

3. 使用场景

场景绝对路径相对路径
脚本或配置文件明确指定文件位置,避免路径歧义需谨慎使用(依赖脚本执行的当前目录)
跨目录操作直接定位,无需切换目录需结合 cd 或嵌套路径
命令行快捷操作路径较长,但准确性高路径简短,适合当前目录下的快速访问

4. 实际示例

示例 1:定位文件

  • 假设当前目录为 /home/user/projects,目标文件路径为 /home/user/projects/src/app.js

    • 绝对路径/home/user/projects/src/app.js

    • 相对路径src/app.js 或 ./src/app.js

示例 2:返回上级目录

  • 从 /home/user/docs 跳转到 /home/user

    cd ..       # 相对路径:返回上级目录
    cd /home/user  # 绝对路径:直接指定目标

示例 3:跨多级目录

  • 从 /var/log/nginx 访问 /etc/nginx/nginx.conf

    cat ../../etc/nginx/nginx.conf   # 相对路径(向上两级)
    cat /etc/nginx/nginx.conf        # 绝对路径

5. 优缺点对比

特性绝对路径相对路径
明确性✅ 唯一确定,不依赖上下文❌ 依赖当前目录,可能因目录变化失效
长度❌ 路径较长✅ 简洁,适合嵌套目录操作
可移植性❌ 硬编码路径,更换环境需修改✅ 更灵活,适合项目内部引用
安全性✅ 不易被误操作(路径明确)❌ 可能因当前目录错误导致意外覆盖或删除文件

6. 如何选择?

  • 用绝对路径

    • 在脚本、配置文件或日志中明确指定关键文件。

    • 需要跨多个目录操作时(如从 /tmp 访问 /usr/local/bin)。

  • 用相对路径

    • 在项目内部引用资源(如代码中引用同级目录的模块)。

    • 频繁操作当前目录的子目录时(如开发、调试)。


总结

  • 绝对路径是“完整地址”,相对路径是“从当前位置出发的路线”。

  • 理解两者的区别可以避免文件操作中的路径错误,提升效率!

相关文章:

  • 遇到QT进程启动失败。被调用的程序丢失,或者您可能没有足够的权限来调用该程序。
  • 聊一聊接口测试后垃圾数据如何清理?
  • C语言状态字与库函数详解:概念辨析与应用实践
  • 【leetcode刷题日记】lc.152-乘积最大子数组
  • 念去去千里烟波,雾霭沉沉楚天阔
  • 大语言模型推理能力的强化学习现状理解GRPO与近期推理模型研究的新见解
  • 网络基础与 HTTP 协议
  • LeetCode第159题_至多包含两个不同字符的最长子串
  • Ubuntu下安装和卸载MySQL
  • 基于SpringBoot的社区家庭医生在线问诊系统
  • 使用DeepSeek的AIGC的内容创作者,如何看待陈望道先生所著的《修辞学发凡》?
  • Matlab 汽车行驶速度PID控制系统仿真
  • 控制反转(IOC)和依赖注入(DI)
  • DQN在Gym的MountainCar环境的实现
  • 缓存 --- 缓存击穿, 缓存雪崩, 缓存穿透
  • 《AI大模型应知应会100篇》第28篇:大模型在文本创作中的应用技巧
  • Android Gradle多渠道打包
  • 基于 Vue3 + ECharts + GeoJson 实现区域地图钻取功能详解
  • WEMOS LOLIN32 开发板引脚布局和技术规格
  • 25.4.20学习总结
  • 著名政治学学者、中国人民大学教授仝志敏逝世
  • 杨国荣丨阐释学的内涵与意义——张江《阐释学五辨》序
  • 上海市市长龚正会见英伟达总裁黄仁勋,共创科技发展美好未来
  • 河南一季度GDP为14945.58亿元,同比增长5.9%
  • “不可见社会”:一周城市生活
  • 关于沪泰创新合作,泰州市委书记姜冬冬谈到了三个“合”