Teile eines Pfades mithilfe der Parametererweiterung entfernen … aber wie?

Teile eines Pfades mithilfe der Parametererweiterung entfernen … aber wie?

Ich muss das Teil entfernen

man1/bmtoa.1.gz

aus dem vollständigen Pfad

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

so dass es dazu führt,

/usr/share/man/

Ich habe ${path#[!/]*/*} und ${path#/*/*} ausprobiert, aber beide führen zu falschen Pfaden.

Antwort1

das wird funktionieren ${path%/*/*}, aber von hinten nach vorne.Hierist eine gute Anleitung zum Zerteilen von Zeichenfolgen in Bash.

Antwort2

Wenn Sie damit klarkommen /usr/share/man/man1, können Sie es tun dirname /usr/share/man/man1/bmtoa.1.gz, aber da Sie angegeben haben, dass auch man1 aussteigen muss, müssen Sie sie in Reihe schalten:

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

verwandte Informationen