Curl download de páginas whole .
Um #
aponta para um fragmento .
Ambos não são compatíveis.
hash
O símbolo #
é usado no final de um link de página da web para marcar uma posição dentro de uma página da web inteira.
-
...convention called "fragment URLs" to refer to anchors within an HTML document.
-
O que acontece quando um link tem um sinal "#" no
It's a "fragment" or "named anchor". You can you use to link to part of a document.
-
Wikipedia: Localizador Uniforme de Recursos (URL)
An optional fragment component preceded by an hash (#). The fragment contains a fragment identifier providing direction to a secondary resource, such as a section heading in an article identified by the remainder of the URI. When the primary resource is an HTML document, the fragment is often an id attribute of a specific element, and web browsers will scroll this element into view.
Seu principal uso é mover a "camada de apresentação" (o que é exibido) para o início de um item.
curl
Não há "camada de apresentação" no curl, seu objetivo é baixar páginas inteiras, não partes ou fragmentos de páginas. Portanto, não há uso para um marcador de "fragmento" em ondulação. É simplesmente ignorado pela onda.
Solução alternativa
Adicione novamente a tag ao link (redirecionado):
originallink='https://unix.stackexchange.com/q/453740#453743'
wholepage=$(curl -Lso /dev/null -w %{url_effective} "$originallink")
if [ "$originallink" != "${originallink##*#}" ]; then
newlink=$wholepage#${originallink##*#}
else
echo "link contains no segment"
newlink="$wholepage"
fi
echo "$newlink"
imprimirá:
https://unix.stackexchange.com/questions/453740/installing-busybox-for-ubuntu#453743
Uma solução bastante mais rápida é não baixar a página. Ele está sendo redirecionado para /dev/null
mesmo assim. Removendo a opção -L
e perguntando qual seria o link se o (primeiro) redirecionamento fosse seguido. O primeiro redirecionamento funciona neste caso e na maioria dos outros.
wholepage=$(curl -so /dev/null -w %{redirect_url} "$originallink")