Search
moon
sun
📗

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명령어가 있다. 자세한 내용은 아래의 링크에서 알아보자

<출처>