Search
Duplicate
📗

CURL? 그게 대체 뭘까?

간단소개
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
Linux
Scrap
태그
9 more properties
Linux를 사용하다보면 개발에 필요한 여러 프로그램들을 curl명령어를 사용해서 설치하곤 한다. 아래의 코드는 vim-plug의 설치 코드이다.
$ curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
Shell
복사
그런데 이때 사용하는 curl, 대체 의미하는게 무엇일까?
curl은 Client URL의 약자로 서버와 통신할 수 있는 명령어 툴이다.
즉, 우리가 URL을 가지고 할 수 있는 것들은 다 할수 있다. 지원하는 프로토콜들을 이용해 서버에 데이터를 보내거나 가져올 때 사용하는 도구이다. 예를들면 http프로토콜을 이용해 웹 페이지의 소스를 가져온다거나 파일을 다운받을 수 있다. ftp 프로토콜을 이용해서는 파일을 받을 수 있을 뿐 아니라 올릴 수도 있다. 심지어 SMTP 프로토콜을 이용하면 메일도 보낼 수 있다
다양한 지원 프로토콜들
DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, Telnet, TFTP
맥에서는 기본적으로 curl 명령어를 지원한다. 일반적으로 설치되어 있지만 설지되어 있지 않다면 아래의 명령어를 사용해 설치할 수도 있다.
$ sudo apt-get install curl
Shell
복사
설치 후 아래와 같이 출력되면 정상이다.
$ curl --version curl 7.64.1 (x86_64-apple-darwin20.0) libcurl/7.64.1 (SecureTransport) LibreSSL/2.8.3 zlib/1.2.11 nghttp2/1.41.0 Release-Date: 2019-03-27
Shell
복사
일반적인 리눅스 명령어와 마찬가지로 man 명령어를 사용해 매뉴얼을 볼 수 있다.
$ man curl
Shell
복사

CURL명령어 사용법

이제 아래와 같은 형태로 curl명령어를 사용할 수 있다.
$ curl [option] End-Point/...
Shell
복사
Search
CURL명령어 옵션들
short
long
설명
—head
HTTP header 만 보여주고 content 는 표시하지 않는다
—dump-header <file>
<file> 에 HTTP header 를 기록한다.
—location
서버에서 HTTP 301 이나 HTTP 302 응답이 왔을 경우 redirection URL 로 따라간다. -max-redirs 뒤에 숫자로 redirection 을 몇 번 따라갈지 지정할 수 있다. 기본 값은 50이다
—data
HTTP Post data
—verbose
동작하면서 자세한 옵션을 출력한다.
—remote-header-name
어떤 웹서비스는 파일 다운로드시 Content-Disposition Header 를 파싱해야 정확한 파일이름을 알 수 있을 경우가 있다. -J 옵션을 주면 헤더에 있는 파일 이름으로 저장한다.
—output <file>
curl 은 remote 에서 받아온 데이타를 기본적으로는 콘솔에 출력한다. -o 옵션 뒤에 FILE 을 적어주면 해당 FILE 로 저장한다. (download 시 유용)
—remote-name
file 저장시 remote 의 file 이름으로 저장한다. -o 옵션보다 편리하다.
—silent
정숙 모드. 진행 내역이나 메시지등을 출력하지 않는다. -o 옵션으로 remote data 도 /dev/null 로 보내면 결과물도 출력되지 않는다
—request
Request 시 사용할 method 종류(GET, POST, PUT, PATCH, DELETE) 를 기술한다.

CURL을 사용해서 응답을 파일에 쓰기

$ curl http://example.com/resourece > foo.txt
Shell
복사
옵션없이 사용하는 curl 명령어는 표준 출력으로 응답을 출력하는데 리다이렉션을 활용해서 파일로 저장할 수 있다.

CURL을 사용해서 파일 다운로드하기!

특정 파일을 다운받고 싶을때, curl 명령어를 활용해서 다운로드 할 수 있다.
$ curl -o foo.txt http://example.com/foo.txt
Shell
복사
-O 옵션을 사용하면 리소스의 파일명을 그대로 사용한다.
여러파일을 한번에 다운로드 받을 수도 있다! 아래의 코드를 보자.
$ curl -O http://example.com/foo-[a-z][0-9].txt $ curl -O http://example.com/{foo,bar,baz}.txt
Shell
복사
curl과 유사하지만 파일 다운로드에 특화된 wget명령어가 있다. 자세한 내용은 아래의 링크에서 알아보자

<출처>