이 "wget" 명령과 유사하게 수행되는 동등한 "curl" 명령을 어떻게 실행할 수 있습니까?

이 "wget" 명령과 유사하게 수행되는 동등한 "curl" 명령을 어떻게 실행할 수 있습니까?

나는wget명령:

wget -r --no-parent -nH -nd -q --show-progress --progress=bar:force ftp://ftp.ncdc.noaa.gov/pub/data/swdi/database-csv/v2/

하지만 최신 버전의 wget. 불행하게도 나는 (darwin14.3.0에 구축된 GNU Wget 1.15)의 이전 버전을 가지고 있는데 wget업그레이드할 수 없습니다. 특히 wget --show-progress인식되지 않는 옵션 입니다 .

이에 상응하는 명령이 있는지 궁금합니다.curl? curl내 시스템 의 버전은 7.37.1(x86_64-apple-darwin14.0)입니다.

답변1

하지만 최신 버전의 wget. 불행하게도 나는 (darwin14.3.0에 구축된 GNU Wget 1.15)의 이전 버전을 가지고 있는데 wget업그레이드할 수 없습니다. 특히 wget --show-progress 인식되지 않는 옵션 입니다 .

curl작동 방식과 작동 방식에 대해 내가 알고 있는 내용에 따르면 표면적으로 는 wget동일해 보일 수 있지만 . 이와 같은 작업을 수행하려면 명령을 둘러싸는 멋진 Bash 스크립팅이 필요합니다 .wgetcurlcurlcurl

그렇다면 업그레이드할 수 없다는 것은 wget정확히 무엇을 의미합니까? GNU 도구 이므로 wgetDarwin(BSD 기반)과 함께 설치되지 않으며 소스에서 컴파일되는 경우가 많습니다. 실제로 귀하가 제공한 버전 세부 정보는 해당 버전이 "darwin14.3.0을 기반으로 구축된 GNU Wget 1.15"이기 때문에 어떤 방식으로든 소스에서 명확하게 컴파일된 것입니다. 따라서 해당 버전이 wget다음과 같은 방법으로 설치되었다면홈브류, Homebrew가 시스템에 있다면 Xcode 및 관련 명령줄 도구/컴파일러도 시스템에 설치되어 있어야 하므로 희망이 있습니다.

wget이제 이를 알았으니 소스에서 업데이트된 버전(예: 1.16.3) 을 컴파일할 수 있어야 합니다 . Homebrew 설치 버전을 우회하고 홈 디렉터리에서 실행 가능하게 만듭니다. 귀하에게는 이 작업을 수행할 수 있는 권한이 root없습니다 . sudo방법은 다음과 같습니다.

wget소스에서 컴파일 .

먼저 공식 wget소스 사이트에서 압축된 아카이브를 가져옵니다.

curl -O http://ftp.gnu.org/gnu/wget/wget-1.16.3.tar.gz

다음으로, 다음과 같이 아카이브의 압축을 풉니다.

tar -xzf wget-1.*.tar.gz

이제 압축이 풀린 디렉터리로 이동합니다.

cd wget-1.*

다음 configure명령을 실행하세요:

./configure --with-ssl=openssl

해당 명령이 실패하면 다음과 같은 값을 configure추가해야 할 수도 있습니다 --with-libssl-prefix.

./configure --with-ssl=openssl --with-libssl-prefix=/usr/lib

configure프로세스가 완료 되면 다음을 실행합니다 make.

make

정상적으로 실행되면 새로 컴파일된 1.16.3 바이너리 버전을 wget사용할 준비가 된 것입니다.

wget홈 디렉터리에서 새로 컴파일된 버전을 실행합니다 .

이제 이 시점에서 대부분의 지침은 시스템에 완전히 설치 sudo make install하려면 실행해야 한다고 말합니다 . 그러나 / 권한이 wget없거나 시스템 전체에 설치된 버전을 업그레이드하고 싶지 않은 경우에도 방금 컴파일한 바이너리를 이와 같이 실행할 수 있습니다. 먼저 다음과 같이 소스 디렉터리 에서 돌아가겠습니다 .rootsudowgetwgetwget

cd ~/

이제 wget다음과 같이 명시적으로 컴파일한 1.16.3 바이너리를 실행하여 제대로 작동하는지 확인하세요.

~/wget-1.16.3/src/wget --version

출력은 다음과 같아야 합니다.

GNU Wget 1.16.3 built on darwin13.4.0.

+digest +https +ipv6 -iri +large-file -nls +ntlm +opie -psl +ssl/openssl 

Wgetrc: 
    /usr/local/etc/wgetrc (system)
Compile: 
    gcc -DHAVE_CONFIG_H -DSYSTEM_WGETRC="/usr/local/etc/wgetrc" 
    -DLOCALEDIR="/usr/local/share/locale" -I. -I../lib -I../lib 
    -DNDEBUG 
Link: 
    gcc -DNDEBUG -liconv -lssl -lcrypto -ldl -lz ftp-opie.o openssl.o 
    http-ntlm.o ../lib/libgnu.a 

Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://www.gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Originally written by Hrvoje Niksic <[email protected]>.
Please send bug reports and questions to <[email protected]>.

이는 귀하가 현재 사업을 하고 있다는 것을 의미합니다!

wget홈 디렉터리에서 명령을 실행합니다 .

이제 wget다음과 같이 질문에 게시된 명령을 실행할 수 있습니다.

~/wget-1.16.3/src/wget -r --no-parent -nH -nd -q --show-progress --progress=bar:force ftp://ftp.ncdc.noaa.gov/pub/data/swdi/database-csv/v2/

그리고 주목할 만한 작은 변화는 많은 wget옵션에 전체 이름과 단축 약어가 있다는 것입니다. 따라서 명령을 다음과 같이 --no-parent단축할 수 있습니다 .-np

~/wget-1.16.3/src/wget -r -np -nH -nd -q --show-progress --progress=bar:force ftp://ftp.ncdc.noaa.gov/pub/data/swdi/database-csv/v2/

사용 후 정리.

그리고 방금 컴파일한 1.16.3 항목을 제거하려면 wget(작업 중인 컴퓨터가 귀하의 것이 아니라고 말했기 때문에) wget방금 ​​작업한 소스 파일을 다음과 같이 삭제하면 됩니다.

rm wget-1.16.3.tar.gz
rm -rf wget-1.16.3

관련 정보