curl-O:特定のディレクトリにファイルをダウンロードできないのはなぜですか? [閉鎖]

curl-O:特定のディレクトリにファイルをダウンロードできないのはなぜですか? [閉鎖]

項目は次man curlのとおりですcurl -O

ファイルを別のディレクトリに保存するには、-O、--remote-nameフラグを使用してカールを呼び出す前に、現在の作業ディレクトリを変更する必要があります。

特定のディレクトリにファイルをダウンロードできないのに、なぜ特定のディレクトリcd /exampleにファイルをダウンロードするのですか?

私はこれがこのように可能であることを知っていますwget

wget -P /example https://example.com/file

しかし、なぜ機能しないのか疑問に思いますcurl

ベストアンサー1

特定のディレクトリにファイルをダウンロードできず、特定のディレクトリにファイルをダウンロードするためにcd /exampleを実行する必要があるのはなぜですか?

なぜならカールそれが設計された方法です。このためフリーソフトウェア、ソースコードをダウンロードして(使用することもできますgit clone https://github.com/curl/curl.git)、研究することができます。あなたは発見するでしょう目次(2)システムコールはまったく使用されません(Perlでコーディングされたテストスクリプトにのみ表示されます)。

cd使用する前にシェルで明示的に説明したくない場合は、curl他のものを使用するか、curlソースコードにパッチを適用してオプションを追加できます(たとえば、一部を許可するようにコードを改善できます)。--chdir ディレクトリ名プログラムオプションを選択してから電話をかけます。chdir システムコール;私の考えには努力する価値がありません。)毎瞬間覚えてくださいプロセス持っている私自身 タスクリスト(親プロセスから継承されます)また見ることができますバウチャー(7)そして、Linuxプログラミングブックを読んでください(古いですが、無料でダウンロードできます。アルカリ性ホスファターゼ;返品はじめに(2)&システムコール(2))

もちろん、curl絶対パスしか使用できません(使用を検討してください)。実際のパス(1)シェルスクリプトで、または実際のルート(3)Cプログラムから)..を得なさい。

また、より簡単にcurl一部を含めることもできます。シェルスクリプト必要に応じて行います。一部のincurl スクリプトは次のように簡単にできます。

#!/bin/sh
# this is your incurl shell script
cd "$1"
shift
exec curl "$@"

incurl /tmp/ -O foo http://example.com/path/foobar.txt たとえば、(そのURLから一部のコンテンツを取得するには)を使用します。/tmp/foo

また、使用することができますライブラリカール図書館、たぶんどこかでスクリプト言語(良いいたずらPythonルア真珠など...)またはコンパイラによって実装された言語(Rust、Go、C ++、C、Ocaml ...)で書かれたプログラム。他のHTTPクライアントライブラリ(HTTPサーバーライブラリも含む)を見つけることもできます。

カールデザイナーがより多くの機能とアドオンを考えていない理由について読んでください。Unixの哲学curl1つのことだけを行いますが、それをうまく実行するコマンドラインソフトウェアです。incurlより多くの機能を得るには、他のユーティリティ(おそらく上記のスクリプトのように簡単)と組み合わせたりラップしたりできます。残念ながらcurlモーニングコーヒーも作れません。

PS。私は、Linux、MacOSX、AIXなどのPOSIXまたはUnixファミリーのオペレーティングシステムを使用しているとします。

おすすめ記事