Linux 相对路径和绝对路径的使用

01. 概述

绝对路径和相对路径在shell环境中经常遇到,各有用处。有时候相对路径比较方便,有时候绝对路径比较方便。

02. 绝对路径(Absolute Pathname)

绝对路径必定由**/**开头

绝对路径是为档案/文件的所在位置做指向

在任何时候,都可以用绝对路径来找到我们想要的文件

举例说明

示例一:
/home/deng

示例二:
/usr/share/man

03. 相对路径(Relative Pathnames)

相对路径不由**/**开头

相对路径是相对于现在目前所在的位置,为目的地指向

通常相对路径比绝对路径短一点,可以当成我们迅速找到文件/档案的捷径

示例一:
../test/itcast

示例二:
./test

04. 相对路径的用途

那么相对路径与绝对路径有什么了不起呀?喝!那可真的是了不起了!假设你写了一个软件, 这个软件共需要三个目录,分别是 etc, bin, man 这三个目录,然而由于不同的人喜欢安装在不同的目录之下, 假设甲安装的目录是 /usr/local/packages/etc, /usr/local/packages/bin 及 /usr/local/packages/man ,不过乙却喜欢安装在 /home/packages/etc, /home/packages/bin, /home/packages/man 这三个目录中,请问如果需要用到绝对路径的话,那么是否很麻烦呢?是的! 如此一来每个目录下的东西就很难对应的起来!这个时候相对路径的写法就显的特别的重要了!

此外,如果你跟鸟哥一样,喜欢将路径的名字写的很长,好让自己知道那个目录是在干什么的,例如: /cluster/raid/output/taiwan2006/smoke 这个目录,而另一个目录在 /cluster/raid/output/taiwan2006/cctm ,那么我从第一个要到第二个目录去的话,怎么写比较方便? 当然是cd …/cctm比较方便罗!对吧!

05. 绝对路径的用途

但是对于文档名的正确性来说,『绝对路径的正确度要比较好~』。 一般来说,鸟哥会建议你,如果是在写程序 (shell scripts) 来管理系统的条件下,务必使用绝对路径的写法。 怎么说呢?因为绝对路径的写法虽然比较麻烦,但是可以肯定这个写法绝对不会有问题。 如果使用相对路径在程序当中,则可能由于你运行的工作环境不同,导致一些问题的发生。

06. 思维发散

问题: 在给出相对路径时,系统如何识别其相应的绝对路径呢?

事实上,相对路径是根据PATH环境变量来查找绝对路径的。

举例来说,我目前在 /home/itcast 这个 itcast使用者的家目录中,我想要看看里面的 .bashrc 这个档案的数据,使用的是 more 这个指令,而这个指令在 /bin/more 当中。通常的命令写法是:

[itcast@localhost ~]$ more .bashrc

而由于PATH变量的值为:

[deng@localhost ~]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/deng/.local/bin:/home/deng/bin
[deng@localhost ~]$ 

在执行more命令时,shell会根据PATH变量的路径中顺序查找,一旦查找匹配到(此例匹配到的应该是/bin/more),便执行/bin/more .bashrc。这便是执行命令时由相对路径查找绝对路径的过程。

所以我们就可以理解为什么执行当前目录下的可执行程序应该用的格式是:

[deng@localhost ~]$ ./test.sh

而不是直接用test.sh了。因为通常PATH变量不包含当前路径。如果不加./会导致相对路径格式的命令找不到绝对路径。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Linux下动态链接库加载路径及搜索路径问题

    引子 近日,服务器迁移后,偷懒未重新编译nginx的,直接./nginx启动,结果遇到如下问题: "error while loading shared libraries" 这是是因为需要的动态库不在动态链接器ld.so的搜索路径导致. ld.so 动态共享库搜索顺序 1.ELF可执行文件中动态段DT_RPATH指定:gcc加入链接参数"-Wl,-rpath"指定动态库搜索路径: 2.环境变量LD_LIBRARY_PATH指定路径: 3./etc/ld.so.ca

  • linux中通过文件描述符获取文件绝对路径的方法

    在linux中,有时候我们只知道文件描述符却不知道它的名字及其完整的路径,如果我们想获取其路径该怎么办呢?其实很简单,在linux中每个被打开的文件都会在/proc/self/fd/目录中有记录,其中(/proc/self/fd/文件描述符号)的文件就是文件描述符所对应的文件.说道这里我们先停下了说一个函数: readlink(取得符号连接所指的文件) 相关函数 stat,lstat,symlink 表头文件 #include <unistd.h> 定义函数 int readlink (con

  • Linux获取当前脚本真实路径的方法

    1.获取当前脚本的真实路径: #!/bin/bash if [[ $0 =~ ^\/.* ]] #判断当前脚本是否为绝对路径,匹配以/开头下的所有 then script=$0 else script=$(pwd)/$0 fi script=`readlink -f $script` #获取文件的真实路径 script_path=${script%/*} #获取文件所在的目录 realpath=$(readlink -f $script_path) #获取文件所在目录的真实路径 echo $sc

  • linux C++ 获取文件绝对路径的实例代码

    提供ftp服务时需要获取文件绝对路径,这里记录一下. #include <stdlib.h> #include <stdio.h> #include <limits.h> int main(){ const char *file_name = "filename"; char abs_path_buff[PATH_MAX]; //获取文件路径, 填充到abs_path_buff //realpath函数返回: null表示获取失败; 否则返回指向ab

  • Linux 快速定位web路径方法

    假如服务器上有几百个网站,文件夹的名称都是随机生成的,那就更郁闷了 不过不要气馁,还是有办法快速定位目标的.我们只需要用linux的两个命令 首先,找到目标站的某个图片的链接,查看图片的文件名.比如 www.jb51.net/img/fuckyou.jpg.我们记下来fuckyou.jgp,然后用find命令查找 fuckyou.jpg的位置 find -name /www fuckyou.jpg >1.txt 等到执行完之后我们可以查看1.txt的內容 cat 1.txt,里面所显示的就是ww

  • linux 下获取当前工作路径的实例

    获取工作路径这里介绍两种方法: 1.使用getcwd()函数. 头文件:#include <unistd.h> 定义函数:char * getcwd(char * buf, size_t size); 函数说明:getcwd()会将当前的工作目录绝对路径复制到参数buf 所指的内存空间,参数size 为buf 的空间大小 实例: void getPath() { char pPath[256] = {0}; getcwd(buf, 256); printf("filePath: %s

  • linux c 获得当前进程的进程名和执行路径(示例)

    复制代码 代码如下: [sam@hzhsan test]$ more test_processname.cpp #include <limits.h>#include <stdio.h>#include <string.h>#include <unistd.h> size_t get_executable_path( char* processdir,char* processname, size_t len){        char* path_end;

  • Linux中如何查询运行文件的全路径的方法

    在linux中,有些地方需要使用绝对路径,对于一些命令,如java.mysql等,需要使用到运行文件所在的路径,给大家介绍一个命令,来查询这个路径. which 可以通过which查询运行文件的所在路径,具体如下: 命令详解 以mysql为例,命令如下: [work(zhaoweinan)@tjtxvm-144-80 soft]$ which mysql /opt/soft/percona-mysql55/bin/mysql 命令输出了运行文件mysql所在的路径 当没有该文件时,输出如下: [

  • 查看linux服务器上mysql配置文件路径的方法

    在类NUIX的系统中,配置文件的位置一般在/etc/my.cnf 或者 /etc/MySQL/my.cnf 我们见过有些人尝试修改配置文件但是不生效,因为他们修改的并不是服务器读取的文件.例如Debian下,/etc/mysql/my.cnf才是MySQL读取的配置文件,而不是/etc/my.cnf. 如果不知道当前使用的配置文件路径,可以尝试下面的操作: 对于服务器上只有一个MySQL实例的典型安装,这个命令很有用 以上就是小编为大家带来的查看linux服务器上mysql配置文件路径的方法全部

  • linux中tar打包指定路径文件的实现方法

    压缩: tar czvf /data/backup/test.tar.gz /data/a/b/directory 解压: cd /data/test tar xzvf /data/backup/test.tar.gz 问题是,解压后的文件,在/data/test/data/a/b/directory里面 要想解压在当前目录路径. 这样写就可以解决了 tar czvf /data/backup/test.tar.gz /data/a/b/directory 改成 tar czvf /data/b

  • 详解kali linux 常用文件与指令路径

    kali linux 常用文件与指令路径 重启网络 /etc/init.d/networking restart 语言设置文件 /etc/default/locale apt 安装deb保存目录 /var/cache/apt/archives 字体修改目录 /etc/fonts/conf.d 配置更新源文件 /etc/apt/sources.list 配置更多更新源文件,将list文件放入此目录文件 /etc/apt/sources.list.d 配置本机网络lo与eth0接口 /etc/net

  • Linux 安装nodejs环境及路径配置详细步骤

    linux安装nodejs有2种方式一种简单的,解压即可用:另一种,通过下载source code ,通过编译,make,make install命令来安装. 这里只讲第一种,简单方便.不需要执行mak.make install.步骤如下: 一.确定你使用的linux系统,然后下载响应的压缩包.这里我下载的是node-v6.11.2-linux-x64.tar.xz 二.上传到linux相关路径下,一般是/usr/local/,并执行如下命令 xz -d node-xxxx.tar.xz ---

  • Linux 相对路径和绝对路径的使用

    01. 概述 绝对路径和相对路径在shell环境中经常遇到,各有用处.有时候相对路径比较方便,有时候绝对路径比较方便. 02. 绝对路径(Absolute Pathname) 绝对路径必定由**/**开头 绝对路径是为档案/文件的所在位置做指向 在任何时候,都可以用绝对路径来找到我们想要的文件 举例说明 示例一: /home/deng 示例二: /usr/share/man 03. 相对路径(Relative Pathnames) 相对路径不由**/**开头 相对路径是相对于现在目前所在的位置,

  • 使用SpringBoot设置虚拟路径映射绝对路径

    目录 SpringBoot 设置虚拟路径映射绝对路径 下面我们就来代码实现下 springboot打war包图片的虚拟路径映射 在html图片的路径如图 然后要映射到阿里云Linux服务器上路径 映射方法 在Host节点加上下面的 这里顺便放上后台接收上传头像的代码 SpringBoot 设置虚拟路径映射绝对路径 上传图片到本地路径,得到的是一个绝对路径例如:D:\picpath\O48681516429132485.png 但是前台需要的数据是这样的 :http://localhost:808

  • Java Web中解决路径(绝对路径与相对路径)问题

    Java Web中解决路径问题: Java中使用的路径,分为两种:绝对路径和相对路径.归根结底,Java本质上只能使用绝对路径来寻找资源.所有的相对路径寻找资源的方法,都不过是一些便利方法.不过是API在底层帮助我们构建了绝对路径,从而找到资源的! 在开发Web方面的应用时, 经常需要获取 服务器中当前WebRoot的物理路径. 如果是Servlet , Action , Controller, 或则Filter , Listener , 拦截器等相关类时, 我们只需要获得ServletCont

随机推荐