CLI (command line interface)로 URL을 통해,
특정 자원(resource. 주로 설치파일이나 image등)을 웹으로부터 가져와 저장하는 tool.
엄밀히 말하면 다운로드만 하는 건 아님.
다양한 프로토콜들(http, https, ftp, pop3 등)을 이용해
URL 로 데이터를 전송하여
서버에 데이터를 보내거나 가져오기 위해 사용되는
CLI 기반 프로그램.
curl관련 사이트는 다음과 같음
http://curl.haxx.se/docs/manpage.html
워낙 널리 사용되는 프로그램이라 man curl 로 참고해도 차고 넘침.
가장 많이 애용되는 방법들은 다음과 같음.
특정 resource를 다운로드.
curl http://example.com/resource > target.ext
http://example.com/resource
의 url의 자원을 다운로드 받아- target.ext 라는 파일에 저장.
curl
은 아무 option없이 사용될 경우, stdout
(표준출력. 흔히 모니터)로 지정한 url의 resource를 출력함.
때문에 보통 redirection
>
을 사용하여 파일로 저장.
option으로 파일명을 지정하여 저장
curl -o target.ext http://example.com/resource
-o
: lowercase o 의 경우, output 파일명을 지정할 수 있음.-O
: uppercase O 의 경우, 다운로드하는 resource의 이름 그대로 저장됨.-o-
: stdout 으로 출력이 이루어짐. 아무 option을 주지 않은 아까의 경우와 같음.
복수의 파일을 다운로드.
-O option 과 url의 쌍을 여러개 기술하면 된다.
아니면, 정규표현식 (regex)를 사용하여 복수의 resource를 지정할 수 있다.
가장 많이 사용되는 방식은 curly bracket을 사용한 다음의 방법임.
curl -O http://example.com/{file0,file1,file2}.ext
file0.ext
,file1.ext
,file2.ext
-O
: uppercase O 를 사용했기 때문에 원래 자원의 이름으로 저장됨을 기억할 것.
아래는 regex를 이용하여 같은 동작이 이루어지도록 한 방법임.
curl -O http://example.com/file[0-2].ext
그 외의 options
curl은 URL에 해당하는 resource를 서비스하고 있는 서버에 특정 header나 메서드 등을 지정할 수 있다.
RESTful API 개발 등을 할 때 테스트용으로 사용됨.
-H : 서버에 보내는 request의 header를 지정.
-i : 서버의 response 중 header만을 처리하겠다는 옵션. stdout등에 http 응답코드등만 출력되게 됨.
-X : 사용할 method 지정, HTTP에서 지원하는 GET, PUT, POST, PATCH, DELETE, OPTIONS 들 중 하나로 지정됨.
-d : HTTP의 POST 요청시 서버로 보내는 내용을 지정하는데 사용되는 옵션.
-L : 지정될 경우, HTTP 301, 302 response의 리디렉션 URL로 이동이 허용됨. *
-b : 뒤에 놓이는 cookie file을 전송.
-sc : silent 상태로 뒤에 놓이는 파일명으로 cookie를 받아 저장함.
-f : --fail : 요청이 실패(서버가 4xx 또는 5xx의 상태코드 반환)했을 때, 아무 출력도 내지않고 종료함. *
-s : --silent : pregress 표시 없이 아무 출력을 내보내지 않고 실행됨. *
-S : --show-error : silent 모드로 설치하더라도 오류 메시지를 출력하라고 지시함. *
다음의 예는 localhost의 8080 포트로 data 라는 리소스에 POST로 JSON 데이터를 전송.
curl -d '{"key0":"value0", "key1":"value1"}' \
-H "Content-Type: application/json" \
-X POST http://localhost:8080/data
참고하면 좋은 자료들
https://www.thegeekstuff.com/2012/04/curl-examples/
https://www.thegeekstuff.com/2012/07/wget-curl/
'utils' 카테고리의 다른 글
[vim] Neovim 설치 : A Project that seeks to extend Vim. (0) | 2024.01.01 |
---|---|
[Tool] DeepL 사용하기. (1) | 2023.12.09 |
[Util] Windows Terminal (0) | 2023.09.05 |
[vscode] cSpell extension : Code Spell Checker (0) | 2023.08.04 |
[Vim] substitution (치환, 교체, replace) (0) | 2023.07.14 |