Linux获取两个路径之间的相对路径

获取两个路径之间的相对路径是一个很常见的问题,在Linux中怎么实现呢?

为了进行隔离,整个项目是用chroot跑的,有一次为了在chroot下建一个软链接,又不能用绝对路径,想自动计算一个路径相对于另一个路径的相对路径,怎么办呢?

经过一番搜索后发现,Linux中realpath和ln都有这个功能。

  • realpath
realpath [OPTION]... FILE...
   --relative-to=FILE
          print the resolved path relative to FILE

example:

# realpath /var/chroot/var/log --relative-to=/var/chroot/var/lib/data/log
../../../log
  • ln
ln [OPTION]... [-T] TARGET LINK_NAME
   -r, --relative
          create symbolic links relative to link location

example:

# ln -sr /var/chroot/var/log /var/chroot/var/lib/data/log/mylog
# ll /var/chroot/var/lib/data/log/
total 0
lrwxrwxrwx 1 root root 12 Mar  3 09:21 mylog -> ../../../log

原文地址:https://www.cnblogs.com/jmliao/p/12400597.html

时间: 2024-10-09 10:47:15

Linux获取两个路径之间的相对路径的相关文章

php 两个文件之间的相对路径的计算方法

php 两个文件之间的相对路径的计算方法 比如: 文件A 的路径是 /home/web/lib/img/cache.php 文件B的路径是 /home/web/api/img/show.php 那么.文件A相对于文件B的路径是 ../../lib/img/cache.php,即文件B 訪问 文件A的相对路径. function getRelativePath <?php /** 计算path1 相对于 path2 的路径,即在path2引用paht1的相对路径 * @param String $

php代码实现 两个目录之间的相对路径

/**  * 获取两个路径之间的相对路径  * @param $path1  路径1  * @param $path2  路径2  * @return 返回相对路径或者false(在同一个目录下)  */ function relativePath($path1, $path2) {     // 将各自的路径(不包含文件)存放到array数组中     $arr1 = explode('/', dirname($path1));     $arr2 = explode('/', dirname

Python获取两个ip之间的所有ip

int_ip = lambda x: '.'.join([str(x/(256**i)%256) for i in range(3,-1,-1)]) ip_int = lambda x:sum([256**j*int(i) for j,i in enumerate(x.split('.')[::-1])]) def get_ips(ip1,ip2): f=open('ips.txt','w') ip1_num = ip_int(ip1) ip2_num = ip_int(ip2) for i i

Java 获取两个日期之间的日期

1.前期需求,两个日期,我们叫他startDate和endDate,然后获取到两个日期之间的日期 /** * 获取两个日期之间的日期 * @param start 开始日期 * @param end 结束日期 * @return 日期集合 */ private List<Date> getBetweenDates(Date start, Date end) { List<Date> result = new ArrayList<Date>(); Calendar tem

PHP 获取两个时间之间的月份

## 获取两个时间之间的间距时间 $s = '2017-02-05'; $e = '2017-07-20'; $start = new \DateTime($s); $end = new \DateTime($e); // 时间间距 这里设置的是一个月 $interval = \DateInterval::createFromDateString('1 month'); $period = new \DatePeriod($start, $interval, $end); foreach ($p

Linux CentOS7 两台机器之间免输入密码相互登录(密钥对认证)

Linux CentOS7 两台机器之间免输入密码相互登录(密钥对认证) 两台机器为: 主机名:fxq-1,IP:192.168.42.181 主机名:fxq-2, IP:192.168.42.182 w命令可以查看当前登录用户的信息 [[email protected] ~]# w  23:59:42 up 12 min,  1 user,  load average: 0.00, 0.07, 0.11USER     TTY      FROM             [email prot

C#获取两个日期之间的间隔

在应用程序开发的过程中,很多时候涉及到时间的操作,例如时间的大小比较以及两个时间的间隔.此文就简单介绍下C#语言如何获取两个时间之前的间隔.在C#中获取两个时间之间的间隔需要使用到TimeSpan类,该对象表示两个日期之间的差异.TimeSpan结构用于测量持续时间的最大时间单位是一天.时间间隔以天为单位进行测量,以确保一致性,因为较大单位时间(例如月和年)的天数会有所不同.TimeSpan对象的值是等于表示的时间间隔的刻度数.刻度等于100纳秒,或一千万分之一秒.获取两个时间的间隔可以使用下列

获取两个月份之间的相差的月份

/** * 获取两个日期之间所有的月份 * @param string $date1 - 起始日期 默认1970-01-01 * @param string $date2 - 截止日期 默认1970-02-01 * @return array */ public function getMonthNum(string $date1 = '1970-01-01', string $date2 = '1970-02-01'):array { $time1 = strtotime($date1); /

c#获取两个时间之间的信息

//获取两个日期间的天数(含时间) DateTime dt1 = Convert.ToDateTime("2008-7-22 10:12:55"); DateTime dt2 = Convert.ToDateTime("2009-7-30 10:12:54"); System.TimeSpan ts = dt2.Subtract(dt1); Response.Write(ts.Days.ToString()); System.TimeSpan objT; objT=