Большинство опубликованных ответов не являются надежными для URL-адресов, которые содержат строки запроса или цели, такие как, например, следующие:
https://example.com/this/is/a/path?query#target
Python имеет разбор URL в своей стандартной библиотеке; легче позволить этому сделать это. Например,
from urllib import parse
import sys
path = parse.urlparse(sys.stdin.read().strip()).path
print("/" if not path or path == "/" else path.rsplit("/", 1)[-1])
Вы можете сжать это в один python3 -cдля использования в сценарии оболочки:
echo 'https://example.com/this/is/a/path/componets?query#target' \
| python3 -c 'from urllib import parse; import sys; path = parse.urlparse(sys.stdin.read().strip()).path; print("/" if not path or path == "/" else path.rsplit("/", 1)[-1])'
(Вы также можете оставить сценарий неработающим для удобства чтения. 'Позволит вводить новые строки.)
Конечно, теперь ваш сценарий оболочки имеет зависимость от Python.
(Я немного не уверен насчет того, пытается ли он обрабатывать случаи, когда компонент пути URL является корневым ( /); настройте / проверьте, если это важно для вас.)