彻底理解 Linux 中的绝对路径和相对路径
2022-9-2 08:5:36 Author: Docker中文社区(查看原文) 阅读量:14 收藏

路径是Linux中最基本的概念之一,这是每个Linux用户都必须知道的。

路径是指文件和目录的引用方式。它给出了文件或目录在 Linux 目录结构中的位置,由名称和斜杠组成。

/home/abhishek/scripts

作为一个系统用户,当您想要访问某个文件或目录,或者必须为命令或脚本指定文件或目录的位置时,就会使用路径。

cat /home/abhishek/scripts/my_script.sh

请记住,如果路径以斜杠“/”开头,则第一个斜杠表示根,路径中的其余斜线只是分隔符。初学者经常混淆斜杠和分隔符斜杠。

在上图中,第一个路径是以根路径(/)开始的,第二个路径不是以 / 开始的。这两种写法都是正确的,第一个是绝对路径,第二个是相对路径。

Linux中的绝对路径和相对路径

绝对路径始终从根目录(/)开始,比如:

/home/abhishek/scripts/my_scripts.sh

相对路径从当前目录开始。比如,如果你在 /home 目录中,希望访问 my_script.sh 文件,那么访问的路径应该是:

abhishek/scripts/my_scripts.sh

理解绝对路径和相对路径之间的差异

我们都知道Linux中目录结构是一个树,从根(/)开始,然后产生分支。

假设我们现在目录abhishek中,并且希望访问文件my_scripts.sh,如下图所示两种路径的表示:

假设我们使用 ls 命令查看 my_script.sh 的文件信息,那么使用绝对路径:

ls -l /home/abhishek/scripts/my_script.sh

然后,相对路径:

ls -l scripts/my_script.sh

那么,以上两种方式,除了文件路径不一样以外,其他的完全一样:

注:在Linux中,文件名区分大小写。可以有大写、小写、数字、点、中划线、下划线以及除了斜杠(/)之外的大多数字符。斜杠(/)作为保留字符,用于根目录和用于分割路径中的目录。

使用带有 . 和 .. 目录的相对路径

有两种特殊的相对路径:

  • .(一个点):表示路径中的当前路径;

  • ..(两个点):表示父目录,即上一级目录。

如下图,我们要从 abhishek 目录中,到 prakash 目录中去。

切换目录,使用  cd 命令。如果使用绝对路径,可以这样:

cd /home/prakash

使用相对路径的话 ,需要用到特殊的相对路径 .. :

cd ../prakash

为什么要使用 .. 呢?因为相对路径要从当前目录开始,我们需要告诉 cd 命令向上一级,将我们带到 /home 目录,然后从那里在进入到 prakash 目录。

绝对路径始终以 / 开始,并且与当前位置无关;相对路径取决于当前的位置。

绝对路径和相对路径,应该使用哪个呢?

老实说,这个问题没有直截了当的答案。这要视情况而定。

如果你当前所在的目录层次结构比较深,并且需要向上或者向下一级移动,那么使用相对路径会更简单。

假设你位于

/home/username/programming/project/interface/src/header 目录中,并且需要访问 /home/username/programming/project/interface/bin 目录中的某些内容。使用相对路径可以避免键入所有冗长的目录名,只需在此处使用.././bin即可。

但是,如果你要从

/home/username/programming/project/interface/src/header

目录访问 /usr/bin 目录中的某些内容,那么使用 ../../../../../../usr/bin 会比较麻烦,这个时候使用绝对路径更方便。

另一种情况,是在脚本或者程序中使用路径。如果位置是确定的,那么就使用绝对路径;如果项目中有多个文件夹,并且需要在其中之间切换,那么此处需要使用相对路径,因为你不确定最终用户会将程序放在什么地方。


来源:开源Linux

(版权归原作者所有,侵删)

推荐阅读 点击标题可跳转

《Docker是什么?》

《Kubernetes是什么?》

《Kubernetes和Docker到底有啥关系?》

《教你如何快捷的查询选择网络仓库镜像tag》

《Docker镜像进阶:了解其背后的技术原理》

《教你如何修改运行中的容器端口映射》

《k8s学习笔记:介绍&上手》

《k8s学习笔记:缩扩容&更新》

《Docker 基础用法和命令帮助》

《在K8S上搭建Redis集群》

《灰度部署、滚动部署、蓝绿部署》

《PM2实践指南》

《Docker垃圾清理》

《Kubernetes(k8s)底层网络原理刨析》

《容器环境下Node.js的内存管理》

《MySQL 快速创建千万级测试数据》

《Linux 与 Unix 到底有什么不同?》

《浅谈几种常见 RAID 的异同》

《Git 笔记-程序员都要掌握的 Git》

《老司机必须懂的MySQL规范》

《Docker中Image、Container与Volume的迁移》

《漫画|如何用Kubernetes搞定CICD》

《写给前端的Docker实战教程》

《Linux 操作系统知识地图2.0,我看行》

《16个概念带你入门 Kubernetes》

《程序员因接外包坐牢456天,长文叙述心酸真实经历》

《IT 行业老鸟,有话对你说》

《HTTPS 为什么是安全的?说一下他的底层实现原理?


免责声明:本文内容来源于网络,所载内容仅供参考。转载仅为学习和交流之目的,如无意中侵犯您的合法权益,请及时联系Docker中文社区!



文章来源: http://mp.weixin.qq.com/s?__biz=MzI1NzI5NDM4Mw==&mid=2247493034&idx=1&sn=a251a90b4fb9954df068764aefaeabbc&chksm=ea1b0ceadd6c85fc16ad341e7b20cd42738f1f2885684c3cdcc050f7f0f7bfda7cbc212a9730#rd
如有侵权请联系:admin#unsafe.sh