Skip to content

터미널 기본

이전 장에서 우리는 Ubuntu 터미널 환경을 구축하고 VS Code와 연결했습니다. 앞으로 코드를 작성하고 실행할 때는 마우스로 클릭하는 대신, 터미널에 명령어를 직접 입력하여 컴퓨터와 소통하게 됩니다.

처음에는 검은 화면에 글자만 입력하는 방식이 어색할 수 있지만, 몇 가지 기본적인 명령어만 익히면 훨씬 빠르고 효율적으로 작업할 수 있습니다. 여기서는 C++ 프로그래밍 실습에 꼭 필요한 터미널 기본 명령어들을 알아봅니다.

현재 위치 확인 및 탐색

가장 먼저 알아야 할 것은 현재 터미널이 어느 폴더를 보고 있는지 확인하고, 다른 폴더로 이동하는 방법입니다.

pwd

pwd는 Print Working Directory의 약자로, 현재 자신이 위치한 전체 경로를 화면에 출력합니다.

bash
$ pwd
/home/username

ls

ls는 List의 약자로, 현재 위치에 있는 파일과 폴더의 목록을 보여줍니다.

bash
$ ls
ioipractice  cpp-practice  main.cpp

숨김 파일을 포함한 모든 파일을 보고 싶다면 ls -a, 파일의 용량이나 생성 날짜 등 자세한 정보를 함께 보고 싶다면 ls -l 옵션을 붙여서 사용할 수 있습니다.

cd

cd는 Change Directory의 약자로, 다른 폴더로 이동할 때 사용합니다. cd 뒤에 띄어쓰기를 하고 이동할 폴더의 이름을 입력합니다.

bash
$ cd cpp-practice
$ pwd
/home/username/cpp-practice

자주 사용하는 특별한 cd 명령어는 다음과 같습니다.

  • cd ..: 현재 위치에서 한 단계 상위 폴더(부모 폴더)로 이동합니다.
  • cd ~: 사용자의 기본 홈 디렉토리로 즉시 이동합니다.

경로(Path) 이해하기

파일이나 폴더의 위치를 지정하는 방식에는 절대 경로와 상대 경로가 있습니다. Linux 환경에서 터미널을 다루기 위해 반드시 알아야 하는 개념입니다.

절대 경로 (Absolute Path)

최상위 디렉토리인 루트(/)를 기준으로 파일이나 폴더의 위치를 처음부터 끝까지 모두 적는 방식입니다. 내가 현재 터미널에서 어느 폴더에 있든 상관없이 항상 같은 위치를 가리킵니다.

  • 예시: /home/사용자이름/cpp-practice

상대 경로 (Relative Path)

현재 터미널이 위치한 폴더(Working Directory)를 기준으로 대상의 위치를 나타내는 방식입니다. 현재 내 위치가 어디냐에 따라 가리키는 실제 장소가 달라집니다.

  • . (점 한 개): 현재 폴더를 의미합니다. (예: ./main - 현재 폴더에 있는 main 파일 실행)
  • .. (점 두 개): 현재 폴더의 바로 한 단계 상위 폴더(부모 폴더)를 의미합니다. (예: cd ..)

홈 디렉토리 (Home Directory, ~)

Linux에서 각 사용자에게 기본적으로 할당되는 개인 작업 공간입니다. 보통 /home/사용자이름과 같은 절대 경로를 가지며, 터미널을 처음 열었을 때 시작하는 위치입니다. 앞선 장에서 여러분의 모든 소스 코드는 이 위치 아래에 폴더를 만들어 저장할 것을 권장했습니다. 터미널에서는 물결표(~) 기호를 사용하여 홈 디렉토리 경로를 짧게 대신할 수 있습니다. (예: cd ~/cpp-practice)

파일 및 폴더 관리

문제를 풀 때마다 새로운 폴더를 만들고, 소스 코드 파일을 생성하거나 관리하는 명령어들입니다.

mkdir

mkdir은 Make Directory의 약자로, 새로운 폴더를 생성합니다.

bash
$ mkdir ioipractice
$ ls
ioipractice

WARNING

경로와 파일 이름 규칙 실습을 위해 폴더나 파일을 생성할 때는 이름을 간결하게 설정하는 것이 좋습니다.

  • 파일이나 폴더 이름에 한글, 공백, 특수문자를 혼합해서 사용하지 마세요.
  • 알파벳과 숫자, 하이픈(-), 언더스코어(_) 정도만 사용하는 것이 가장 안전합니다.
  • 잘못된 예: C++ 연습 (한글 및 공백 포함), Hello World (공백 포함)
  • 올바른 예: cpp-practice, hello_world

이 규칙을 지키지 않으면 컴파일러가 경로를 인식하지 못하여 해결하기 까다로운 오류가 발생할 수 있습니다.

touch

touch는 비어 있는 새로운 파일을 생성할 때 사용합니다. C++ 소스 코드 파일을 새로 만들 때 매우 유용합니다.

bash
$ touch main.cpp
$ ls
main.cpp

rm

rm은 Remove의 약자로, 파일을 삭제할 때 사용합니다.

bash
$ ls
main.cpp
$ rm main.cpp
$ ls

IMPORTANT

터미널에서 rm 명령어로 삭제한 파일은 휴지통을 거치지 않고 즉시 영구 삭제됩니다. 복구가 사실상 불가능하므로 명령어를 실행하기 전에 한 번 더 확인하는 습관을 가져야 합니다. 폴더를 삭제하고 싶다면 rm -r 폴더이름과 같이 옵션을 추가해야 합니다.

cp (Copy)

파일이나 폴더를 복사할 때 사용합니다. 원본을 남겨두고 동일한 내용을 가진 파일을 하나 더 만들 때 유용합니다.

bash
$ cp main.cpp main_copy.cpp
$ ls
main.cpp  main_copy.cpp

mv (Move)

파일이나 폴더를 다른 위치로 이동시키거나, 파일의 이름을 변경할 때 사용합니다.

bash
$ mv main_copy.cpp solution.cpp
$ ls
main.cpp  solution.cpp

터미널 편의 기능

명령어는 아니지만 터미널 사용의 생산성을 크게 높여주는 필수 기능들입니다.

자동 완성 (Tab 키)

파일이나 폴더 이름의 앞글자만 몇 개 입력하고 Tab 키를 누르면, 터미널이 나머지 이름을 자동으로 완성해 줍니다.

이전 명령어 불러오기 (위/아래 방향키)

키보드의 / 아래 방향키를 누르면 이전에 입력했던 명령어들의 기록을 차례대로 불러올 수 있습니다.

화면 지우기

터미널 화면에 너무 많은 글자가 출력되어 지저분해 보인다면, clear 명령어를 입력하거나 단축키 Ctrl + L을 누르세요.

프로세스 강제 종료 (Ctrl + C)

작성한 프로그램이 무한 루프(끝나지 않는 반복문)에 빠져서 터미널이 먹통이 되는 경우가 종종 발생합니다. 이때 키보드 단축키 Ctrl + C를 누르면 실행 중인 프로그램을 강제 종료하고 다시 명령어 입력 상태로 돌아올 수 있습니다. 상황에 따라 여러 번 눌러야 할 수 있습니다.