컬 -O: 특정 디렉터리에 파일을 다운로드할 수 없는 이유는 무엇입니까? [폐쇄]

컬 -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

당신은 또한 사용할 수 있습니다라이브러리 컬도서관, 어쩌면 어딘가에서스크립팅 언어(좋다장난,파이썬,루아,진주등...) 또는 컴파일러에 의해 구현된 언어(Rust, Go, C++, C, Ocaml...)로 작성된 프로그램에서. 다른 HTTP 클라이언트 라이브러리(HTTP 서버 라이브러리도 포함)를 찾을 수도 있습니다.

컬 디자이너가 더 많은 기능과 부가 기능을 생각하지 않은 이유에 대해 읽어보십시오.유닉스 철학. curl한 가지 일만 수행하지만 그 일을 잘 수행하는 명령줄 소프트웨어입니다. incurl더 많은 기능을 얻으려면 다른 유틸리티(아마도 위의 스크립트처럼 간단함) 와 결합하거나 래핑할 수 있습니다 . 안타깝게도 curl모닝커피도 만들어드릴 수 없습니다.

추신. 나는 당신이 Linux, MacOSX, AIX와 같은 POSIX 또는 Unix 계열 운영 체제를 사용하고 있다고 가정합니다.

답변2

왜냐면 그렇게 설계되었기 때문이죠 curl.

그러나 쉘 리디렉션을 통해 출력 디렉터리에 계속 쓸 수 있습니다. 예:

$ curl http://example.com/file > /path/to/destination/file

관련 정보