使用參數擴充刪除路徑的一部分...但是如何呢?

使用參數擴充刪除路徑的一部分...但是如何呢?

我需要刪除該部分

man1/bmtoa.1.gz

從完整路徑

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

從而導致

/usr/分享/人/

我嘗試過 ${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`

相關內容