A maioria das respostas postadas não é robusta em URLs que contêm sequências de caracteres ou destinos de consulta, como, por exemplo, o seguinte:
https://example.com/this/is/a/path?query#target
Python possui análise de URL em sua biblioteca padrão; é mais fácil deixar fazer isso. Por exemplo,
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])
Você pode compactar isso em um único python3 -c
para uso em um shell script:
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])'
(Você também pode manter o script dividido, para facilitar a leitura. '
Permitirá inserir novas linhas.)
Obviamente, agora seu script shell depende do Python.
(Estou um pouco inseguro sobre se isso tenta lidar com casos em que o componente do caminho da URL é a raiz ( /
); ajuste / teste se isso for importante para você.)