6. CLI 실전: 터미널에서 생산적으로 쓰는 법
6. CLI 실전: 터미널에서 생산적으로 쓰는 법
모델을 고르고 실행하는 데 익숙해졌다면, 이제 Ollama를 "채팅 장난감"이 아니라 "작업 도구"로 써 볼 차례다. GUI는 보기 좋지만, CLI는 연결하기 좋다. 한 줄 명령으로 프롬프트를 보내고, 다른 프로그램의 출력을 바로 넘기고, 결과를 파일로 남기고, 스크립트로 반복할 수 있다. 그래서 터미널을 익히면 Ollama는 갑자기 훨씬 강해진다.12

CLI가 강한 이유
터미널의 장점은 화려함이 아니라 조합력이다. 예를 들어 문서 파일을 읽어 요약하게 만들고, 그 결과를 summary.md에 저장하고, 매일 같은 작업을 스크립트로 자동 실행하게 만들 수 있다. GUI에서는 마우스로 여러 번 눌러야 할 일을, CLI에서는 한 줄로 묶을 수 있다.2
이 감각이 중요하다. ollama run은 단순한 대화 명령처럼 보이지만, 사실은 셸의 파이프, 리다이렉션, 파일, 스크립트와 이어 붙일 수 있는 입구다. 터미널은 무뚝뚝해 보여도, 일단 친해지면 꽤 성실한 비서다.
멀티라인 입력: 긴 문장을 겁내지 말자
처음 Ollama를 REPL로 쓰면 Enter를 누르는 순간 메시지가 전송되어 당황하기 쉽다. 실제로 초기 사용자들도 "줄바꿈 입력이 불편하다"는 이야기를 많이 남겼고, 현재 공식 문서에서는 삼중 큰따옴표(""")로 감싸는 멀티라인 입력 방식을 안내한다.31
>>> """아래 초안을 더 자연스럽게 다듬어 줘.
... 제목은 그대로 두고,
... 문장은 조금 더 간결하게 만들어 줘.
...
... 초안:
... 오늘 회의에서는 배포 일정과 오류 대응 방안을 논의했다.
... """이 방식은 메일 초안, 회의록, 코드 블록, 긴 에러 로그를 붙여 넣을 때 특히 편하다. 한 줄 질문만 주고받는 단계에서 벗어나, "문단 단위로 일시키는" 첫걸음이라고 생각하면 된다.
파일 내용을 프롬프트로 넘기기
실전에서는 내가 직접 타이핑하는 문장보다 파일 안에 있는 텍스트가 더 중요할 때가 많다. CLI가 빛나는 지점도 바로 여기다.2
가장 단순한 방법은 파일 내용을 프롬프트 안으로 끼워 넣는 것이다.
ollama run gemma3 "다음 문서를 5줄로 요약해 줘: $(cat report.txt)"이 방식은 짧은 파일에는 편하다. 다만 파일이 아주 길면 셸에서 다루기 불편해질 수 있다. 그럴 때는 파이프나 입력 리다이렉션이 더 낫다.
cat report.txt | ollama run gemma3 "핵심 주장 3개만 뽑아 줘."터미널을 조금만 더 활용하면 이런 일도 자연스럽다.
git diff | ollama run qwen3 "이 변경사항에서 버그 가능성이 있는 부분만 짚어 줘."이제 Ollama는 혼자 노는 채팅창이 아니라, 다른 명령의 결과를 받아 처리하는 텍스트 엔진이 된다. 개발자에게 이 차이는 꽤 크다. 복사해서 붙여 넣는 수고가 줄어들고, 같은 작업을 반복하기가 쉬워진다.
결과를 파일로 바로 저장하는 것도 간단하다.
ollama run gemma3 "오늘 작업 내용을 7줄 회고로 정리해 줘." > daily-review.md>는 새로 쓰기, >>는 뒤에 이어 쓰기다. 즉, CLI에서는 질문뿐 아니라 결과 관리까지 한 번에 할 수 있다.2
JSON 출력: 사람 말 대신 기계가 읽기 좋은 답 받기
자동화를 생각하기 시작하면 가장 먼저 필요한 것이 구조화된 출력이다. 사람은 문장을 읽으면 되지만, 스크립트는 필드가 필요하다. 그럴 때 --format json이 아주 유용하다.1
ollama run gemma3 --format json "다음 글을 분석해 줘. JSON으로만 답하고, fields는 title, sentiment, keywords 배열로 해 줘."여기서 중요한 요령이 하나 있다. --format json만 붙인다고 끝이 아니라, 프롬프트 안에서도 어떤 키가 필요한지 분명히 적어 주는 편이 안정적이다. 공식 구조화 출력 안내도 JSON 형식 제약과 함께 프롬프트에서 원하는 구조를 분명히 설명하라고 권한다.4
이렇게 받으면 다음 단계가 쉬워진다. 예를 들어 jq 같은 도구로 곧바로 후처리할 수 있다.
ollama run gemma3 --format json "JSON으로만 답해. fields: summary, score" | jq .REPL 안에서 작업 중이라면 세션 설정으로 JSON 형식을 켤 수도 있다.
>>> /set format json이후의 응답을 구조화된 형태로 받으면, CLI는 대화 도구에서 자동화 파이프라인의 부품으로 바뀐다.5
세션 제어: 대화를 끝내는 것과 모델을 내리는 것은 다르다
터미널에서 오래 일하다 보면 "지금 내가 끝낸 게 채팅인지, 세션인지, 메모리인지"가 헷갈리기 쉽다. 이 구분을 정확히 알아 두면 훨씬 편해진다.
REPL 안에서는 /help나 /?로 도움말을 보고, /clear로 현재 대화 문맥을 비우고, /bye로 세션을 종료할 수 있다. 또 /set system, /set format json, /set verbose처럼 세션의 성격을 바꾸는 명령도 쓸 수 있다.5
하지만 /bye는 어디까지나 대화 창에서 나오는 동작에 가깝다. 모델이 메모리에 남아 있는지는 별개다. 밖에서 확인하려면 ollama ps를 쓴다.16
ollama ps메모리에 올라온 모델을 내리고 싶다면 ollama stop을 사용한다.
ollama stop gemma3반대로 모델을 조금 더 오래 붙잡아 두고 싶다면 --keepalive가 편하다. 기본적으로는 일정 시간 유휴 상태가 지나면 언로드되지만, 예를 들어 30분 동안 유지하게 만들 수 있다.6
ollama run gemma3 --keepalive 30m "준비됐으면 ok만 답해."--keepalive 0은 요청 직후 바로 내리기, --keepalive -1은 계속 유지하기에 가깝다.6 짧게 말해, 세션 종료와 모델 언로드는 같은 버튼이 아니다.
verbose: 속도를 보는 눈을 기르자
모델이 "느리다"는 말은 생각보다 모호하다. 실제로 느린 것이 로딩인지, 프롬프트 해석인지, 답변 생성인지 구분해야 개선할 수 있다. 그래서 --verbose가 중요하다.6
ollama run gemma3 --verbose "2+2만 답해."응답 뒤에는 보통 total duration, load duration, prompt eval count, eval rate 같은 수치가 붙는다.6 이 숫자는 처음엔 낯설지만, 금방 읽는 법이 생긴다.
load duration이 유독 크다면 모델을 메모리에 올리는 시간이 많이 든다는 뜻이니 --keepalive가 도움이 될 수 있다. eval rate가 낮다면 모델이 현재 하드웨어에 비해 무겁거나 GPU 활용이 기대만큼 되지 않을 가능성을 의심해 볼 수 있다. 반대로 첫 응답만 느리고 두 번째부터 빨라진다면, 대부분은 "모델이 처음 로딩되느라 그랬구나"라고 이해하면 된다.
REPL 안에서는 /set verbose로 통계 출력을 켤 수 있다.5 다만 이것을 항상 기본값으로 켜 두는 전역 설정을 원하는 사용자 요청은 있었지만, 별도의 기본 옵션이 있느냐는 질문에는 그런 기능을 찾기 어렵다는 흐름이 남아 있다.7 그래서 실전에서는 필요할 때 --verbose 또는 /set verbose를 습관처럼 쓰는 편이 가장 확실하다.
터미널에서 바로 써먹는 루틴 세 가지
아래 세 가지는 CLI 감각을 가장 빨리 익히게 해 주는 연습이다.
문서 요약 저장하기
cat proposal.txt | ollama run gemma3 "의사결정용 요약 5줄만 써 줘." > summary.md코드 변경점 빠르게 리뷰받기
git diff | ollama run qwen3 "위 변경에서 테스트가 필요한 지점 3개만 골라 줘."자유 텍스트를 JSON으로 바꾸기
cat notes.txt | ollama run gemma3 --format json "JSON으로만 답해. fields: topic, action_items 배열" | jq .
이 셋만 익혀도 터미널에서 "읽기 → 변환 → 저장" 흐름이 손에 붙기 시작한다. 그 순간부터 Ollama는 질문 답변기가 아니라 작업 파이프라인의 일부가 된다.
CLI를 익히면 다음 장이 쉬워진다
이번 장의 핵심은 명령어를 더 많이 외우는 것이 아니다. 터미널에서 Ollama를 다른 도구와 연결하는 감각을 익히는 것이다. 멀티라인 입력은 긴 생각을 안전하게 넣는 법이고, 파일 전달은 복붙을 줄이는 법이며, JSON 출력은 자동화의 문을 여는 법이다. 세션 제어와 verbose는 모델을 더 똑똑하게 쓰는 운영 감각에 가깝다.
GUI 없이도 여기까지 할 수 있으면, 다음 장에서 다룰 REST API와 OpenAI 호환 API는 훨씬 자연스럽게 이어진다. 사실 많은 자동화는 거창한 앱에서 시작하지 않는다. 대개는 터미널 한 줄에서 시작한다.
참고
2Ollama CLI tutorial: Running Ollama via the terminal
3How to enter multiline text · Issue #169 · ollama/ollama · GitHub
4Structured outputs · Ollama Blog
5Ollama Commands Cheat Sheet · GitHub
6Ollama Commands Cheat Sheet: CLI and API Reference
7How to set 'verbose' ON by default after a model is loaded? · Issue #4010 · ollama/ollama · GitHub
이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.