当前位置: 首页 > 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)。

  • 用相对路径

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

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


总结

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

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

http://www.xdnf.cn/news/51229.html

相关文章:

  • windows下配置Ninja
  • 算法笔记—动态规划
  • Multisim使用教程详尽版--(2025最新版)
  • B树的异常恢复
  • pivot_root:原理、用途及最简单 Demo
  • 项目预期管理:超越甘特图,实现客户价值交付
  • 协程?协程与线程的区别?Java是否支持协程?
  • The_Planets_Earth靶场笔记(VulnHub)
  • 第一章,HCIA复习
  • 人形机器人马拉松:北京何以孕育“领跑者”?
  • C++ 基础:注意a == b; b == a;陷阱
  • 如何高效利用呼叫中心系统和AI语音机器人
  • (12)VTK C++开发示例 --- 生成高斯随机数
  • 苍穹外卖阶段性总结 (超详细版)
  • AIGC(生成式AI)试用 30 -- AI做软件程序测试 1
  • Redis入门
  • 按字符串长度升序,长度相同则按字典序
  • MyFamilyTree:专业家谱族谱制作工具
  • PHP实现图片自动添加水印效果
  • 在 Ubuntu 系统上安装 PostgreSQL
  • INFERENCE SCALING FOR LONG-CONTEXT RETRIEVAL AUGMENTED GENERATION
  • MIT6.S081-lab4
  • 【LeetCode】算法详解#5 ---轮转数组
  • Spring中Bean的作用域和生命周期
  • PICO4 Ultra MR开发 空间网格扫描 模型导出及预览
  • 【外研在线-注册/登录安全分析报告】
  • 聚宽策略----国九条后中小板微盘小改,年化135.40%
  • 【leetcode刷题日记】lc.152-乘积最大子数组
  • C++(23)—模板初阶
  • 计算机组成原理笔记(十七)——4.2定点加减运算