Hầu hết các câu trả lời được đăng không mạnh mẽ trên các URL chứa chuỗi truy vấn hoặc mục tiêu, chẳng hạn như, ví dụ như sau:
https://example.com/this/is/a/path?query#target
Python có phân tích cú pháp URL trong thư viện chuẩn của nó; dễ dàng hơn để cho nó làm điều đó. Ví dụ,
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])
Bạn có thể nén nó thành một python3 -c
để sử dụng trong tập lệnh 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])'
(Bạn cũng có thể giữ tập lệnh bị hỏng, vì tính dễ đọc. '
Sẽ cho phép bạn đặt dòng mới vào.)
Tất nhiên, bây giờ tập lệnh shell của bạn có sự phụ thuộc vào Python.
(Tôi không chắc lắm về việc nếu cố xử lý các trường hợp trong đó thành phần đường dẫn của URL là gốc ( /
); điều chỉnh / kiểm tra nếu điều đó quan trọng với bạn.)