जवाबों:
इसे इस्तेमाल करे:
$ LOCATION=`curl -I http://raspberrypi.stackexchange.com/a/1521/86 | perl -n -e '/^Location: (.*)$/ && print "$1\n"'`
$ echo "$LOCATION"
/questions/1508/how-do-i-access-the-distributions-name-on-the-command-line/1521#1521
Google पुनर्निर्देशित URL थोड़े अलग हैं। वे एक जावास्क्रिप्ट पुनर्निर्देशित करते हैं, जिसे आसानी से संसाधित किया जा सकता है, लेकिन मूल URL को संसाधित करने और सभी को एक साथ कर्ल करने के लिए क्यों नहीं?
$ URL="http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CFAQFjAA&url=http%3A%2F%2Fwww.raspberrypi.org%2F&ei=rv8oUODIIMvKswa4xoHQAg&usg=AFQjCNEBMoebclm0Gk0LCZIStJbF04U1cQ"
$ LOCATION=`echo "$URL" | perl -n -e '/url=([a-zA-Z0-9%\.]*)/ && print "$1\n"'`
$ echo "$LOCATION"
http%3A%2F%2Fwww.raspberrypi.org%2F
$ echo "$LOCATION" | perl -pe 's/%([0-9a-f]{2})/sprintf("%s", pack("H2",$1))/eig'
http://www.raspberrypi.org/
और भी आसान तरीका है
curl -w "%{url_effective}\n" -I -L -s -S $URL -o /dev/null
यह प्रिंट होगा
http://raspberrypi.stackexchange.com/questions/1508/how-do-i-access-the-distributions-name-on-the-command-line/1521
URL के लिए
http://raspberrypi.stackexchange.com/a/1521/86
कर्ल को रीडायरेक्ट का पालन करने और पूरा होने के बाद चर प्रिंट करने के लिए कॉन्फ़िगर किया जा सकता है। तो आप जो पूछते हैं वह निम्नलिखित कमांड से प्राप्त किया जा सकता है:
curl -Ls -w %{url_effective} -o /dev/null https://google.com
मैन पेज उस तरह के आवश्यक मापदंडों की व्याख्या करता है:
-L, --location Follow redirects (H)
-s, --silent Silent mode (don't output anything)
-w, --write-out FORMAT Use output FORMAT after completion
-o, --output FILE Write to FILE instead of stdout
या यह कोशिश करो
curl -s -o /dev/null -I -w "HTTP_CODE: %{http_code}\nREDIRECT_URL: %{redirect_url}\n" http://raspberrypi.stackexchange.com/a/1521/86
curl -s -I 'http://yoururl'
की सामग्री का अध्ययन कर सकते हैं curl -s 'http://yoururl'
(आप देखेंगे कि Google पुनर्निर्देशन के लिए एक सरल जावास्क्रिप्ट का उपयोग करता है)।
पैरामीटर -L (--location)
और -I (--head)
अभी भी स्थान-url के लिए अनावश्यक HEAD-request कर रहे हैं।
यदि आप सुनिश्चित हैं कि आपके पास एक से अधिक रीडायरेक्ट नहीं होंगे, तो बेहतर होगा कि फॉलो लोकेशन को डिसेबल करें और कर्ल-वैरिएबल% {redirect_url} का उपयोग करें।
यह कोड निर्दिष्ट URL में केवल एक हीड-अनुरोध करता है और स्थान-हेडर से पुनर्निर्देशन लेता है:
curl --head --silent --write-out "%{redirect_url}\n" --output /dev/null "https://goo.gl/QeJeQ4"