학습 목표
- 리눅스(유닉스) 터미널을 실행할 수 있다.
- CLI를 이용한 작업과 GUI를 이용한 작업이 동일함을 이해할 수 있다.
- 리눅스 터미널에서 기본적인 명령어를 사용할 수 있다.
- pwd : 현재 위치 확인
- mkdir : 새로운 폴더 생성
- ls : 폴더나 파일의 목록 출력
- cd : 폴더 진입
- touch : 새로운 파일 생성
- cat : 파일의 내용을 터미널에서 출력
- rm : 폴더나 파일 삭제
- mv : 폴더나 파일의 위치를 이동하거나, 이름을 변경
- cp : 폴더나 파일 복사
- 명령어를 사용할 때, 등장하는 키워드에 대한 이해
- / : 루트 디렉토리
- ~ : 홈 디렉토리
개요
1. 입력(Input)과 출력(output)이란?
컴퓨터에 명령을 전달하는 장치를 입력 소스(Input Source)라 한다. 여기에는 마우스나 키보드뿐만 아니라 카메라, 마이크도 포함된다.
반대로 컴퓨터가 사용자에게 정보를 전달하는 방식은 출력(Output)이라 부릅니다. 여기에는 모니터, 스피커, 스마트홈 기기(전등, 공기청정기 등)이 있습니다.
이처럼 컴퓨터의 입력과 출력을 통틀어 I/O (Input/Output)이라 하며, 보통 "아이오"라고 읽습니다.
2. CLI과 I/O
- CLI(Command Line Interface) : 대표적인 텍스트 기반 I/O 환경
- 입력: 키보드를 사용해 명령어 입력
- 출력: 명령어 결과가 모니터에 텍스트로 출력
GUI(Graphical User Interface)에 익숙한 사용자에게는 낯설 수 있지만, CLI는 GUI보다 훨씬 강력하고 유연한 처리 능력이 있다. 영화나 드라마에서 해커가 사용하는 프로그램이 바로 터미널이다. Ubuntu를 설치했거나 macOS를 사용한다면 터미널을 실행한 뒤 명령어를 통해 컴퓨터를 제어할 수 있다. 이와 같이 명령어로 컴퓨터를 제어하는 방식을 명령줄 인테페이스(CLI)라 한다. 반면, 일반적으로 컴퓨터를 사용할 때 적용되는 컴퓨터 제어 방식은 그래픽 사용자 인터페이스(GUI)라 한다.
그렇다면 CLI가 중요한 이유가 뭘까?
바로, 상대적으로 높은 안전성과 빠른 속도이다. GUI는 사용자가 쉽게 컴퓨터를 제어할 수 있다는 장점이 있지만, 그래픽이 컴퓨터 자원을 많이 사용하여 CLI에 비해 느리다. 반면, CLI은 화면에 나타날 내용에 그래픽 작업을 거치지 않아도 되어 컴퓨터 자원을 더 적게 사용하므로 더 빠르게 동작한다.
3. 서버 환경에서 CLI의 중요성
오늘날 많은 서버는 GUI 없이 운영된다. 예를 들어, AWS(Amazon Web Services)는 전 세계에 수십 개의 대규모 데이터 센터를 운영한다. 하나의 센터에 수만 대의 서버 컴퓨터가 설치되며 다음과 같은 특징이 있다.
- 각각의 서버에 모니터, 키보드, 마우스를 연결하는 것은 불가능하다.
- 대신, CLI를 통해 원격으로 접속하고 명령어를 전달한다.
이런 방식은 GUI 보다 훨씬 효율적이어서, 지금도 많은 현직 개발자들이 CLI로 서버를 운영한다.
4. 왜 CLI인가?
단순한 명령어 입력 수단을 넘어 서버 운영, 프로젝트 배포, 에러 해결, 자동화 스크립트 작성 등 백엔드 개발의 핵심 업무에 반드시 필요한 도구이다. 특히, 리눅스 환경에서는 대부분의 작업을 CLI로 수행하므로 개발자가 되기 위해서 CLI 사용법을 필수 역량이다.
5. 실습 환경
- Mac 사용자 : macOS에는 기본적으로 Terminal 앱이 내장되어 있어 별도의 설치 없이 바로 CLI 가능
- Windows 사용자 : Git Bash 설치 필요
[Windows] Git bash 설치
Git Bash란?
Git을 설치할 때 함께 제공되는 터미널 프로그램으로, Windows에서도 리눅스/유닉스 스타일의 명령어(pwd, ls, cd 등)을 사용할 수 있게 도와준다.
Git 설치 파일 다운로드
Git - Downloads
Downloads macOS Windows Linux/Unix Older releases are available and the Git source repository is on GitHub. Latest source Release 2.49.0 Release Notes (2025-03-14) Download Source Code GUI Clients Git comes with built-in GUI tools (git-gui, gitk), but ther
git-scm.com
설치 확인
git --version
// 예시 출력
git version 2.49.0.windows.1
CLI 기본 명령어 학습 및 실습 (1)
실습을 홈 디렉토리(~)에서 진행해야 한다. 터미널을 열고 아래 명령어를 입력한 다음 실습하면 된다.
cd ~
프롬프트(Prompt)
터미널은 CLI이다. 터미널을 실행시키면 프로그램 하단에 명령어를 입력할 수 있는 커서가 보입니다. 이처럼 키보드의 입력을 확인하고 편집할 수 있는 한 줄의 공간을 프롬프트(Prompt)라 한다.
pwd (print working directory): 현재 위치 확인
GUI에서 탐색기를 통해 특정 폴더로 이동했을 때, 탐색기 상단에 위치한 현재 폴더의 이름을 클릭하면 현재 폴더가 위치한 경로가 나타난다.
CLI인 터미널에서는 간단하게 pwd를 프롬프트에 입력하고 enter를 누르면 현재 경로가 나타난다. pwd는 print working directory의 약자로, 여기서 말하는 디렉토리(directory)는 폴더라고도 한다.

CLI에서 폴더를 열거나 닫으면서 이동하면 현재 위치가 헷갈릴 수 있는데, 이때 pwd 명령어를 사용하여 현재 작업 중인 폴더의 위치를 출력하면 된다.
mkdir (make directories) : 새로운 폴더 생성
CLI에서 폴더를 생성하기 위해 사용하는 명령어인 mkdir은 make directories의 약자로, 폴더를 만드는 명령을 컴퓨터에 전달한다. 명령어 mkdir은 생성할 폴더의 이름을 함께 입력해야 한다. CLI에서는 명령어와 폴더의 이름을 공백으로 구분한다.

프롬프트에 정상적으로 명령어를 입력했다면 별다른 출력 없이 폴더가 생성된다. 생성된 폴더를 확인하기 위해서 현재 폴더에 포함된 차일이나 폴더의 이름을 출력하는 명령어가 필요하다. 이때 사용되는 것이 ls 명령어이다.
ls (list) : 특정 폴더에 포함된 파일이나 폴더 확인
명령어 ls는 list의 약자로, 특정 폴더에 포함된 파일이나 하위 폴더의 리스트를 출력한다. 명령어 ls를 이용해 명령어 mkdir을 통해 생성한 폴더 "helloWorld"를 확인해보자.

명령어 ls에는 자주 사용하는 옵션 l과 a가 있다. CLI에서 특정 명령어의 옵션을 사용할 때 -를 이용해 옵션을 입력했다고 컴퓨터에 전달한다. 다음과 같은 예시가 있다.
- ls -l
- ls -a
- ls -al 또는 ls -la
위의 세번째 예시에서 옵션을 뜻하는 대시(dash, -) 뒤에 오는 옵션의 순서는 기능에 영향을 미치지 않는다.

명령어 ls의 옵션 a는 "all"이라는 의미로, 숨어있는 폴더나 파일을 포함한 모든 항목을 터미널에 출력한다.
옵션 a와 함께 자주 사용하는 옵션 l은 폴더나 파일의 포맷을 전부 표현하는 의미로, 하나의 파일 또는 하나의 폴더는 한 줄에 출력된다.
명령어 ls와 함께 옵션 l을 사용하면 가장 왼쪽에 출력되는 두 글자 d와 -를 확인할 수 있다. 여기서 d로 출력된 경우는 디렉토리를, -로 출력된 경우는 파일을 나타낸다. 디렉토리는 명령어 cd를 통해 진입할 수 있지만, 파일은 진입할 수 없다.
cd (change directory) : 폴더 진입
명령어 mkdir를 통해 생성한 폴더 "helloWorld"에 진입하기 위해 GUI에서는 마우스를 사용한다.
명령어 cd는 change directory의 약자로, 프롬프트로 상호작용하는 폴더를 다른 폴더로 변경한다는 의미이다. 명령어 pwd를 통해 현재 위치를 확인하고, 명령어 ls를 이용해 helloWorld 폴더를 확인해보자. 그 다음, 명령어 cd를 이용해 helloWorld 폴더로 진입한다. 명령어 pwd를 통해 현재 위치를 확인하면 다음과 같다.


touch : 파일 생성
파일(File)은 서류철이라는 뜻이다. 컴퓨터나 스마트폰 등 전자기기에서 문서의 형태로 작성된 모든 것을 파일이라 한다. 그 중에서 가장 쉽게 접할 수 있는 파일은 텍스트(text) 파일이다. 이번에는 폴더 "helloWorld" 안에서 텍스트 파일 "hi.txt"를 생성해보자.
파일을 만들기 위해 명령어 touch를 사용한다.

> : 실행 결과를 파일로 저장
>를 사용하여 실행결가를 파일로 저장할 수 있다. 예를 들어, ls > ls.txt를 입력하면 ls.txt에 ls 명령어의 실행 결과가 저장된다.
이를 이용하여 위에서 생성한 hi.txt에 이메일 주소를 기입해보자. 참고로 명령어 echo는 echo 뒤의 내용을 화면에 출력해주는 역할을 한다. 즉, echo hello라고 입력하면 화면에 hello를 출력해준다.

위와 같이 입력하면 echo 명령어의 실행 결과인 이메일 주소를 화면에 출력하는 대신 hi.txt 파일에 저장된다.
cat : 파일의 내용을 터미널에 출력
CLI로 만든 폴더와 파일을 GUI로 동일하게 확인할 수 있었다. 이번에는 반대로 GUI에서 변경한 내용을 CLI에서 확인해보자.

명령어 cat은 파일의 내용을 터미널에 출력하는 명령어이다. 그러나 명령어 cat을 이용하여 터미널에 출력하면 파일의 모든 내용을 출력한다.
만약 원격 서버에 접속한 상태에서 너무 큰 파일을 출력하면 어떻게 될까? 원격 서버에 접속하는 일은 네트워크를 통해 이뤄지기 때문에, 원격으로 접속한 상태에서 큰 파일을 출력하는 일은 매우 비효율적이다. 이와 관련하여 cat 대신에 사용할 수 있는 명령어들이 존재한다.
CLI 기본 명령어 학습 및 실습 (2)
여기서는 폴더와 파일의 위치를 변경하거나 삭제하는 내용을 학습한다. 폴더와 파일의 이름을 바꾸고, 위치를 이동시키고, 삭제하는 내용을 다루기 위해 사용할 폴더나 파일을 추가한다.

rm (remove): 폴더나 파일 삭제
명령어 rm은 폴더나 파일을 삭제할 때 사용한다. 변경사항 확인을 위해 명령어 ls를 입력하면 도움이 된다.
명령어 pwd를 통해 현재 위치를 확인하면 ~/helloWorld/hello 이다. 명령어 rm은 remove로 파일을 삭제한다. 이때 삭제한 폴더나 파일은 휴지통을 거치지 않고 삭제된다.

명령어 rm으로 파일을 지운 뒤 명령어 ls를 입력하면 폴더 "bye"만 출력된다. 남아있는 폴더 "bye"도 마저 삭제하기 위해 명령어 rm을 사용했지만 삭제되지 않는다.

그 이유는 명령어 rm은 단일 파일을 삭제할 수 있다. 만약 폴더를 삭제하려면 옵션을 이용해야 한다.
명령어 ls에서 옵션을 사용했던 것처럼 이번에도 대시(-)를 이용하여 옵션을 입력한다. 명령어 rm에서 사용할 수 있는 옵션은 r과 f이다. 옵션 r은 recursive를 뜻하며 폴더를 지울 때 사용하고, 옵션 f는 force를 뜻하며 질문을 받지 않고 삭제할 때 사용한다.
- r
- recursive
- 폴더를 지울 때 사용
- f
- force
- 질문을 받지 않고 삭제제

이전과 달리 아무것도 출력되지 않는다.
mv (move) : 폴더나 파일의 이름 변경, 또는 폴더나 파일의 위치 옮기기
명령어 mv는 move의 약자로 폴더나 파일을 이동할 때 사용한다. 실습을 위해 명령어 rm으로 삭제한 폴더 "bye"와 파일 "bye.txt"를 다시 생성하자.

명령어 mv를 통해 파일 "bye.txt"를 폴더 "bye"로 옮겨보자. 명령어 mv 뒤는 순서대로 [폴더나 파일의 이름] [도착 폴더의 이름]을 입력한다.

명령어 mv의 다른 기능은 폴더나 파일의 이름을 변경할 수 있다. 명령어 mv를 사용하기 위해 필요한 [폴더나 파일의 이름]에는 [변경할 폴더나 파일의 이름]을 입력한다. [도착 폴더의 이름]을 대신해 [변경하고자 하는 파일의 이름]을 입력한다. 폴더 "bye"에 있는 파일 "bye.txt"의 이름을 "helloWorld.txt"로 변경해보자.

컴퓨터가 파일을 옮기거나 복사하는 방법
0과 1로 이뤄진 데이터 덩어리를 관리하는 컴퓨터는 구조적 한계로 인해 내용물을 꺼내서 옮기는 개념이 없다. 그렇다면 명령어 mv 또는 GUI에서 드래그 앤 드롭을 통해 폴더나 파일 이동은 어떻게 하는 것일까?
컴퓨터는 옮기려고하는 폴더나 파일을 잠시 저장해두고 원래 위치에 있는 폴더나 파일을 삭제한다. 그 다음, 이동하려는 도착 폴더에 저장해 둔 내용으로 새로운 파일을 생성한다.
- 컴퓨터가 파일을 옮기는 방법
- 파일의 내용을 잠시 저장한다.
- 원래 위치의 파일을 삭제한다.
- 도착 폴더에 1에서 저장한 내용으로 새로운 파일을 생성한다.
그런데 만약 명령어 mv에 입력하는 폴더나 파일의 원래 위치와 도착 폴더의 위치가 같은 경우는 어떨까? 폴더나 파일의 내용과 위치가 같고, 이름만 다른 경우에 새로운 파일을 생성하는 일은 비효율적이다. 그래서 컴퓨터는 폴더나 파일을 삭제하고 새롭게 작성하는 대신 폴더나 파일의 이름만 변경한다.
위에서 언급한 것처럼 컴퓨터는 파일을 옮기기 위해 잠시 저장해 둔다. 파일을 복사하는 경우에는 파일을 옮기는 과정 중 원래 위치의 파일을 삭제하는 과정이 제외된다.
- 컴퓨터가 파일을 옮기는 방법
- 파일의 내용을 잠시 저장한다.
원래 위치의 파일을 삭제한다.- 도착 폴더에 1에서 저장한 내용으로 새로운 파일을 생성한다.
cp (copy) : 폴더나 파일 복사
명령어 cp는 copy의 약자로 폴더나 파일을 복사할 때 사용한다.
먼저, 파일을 복사하는 법을 알아보자. 파일 복사를 위해서는 cp [원본 파일 이름] [복사할 파일 이름]을 프롬프트에 입력한다.

이번에는 폴더를 복사해보자. 폴더를 복사하기 위해서 명령어 cd를 이용해 상위 폴더 "hello"로 이동한다. CLI에서 .은 현재 폴더를 나타낸다. ..은 현재 폴더(.)을 기준으로 앞에 .이 하나 더 붙는다. 이런 ..은 현재 폴더보다 앞에 있는 폴더를 가리킨다.

폴더 "bye"를 복사해 새로운 폴더 "hi"를 만들어보자. 폴더 복사를 위해 명령어 cp를 사용한다. 명령어 cp에 사용하는 옵션은 명령어 rm에 사용하는 옵션과 동일하다. 아래 명령어를 통해 "bye"를 복사해 새로운 폴더 "hi"를 만들자. 여기서 사용하는 옵션 r과 f는 recursive, force를 나타낸다.

각 명령어에 포함된 옵션은 명령어 이름만 입력하거나 -h 또는 --help와 같은 옵션을 통해 확인 가능하다.
'Software Engineering > Git' 카테고리의 다른 글
| [Github] 새 토큰 발급 (0) | 2025.07.22 |
|---|---|
| Git을 이용해 협업하기 (0) | 2025.06.02 |
| Git 브랜치의 이해와 활용 (0) | 2025.06.02 |
| Git을 활용한 버전 관리 (0) | 2025.06.02 |
| [미션 1] 객체지향 프로그래밍의 이해 / 컬렉션 프레임워크와 Steam API (0) | 2025.05.30 |