Réponses:
Essaye ça:
$ 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
Les URL de redirection Google sont légèrement différentes. Ils renvoient une redirection Javascript, qui pourrait facilement être traitée, mais pourquoi ne pas traiter l'URL d'origine et pour aller boucler tous ensemble?
$ 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/
Il existe un moyen encore plus simple
curl -w "%{url_effective}\n" -I -L -s -S $URL -o /dev/null
il imprimerait
http://raspberrypi.stackexchange.com/questions/1508/how-do-i-access-the-distributions-name-on-the-command-line/1521
pour l'URL
http://raspberrypi.stackexchange.com/a/1521/86
curl peut être configuré pour suivre les redirections et imprimer les variables après la fin. Donc, ce que vous demandez peut être réalisé avec la commande suivante:
curl -Ls -w %{url_effective} -o /dev/null https://google.com
La page de manuel explique les paramètres nécessaires comme ça:
-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
ou essayez ceci
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'
et le contenu de la réponse avec curl -s 'http://yoururl'
(vous verrez que Google utilise un simple javascript pour la redirection).
Les paramètres -L (--location)
et -I (--head)
toujours faire HEAD-demande inutile à l'emplacement-url.
Si vous êtes sûr de ne pas avoir plus d'une redirection, il est préférable de désactiver la localisation de suivi et d'utiliser une variable curl% {redirect_url}.
Ce code ne fait qu'une seule requête HEAD à l'URL spécifiée et prend redirect_url de location-header:
curl --head --silent --write-out "%{redirect_url}\n" --output /dev/null "https://goo.gl/QeJeQ4"