说我有目录
/home/project/program.c
我想将其更改为
project/program.c
我已将真实路径设置为变量并尝试删除“/ home /”,但它仍然存在。
fpath="$(realpath $file)"
ffpath=${fpath//$/home//}
echo "$ffpath"
有人可以提供一些提示吗?
答案 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)
您可以使用basename
和dirname
x='/home/project/program.c'
ffpath=$( basename "$( dirname $x)" )"/"$( basename $x )
echo "$ffpath"