ハッシュ

ハッシュ

このリンクをブラウザに入れると:

https://unix.stackexchange.com/q/453740#453743

次を返します。

https://unix.stackexchange.com/questions/453740/installing-busybox-for-ubuntu#453743

ただし、cURL はハッシュ値を削除します。

$ curl -I https://unix.stackexchange.com/q/453740#453743
HTTP/2 302
cache-control: no-cache, no-store, must-revalidate
content-type: text/html; charset=utf-8
location: /questions/453740/installing-busybox-for-ubuntu

結果URLのハッシュを保存するためのcURLオプションはありますか?デフォルトでは、ブラウザのようにURLを解析するスクリプトを作成しようとしています。これまで持っているスクリプトは次のとおりですが、URLにハッシュが含まれていると機能が停止します。

$ set https://unix.stackexchange.com/q/453740#453743
$ curl -L -s -o /dev/null -w %{url_effective} "$1"
https://unix.stackexchange.com/questions/453740/installing-busybox-for-ubuntu

ベストアンサー1

カールのダウンロードみんなページ。
Aは#以下を指す。分割

どちらも互換性がありません。


ハッシュ

このシンボルは、#Webページ全体の場所を表示するためにWebリンクの末尾に使用されます。

  • フラグメント URL

    ...HTML文書でアンカーポイントを参照するための「断片URL」という規則です。

  • リンクにポンド記号「#」があるとはどういう意味ですか?

    これは「フラグメント」または「名前付きアンカー」です。文書の一部へのリンクを使用できます。

  • ウィキペディア: URL(Uniform Resource Locator)

    ハッシュ(#)が前にあるオプションのフラグメントコンポーネントです。フラグメントには、URI の残りの部分として識別される記事のセクションタイトルなどの補助リソースの表示を提供するフラグメント識別子が含まれています。基本リソースがHTML文書の場合、フラグメントは通常、Webブラウザがスクロールして表示できる特定の要素のid属性です。

主な用途は、「プレゼンテーションレイヤー」(表示されるコンテンツ)をプロジェクトの先頭に移動することです。

カール

カールには「プレゼンテーションレイヤー」はありません。カールの目的は、ページの一部または一部ではなくページ全体をダウンロードすることです。したがって、カールの「フラグメント」タグは役に立ちません。カールでは無視されます。

解決策

(リダイレクトされた)リンクにタグを再リンクします。

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"

以下を印刷します。

https://unix.stackexchange.com/questions/453740/installing-busybox-for-ubuntu#453743

より速い回避策は、ページをダウンロードしないことです。/dev/nullとにかくリダイレ​​クトされます。そのオプションを削除し-L(最初の)リダイレクトに従って、リンクが何であるかを尋ねます。最初のリダイレクトは、この場合と他のほとんどの場合に機能します。

wholepage=$(curl -so /dev/null -w %{redirect_url} "$originallink")

おすすめ記事