La mayoría de las respuestas publicadas no son sólidas en las URL que contienen cadenas de consulta u objetivos, como, por ejemplo, lo siguiente:
https://example.com/this/is/a/path?query#target
Python tiene análisis de URL en su biblioteca estándar; Es más fácil dejarlo hacerlo. P.ej,
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])
Puede compactarlo en un solo python3 -c
para usar en un script de shell:
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])'
(También puede mantener el guión desglosado, también, para '
facilitar la lectura. Le permitirá poner nuevas líneas).
Por supuesto, ahora su script de shell depende de Python.
(Estoy un poco inseguro sobre si trata de manejar casos donde el componente de ruta de la URL es la raíz ( /
); ajustar / probar si eso es importante para usted).