curlでURLに
例えば curlリリースページからリンクされているファイル curl-7.61.1.tar.bz2.asc
をダウンロードしようとしたとき、
curl -L -O \
https://github.com/curl/curl/releases/download/curl-7_61_1/curl-7.61.1.tar.bz2.asc
とすればカレントディレクトリに curl-7.61.1.tar.bz2.asc
というファイル名でダウンロードされますが、このURLの末尾に #/custom-named-file
を付与して
curl -L -O \
https://github.com/curl/curl/releases/download/curl-7_61_1/curl-7.61.1.tar.bz2.asc#/custom-named-file
とすると custom-named-file
というファイル名でダウンロードされます。
これは何か公の仕様に則った挙動なのでしょうか(その場合何かこの仕様を調べるのに利用できる単語/キーワードはあるでしょうか)。
あるいはcurlの独自機能なのでしょうか。
(補足)
本件に疑問を持った発端は、 PowerShell 5.1で WebRequest
を利用する場合も上記curlと同じような挙動を示すのに対し、 PowerShell Core 6.1.0 では そのようなURLを渡すとステータスコード400エラー(Bad Request)になるのを見つけたことからです(参考)。
「正当」という言葉の意味が曖昧だ、というコメントを頂きましたので追記致します。
Web系開発者から見て、curlの今回の挙動は、当然そうなるだろうというものなのか、いやいやおかしいだろうというものなのかが知りたいです。
(そしてそう考える根拠がもしあるのなら、それも知りたいです)
また本件について自分でも調べようとしたのですが、 #/
を検索キーワードとして入力しても有用な情報が何も得られないので、もし呼び方があるのなら教えて下さい。
「補足」で触れていますが、PowrShell5.1では #/name
を受け入れ6.1ではエラーとなる、という挙動に気付いたのが発端なのですが、
#/name
ってcurlでちゃんと処理できてるじゃん(PowerShell6バグってんのかよ)…ん?そもそもこれって何なんだっけ?、というのが質問の根本です。