PH pullh
입문 블로그 / 콘솔창이 덜 무서워지는 첫 10가지 습관
도구와 디버깅 6분 Beginner

콘솔창이 덜 무서워지는 첫 10가지 습관

터미널은 초보자에게 낯설지만, 몇 가지 기본 동작만 익히면 훨씬 든든한 작업 공간이 된다.

터미널 첫걸음 커버 이미지

처음 터미널을 열면 검은 화면과 커서만 보인다. 마치 무엇이든 잘못 입력하면 큰일 날 것처럼 느껴지기도 한다.

하지만 입문 단계에서 필요한 것은 복잡한 셸 스크립트가 아니라, 현재 위치를 알고 파일을 보고 프로그램을 실행하는 정도의 감각이다.

터미널이 어려운 진짜 이유는 명령이 많아서가 아니다. 화면이 지금 상태를 보여 주지 않기 때문이다. 파일 탐색기는 어느 폴더에 있는지 늘 보여 주지만, 터미널은 물어봐야 알려 준다.

터미널은 현재 위치를 기준으로 움직인다

초보자가 가장 자주 헷갈리는 것은 명령 자체보다 지금 내가 어디에 있지다. 그래서 현재 경로 확인, 파일 목록 보기, 폴더 이동 같은 동작을 먼저 익히는 편이 좋다.

이 감각이 생기면 에디터와 터미널을 오가며 작업하는 속도가 눈에 띄게 좋아진다. 반대로 이 감각이 없으면, 분명히 만든 파일을 찾을 수 없다는 상황이 반복된다.

그리고 이 감각은 나중에 배우는 거의 모든 도구의 전제가 된다. Git도, 패키지 설치도, 서버 접속도 지금 어느 폴더에 서 있는지를 기준으로 동작한다. 명령어를 몇 개 아느냐보다 이 기준이 잡혀 있느냐가 이후 학습 속도를 가른다.

CLI

pwd
ls
cd project-folder
python app.py

현재 위치 확인, 목록 보기, 이동, 실행만 익혀도 초반 작업 절반은 커버된다.

파일을 못 찾는다는 에러의 정체

입문 구간에서 가장 자주 만나는 터미널 관련 에러는 파일이 없다는 메시지다. 그런데 파일은 대부분 멀쩡히 있다. 없는 것은 파일이 아니라, 내가 서 있는 위치와 파일의 위치 사이의 관계다. 아래 흐름을 그대로 따라가 보면 무슨 일이 벌어지는지 한눈에 보인다.

SESSION

$ pwd
/Users/mina

$ python3 app.py
python3: can't open file '/Users/mina/app.py': [Errno 2] No such file or directory

$ ls
Desktop  Documents  study

$ cd study
$ ls
app.py  data.txt

$ python3 app.py
12

고친 것은 코드가 아니라 서 있는 위치 하나다.

에러 메시지가 이미 답을 말해 주고 있다는 점에 주목할 만하다. /Users/mina/app.py라는 전체 경로가 찍혀 있으니, 내가 어디서 찾고 있었는지가 그대로 드러난다. 터미널의 에러는 대체로 이렇게 친절한 편이다. 무섭다는 인상 때문에 읽지 않을 뿐이다.

습관 하나

실행이 실패하면 명령을 고치기 전에 pwd와 ls를 먼저 치십시오. 초반 실패의 상당수가 이 두 줄에서 끝납니다.

절대 경로와 상대 경로, 그리고 점 두 개

경로 표기는 규칙이 몇 개 안 된다. 슬래시로 시작하면 절대 경로이고, 그렇지 않으면 지금 위치를 기준으로 한 상대 경로다. 점 하나는 현재 폴더, 점 둘은 상위 폴더, 물결표는 홈 폴더를 가리킨다. 이 네 가지면 입문 구간에서 필요한 이동은 거의 다 된다.

PATHS

cd ..            # 한 단계 위로
cd ../data       # 위로 갔다가 data 폴더로
cd ~/study       # 홈 아래 study로
cd -             # 방금 전 있던 곳으로

마지막 줄은 잘 안 알려져 있지만, 두 폴더를 오갈 때 가장 많이 쓰인다.

여기에 탭 키를 더하면 오타가 크게 줄어든다. 폴더 이름 앞 두세 글자만 치고 탭을 누르면 나머지가 채워지고, 채워지지 않으면 그 이름의 파일이 여기에 없다는 뜻이다. 즉 탭 키는 자동완성인 동시에 존재 확인 도구다.

폴더나 파일 이름에 공백이 들어 있을 때만 예외적으로 조심하면 된다. 셸은 공백을 기준으로 명령과 인자를 나누기 때문에, 내 문서 폴더 같은 이름은 두 개의 인자로 읽힌다. 따옴표로 감싸거나, 애초에 프로젝트 폴더 이름에는 공백과 한글을 쓰지 않는 편이 마음 편하다. 이건 취향이 아니라 나중에 겪을 문제를 줄이는 선택이다.

명령을 못 찾는다는 말의 뜻

위치 문제 다음으로 자주 만나는 것이 command not found다. 이 메시지는 그 명령이 세상에 없다는 뜻이 아니라, 셸이 찾아보는 폴더 목록 안에 그 실행 파일이 없다는 뜻이다. 즉 설치가 안 됐거나, 설치는 됐는데 셸이 그 위치를 모르거나 둘 중 하나다.

확인 순서

$ python --version
zsh: command not found: python

$ python3 --version
Python 3.12.2

$ which python3
/usr/bin/python3

이 경우 설치는 되어 있었다. 이름이 python이 아니라 python3였을 뿐이다.

which는 그 명령이 실제로 어느 파일을 실행하는지 알려 준다. 같은 이름의 도구가 여러 버전 깔려 있어 엉뚱한 쪽이 실행되는 상황에서도 이 한 줄이 답을 준다. 설치했는데 안 된다는 상황의 상당수가 여기서 정리된다.

터미널 입문 습관

  • 명령 실행 전 현재 위치를 확인한다.
  • 경로는 직접 타이핑하지 말고 탭 키로 완성한다.
  • 위쪽 화살표로 직전 명령을 불러와 재사용한다.
  • 중요한 파일을 지우는 명령은 뜻을 알고 쓴다.
  • 명령이 길면 한 번에 외우려 하지 말고 자주 쓰는 네다섯 개부터 익힌다.
  • 에러가 나면 명령어와 현재 경로를 함께 본다.

터미널로 하지 않는 편이 나은 일

터미널에 익숙해지면 모든 것을 여기서 하고 싶어지는 시기가 온다. 그런데 초보자에게는 오히려 손해인 경우가 있다. 긴 코드를 편집하는 일이 대표적이다. 서버에 접속한 상황이 아니라면 에디터를 쓰는 편이 빠르고 실수도 적다. 파일 수십 개의 구조를 파악하는 일도 마찬가지다. 명령으로 목록을 훑는 것보다 에디터의 트리를 보는 쪽이 정확하다.

반대로 절대 대충 쓰면 안 되는 명령도 있다. 지우는 명령은 휴지통을 거치지 않는다. 특히 인터넷에서 본 명령에 rm -rf나 sudo가 들어 있으면, 실행하기 전에 그 줄이 무엇을 지우는지 한 문장으로 설명할 수 있어야 한다. 설명이 안 된다면 그 명령은 아직 내 것이 아니다.

붙여 넣기 전에

블로그에서 복사한 한 줄짜리 설치 명령이 무슨 일을 하는지 모르겠다면, 최소한 대상 경로가 무엇인지만이라도 확인하십시오. 명령줄에서 되돌리기는 없습니다.

무서움을 줄이는 가장 좋은 방법은 작은 명령을 자주 써 보는 것이다.

도구와 디버깅

더 볼 것

터미널이 손에 붙으면 다음으로 만나는 도구는 대개 Git입니다. 첫 주의 Git은 이 감각 위에서 읽으면 훨씬 수월하고, 파일 경로를 코드에서 다루는 쪽은 파이썬 파일 입출력 가이드에 정리해 두었습니다.

이 글의 포인트

  • 터미널은 명령보다 현재 위치 감각이 먼저다.
  • 파일을 못 찾는다는 에러는 대개 위치 문제다.
  • 탭 키와 위쪽 화살표만 써도 오타와 반복 입력이 줄어든다.
  • 편집과 구조 파악은 에디터에 맡기는 편이 낫다.
  • 작은 성공 경험이 쌓이면 터미널 공포는 빠르게 줄어든다.

Next Read

Git을 처음 쓰는 사람에게 첫 주가 중요한 이유

Git은 명령을 많이 아는 것보다, 지금 상태를 읽는 법부터 익히는 편이 낫다. 첫 주에 필요한 감각만 골랐다.