从realpath中删除单词

时间:2018-03-31 06:56:58

标签: bash shell

说我有目录

/home/project/program.c

我想将其更改为

project/program.c

我已将真实路径设置为变量并尝试删除“/ home /”,但它仍然存在。

fpath="$(realpath $file)" 
ffpath=${fpath//$/home//}
echo "$ffpath"

有人可以提供一些提示吗?

3 个答案:

答案 0 :(得分:1)

您较短的解决方案是使用前缀模式删除:

fpath="$(realpath $file)" 
ffpath=${fpath#/home/}
echo "$ffpath"

但是,如果你坚持使用模式替换,你必须引用斜杠,因为它们是特殊的分隔符:

fpath="$(realpath $file)" 
ffpath=${fpath/\/home\/}
echo "$ffpath"

答案 1 :(得分:0)

以下解决方案可以帮助您。理想情况下,bash扩展参数应该足以满足此要求,但也可以添加更多解决方案。

var="/home/project/program.c"

解决方案1: 使用cut

echo "$var" | cut -d"/" -f3-

解决方案第二: 使用参数扩展。

echo "${var#*/*/}"

解决方案第3名: 使用sed

echo "$var" | sed 's|\(/[^/]*\)/\(.*\)|\2|'

答案 2 :(得分:0)

您可以使用basenamedirname

x='/home/project/program.c'
ffpath=$( basename "$( dirname $x)" )"/"$( basename $x )
echo "$ffpath"