0

I need to remove the part

man1/bmtoa.1.gz

from the full path

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

so that it results in

/usr/share/man/

I've tried ${path#[!/]*/*} and ${path#/*/*} but both result in wrong paths.

1
  • If you have received an acceptable answer, then please consider accepting it by clicking on the outline of a checkmark to the left of the answer. This will aid future users who have the same question.
    – Kevin M
    Apr 26, 2010 at 18:26

2 Answers 2

1

this will work ${path%/*/*}, but works from the back to the front. here is a good how-to for chopping strings in bash.

1

If you could deal with /usr/share/man/man1, then you could do dirname /usr/share/man/man1/bmtoa.1.gz, but since you stated that you need the man1 to also come off, so you'll have to daisy-chain them:

dirname `dirname /usr/share/man1/bmtoa.1.gz`
1
  • It doesn't use shell expansion as requested by to me dirname looks much saner and simpler.
    – Jason Tan
    Apr 25, 2010 at 15:18

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .