項目は次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の哲学。curl
1つのことだけを行いますが、それをうまく実行するコマンドラインソフトウェアです。incurl
より多くの機能を得るには、他のユーティリティ(おそらく上記のスクリプトのように簡単)と組み合わせたりラップしたりできます。残念ながらcurl
モーニングコーヒーも作れません。
PS。私は、Linux、MacOSX、AIXなどのPOSIXまたはUnixファミリーのオペレーティングシステムを使用しているとします。