개요
서버 환경이나 개발 실무에서 빠질 수 없는 필수 네트워크 도구인 curl 명령어의 핵심 사용법을 소개합니다. 기본 웹 요청부터 REST API 호출, 헤더 분석, 백그라운드 파일 전송까지 실무에서 매일 쓰이는 실전 예제를 단계별로 살펴봅니다.
1. 환경 준비 및 웹 응답 데이터 확인하기 (GET 요청)
curl 실습 진행을 위해 패키지 목록을 최신화하고 curl 패키지를 설치합니다.

curl 명령어는 네트워크를 통해 URL 기반으로 데이터를 전송하거나 받아오는 도구입니다.
별도의 옵션 없이 URL을 지정하면 대상 서버로 기본 HTTP GET 요청을 보내고 응답 본문을 터미널 화면에 그대로 출력합니다.
⚙️ [주요 옵션]
-s : 진행 상황 표시줄이나 에러 메시지를 출력하지 않는 조용한 모드(silent)로 실행합니다.-i : 응답 본문과 함께 서버가 반환한 HTTP 응답 헤더를 함께 출력합니다.-I : 응답 본문 없이 HTTP 응답 헤더 정보만 가져와 출력합니다.-X : GET, POST, PUT, DELETE 등 사용할 HTTP 요청 메서드를 직접 지정합니다.-d : HTTP POST 요청 시 서버로 전송할 본문 데이터(body)를 전달합니다.-H : 요청 시 커스텀 HTTP 헤더를 추가하여 전송합니다.-o : 다운로드한 응답 데이터를 지정한 파일 이름으로 저장합니다.-O : 원격 서버의 파일 이름과 동일한 이름으로 로컬에 저장합니다.-C - : 중단된 대용량 파일 다운로드를 이어받기(resume) 방식으로 재개합니다.-L : 서버에서 3xx 리다이렉트 응답을 반환할 경우 최종 목적지 URL까지 자동으로 따라갑니다.

-s 옵션은 진행률 바(progress meter)나 오류 메시지를 숨기고 순수 응답 결과 데이터만 깔끔하게 출력합니다.
불필요한 출력 정보를 제거하므로 쉘 스크립트 작성이나 다른 명령어와 파이프라인(|)으로 연계할 때 유용합니다.

2. HTTP 응답 헤더 및 상태 코드 분석하기
-I 옵션을 사용하면 응답 본문(body)을 다운로드하지 않고 서버의 HTTP 응답 헤더 정보만 빠르게 조회합니다.
서버 상태 코드(예: HTTP/2 200), 콘텐츠 타입, 서버 종류 등을 점검할 때 네트워크 대역폭을 낭비하지 않고 신속하게 확인할 수 있습니다.

-i 옵션은 서버로부터 전달받은 HTTP 응답 헤더와 실제 응답 본문 데이터를 한 화면에 함께 출력합니다.
헤더 정보와 응답 본문 데이터를 동시에 대조하며 API 응답 결과를 분석하거나 디버깅할 때 유용합니다.

-s 옵션으로 진행 상태 표시를 숨기고, -o /dev/null로 응답 본문을 버린 뒤, -w 옵션을 통해 원하는 포맷의 HTTP 상태 코드만 추출합니다.
서버의 정상 동작 여부를 확인하는 헬스 체크나 쉘 스크립트 기반 자동화 로직에서 조건 분기를 처리할 때 핵심적으로 활용됩니다.

3. REST API 데이터 전송 및 인증 처리 (POST/JSON 요청)
API 응답으로 반환되는 JSON 데이터를 터미널에서 가독성 높게 파싱하고 다루기 위해 jq 패키지를 설치합니다.

-X POST로 HTTP 메서드를 지정하고, -H 옵션으로 JSON 헤더(Content-Type: application/json)를 추가한 뒤 -d로 JSON 데이터를 전송합니다.
서버로 전달한 JSON 페이로드가 정상 수신되었는지 파이프라인(|)과 jq 명령어를 통해 응답 본문에서 직관적으로 확인합니다.

-H 옵션을 활용하여 Authorization: Bearer <토큰> 인증 헤더를 요청에 포함해 전송합니다.
토큰 기반 인증(JWT, API Key 등)을 요구하는 보호된 API 엔드포인트 호출 시 필요한 인증 정보가 올바르게 전달되었는지 확인합니다.

4. 대용량 파일 다운로드 및 전송 관리 (이어받기/진행률)
파일 다운로드 실습을 위한 작업 디렉터리를 생성하고 해당 위치로 이동합니다.

-o 옵션을 사용하여 원격 서버에서 내려받은 바이너리 데이터를 sample-100k.bin이라는 지정된 파일 이름으로 저장합니다.
터미널 화면에 바이너리 내용이 직접 출력되는 현상을 방지하고 원하는 파일명으로 결과를 안전하게 보관할 수 있습니다.

-C - 옵션을 지정하여 기존 파일의 크기를 자동으로 확인하고 중단된 위치부터 이어받기를 수행하며, -O 옵션을 함께 사용하여 원격 파일명 그대로 저장합니다.
네트워크 연결이 불안정하거나 대용량 파일을 다운로드할 때 처음부터 다시 받지 않고 효율적으로 전송을 이어갈 수 있습니다.

ls -lh 명령어로 다운로드한 sample-100k.bin 파일의 크기와 상세 정보를 확인하여 요청한 용량만큼 온전하게 저장되었는지 검증합니다.

지금까지 리눅스 curl 명령어의 기본 사용법부터 실무 API 테스트와 대용량 파일 다운로드 방법까지 간단하게 정리해보았습니다.
알려드린 핵심 옵션들을 실무 작업과 쉘 스크립트 자동화에 적극 활용해 효율적인 개발 환경을 구축해 보시기 바랍니다.