使用参数扩展删除路径的某些部分...但是如何删除呢?

使用参数扩展删除路径的某些部分...但是如何删除呢?

我需要删除该部分

man1/bmtoa.1.gz

从完整路径

/usr/share/man/man1/bmtoa.1.gz

从而导致

/usr/share/man/

我尝试了 ${path#[!/]*/*} 和 ${path#/*/*} 但都导致了错误的路径。

答案1

这将起作用${path%/*/*},但是是从后往前起作用。这里是关于在 bash 中截断字符串的很好的指南。

答案2

如果你可以处理/usr/share/man/man1,那么你可以做dirname /usr/share/man/man1/bmtoa.1.gz,但因为你说过你还需要 man1 脱落,所以你必须将它们菊花链连接起来:

dirname `dirname /usr/share/man1/bmtoa.1.gz`

相关内容