먼저, curl 은 커맨드 라인에서 URL 형태의 리소스를 요청/응답할 수 있는 도구다.
전체 매뉴얼은 커맨드 라인에서 man curl
을 호출해 볼 수 있고,
curl 사이트의 문서 페이지 (http://curl.haxx.se/docs/manpage.html) 에서도 확인할 수 있다. 아래는 몇 가지 옵션을 사용한 유용한 예제이다.
$ curl http://example.com/resource > foo.txt
옵션 없이 호출하는 curl 커맨드는 표준 출력으로 응답을 출력하는데, 위와 같이 출력을 리다이렉트해서 파일에 쓸 수 있다.
$ curl -o foo.txt http://example.com/foo.txt
-o 옵션으로 리소스의 파일명을 지정해 다운로드할 수 있다.
$ curl -O http://example.com/foo.txt
-O 옵션을 사용하는 경우, 리소스의 파일명을 그대로 사용한다.
$ curl -O http://example.com/foo[0-9].txt
위 코드는, foo0.txt 부터 foo9.txt 파일을 다운로드 받는다.
$ curl -O http://example.com/foo-[a-z][0-9].txt
[]는 여러 번 조합할 수 있고, 위 코드는 foo-a0.txt 부터 foo-z9.txt 까지의 파일을 다운로드 받는다.
$ curl -O http://example.com/{foo,bar,baz}.txt
중괄호({})를 써서 위와 같이 호출할 수도 있고, foo.txt, bar.txt, baz.txt 를 다운로드 받는다.
$ files="foo bar baz"
$ for name in files; do
curl -O "http://example.com/${name}.txt"
done
싱글 라인으로 호출하는 경우, 가끔 제대로 다운로드 받아지지 않는 경우가 있는 것 같다.
왜인지 정확히 살펴보진 않았지만, 위와 같이 for 구문으로 호출하는 방법으로 우회할 수 있다.
덧) 리눅스 기반에서는 curl 대신, wget 이 설치되어 있고, 사용 방법은 대체로 비슷하다.
참고:
- wget vs curl: http://www.thegeekstuff.com/2012/07/wget-curl/
- Single line command line to download multiple files: http://lists.apple.com/archives/macos-x-server/2004/Nov/msg01211.html