Bash:从作为输入给出的相对路径中获取绝对路径

Posted

技术标签:

【中文标题】Bash:从作为输入给出的相对路径中获取绝对路径【英文标题】:Bash: get the absolute path from a relative path given as input 【发布时间】:2014-01-26 12:41:21 【问题描述】:

该脚本将要删除的文件路径作为输入,并将其移动到垃圾箱中,不仅是文件,还包括整个文件夹树。

将文件的绝对路径作为输入应该没有问题。

如果输入文件的相对路径,我如何获得要移动到垃圾箱的绝对路径?

这是一个肮脏的执行示例:

写入要删除的文件路径--->/home/user/mydata/song.mp3(绝对路径) 在垃圾桶里会得到:.Trash/home/user/mydata/song.mp3

写入要删除的文件路径--->mydata/song.mp3(相对路径) 在垃圾桶里会得到:.Trash/home/user/mydata/song.mp3

【问题讨论】:

bash/fish command to print absolute path to a file 的可能重复项 【参考方案1】:
#!/usr/bin/bash
delete_dir=$(readlink -f $1)

【讨论】:

【参考方案2】:
#!/usr/bin/bash

read path
if [[ "$path" =~ ^/home/user ]] ; then
  echo mv $path Trash$path
else
  echo mv /home/user/$path Trash/home/user/$path
fi

【讨论】:

以上是关于Bash:从作为输入给出的相对路径中获取绝对路径的主要内容,如果未能解决你的问题,请参考以下文章

老革命老问题之相对路径转绝对路径

C# 中是不是存在一种方法来获取给定两个绝对路径输入的相对路径? [复制]

Shell脚本——获取脚本所在的绝对路径

Shell脚本——获取脚本所在的绝对路径

为啥linux输入绝对路径才可以执行命令

VB.NET中绝对路径的相对路径