
Linux 터미널 입문: 마우스 없이 컴퓨터를 다루는 법
클라우드 서버의 96%는 Linux다. GUI 없이 텍스트만으로 서버를 제어하는 터미널 사용법을, 역사부터 실전 명령어까지 완전히 풀어본다. DX 전문가로 가는 첫 번째 관문.

클라우드 서버의 96%는 Linux다. GUI 없이 텍스트만으로 서버를 제어하는 터미널 사용법을, 역사부터 실전 명령어까지 완전히 풀어본다. DX 전문가로 가는 첫 번째 관문.

취업 준비 중인 26살 민수는 클라우드 엔지니어 채용 공고를 보고 있다. "AWS EC2 운영 경험", "Linux 서버 관리 능력", "셸 스크립트 작성 가능자 우대". 공고마다 빠지지 않는 키워드가 있다 — Linux.
민수는 윈도우와 맥만 써 봤다. 파일을 옮기려면 드래그 앤 드롭, 프로그램을 설치하려면 .exe나 .dmg를 더블클릭하면 됐다. 그런데 클라우드 세계에서는 사정이 다르다. AWS, Azure, GCP — 어느 클라우드를 쓰든 서버에 접속하면 마주하는 건 까만 화면과 깜빡이는 커서뿐이다.
마우스가 없는 세계. 그래픽 인터페이스 없이 텍스트 명령어만으로 파일을 만들고, 서버를 설정하고, 프로그램을 실행하는 세계. 이 글은 그 세계로 들어가는 첫 번째 문이다.
GUI(Graphical User Interface)에 익숙한 세대에게 터미널은 낯설다. 하지만 이것만 기억하자 — 클라우드의 언어는 터미널이다. DX(Digital Transformation) 전문가가 되려면, 이 언어를 먼저 배워야 한다.
1969년, 미국 벨 연구소(Bell Labs)의 켄 톰프슨(Ken Thompson)과 데니스 리치(Dennis Ritchie)가 Unix를 만들었다.
당시 컴퓨터는 냉장고만 한 크기였고, 한 대에 수억 원이었다. 여러 사람이 하나의 컴퓨터를 동시에 사용해야 했기 때문에, "다중 사용자, 다중 작업"을 지원하는 운영체제가 필요했다.
Unix의 철학은 단순했다:
50년이 지난 지금도 이 철학은 살아 있다. 터미널에서 ls | grep .txt | wc -l 같은 명령어를 쓸 때, 우리는 1969년의 Unix 철학을 그대로 실천하고 있는 것이다.
Unix는 상업용 라이센스였다. AT&T(벨 연구소의 모회사)가 소유권을 가지고 있었기 때문에 자유롭게 쓸 수 없었다. 이 문제를 해결하기 위해 여러 프로젝트가 생겨났다.
1991년 8월 25일, 헬싱키 대학교의 21살 컴퓨터공학과 학생 리누스 토르발스(Linus Torvalds)는 Usenet 뉴스그룹에 이런 글을 올렸다:
"저는 386/486 AT 클론용 무료 운영체제를 만들고 있습니다. (취미일 뿐이고, GNU처럼 크고 전문적인 것은 아닐 겁니다)"
— Linus Torvalds
"취미일 뿐"이라던 그 프로젝트가 오늘날 전 세계 클라우드 인프라의 96%, 스마트폰의 72%(Android), 세계 Top 500 슈퍼컴퓨터의 100%를 움직이고 있다. 리누스가 만든 것은 커널(Kernel) — 운영체제의 핵심 엔진이다. 여기에 GNU 프로젝트의 도구들(컴파일러, 셸, 유틸리티)이 합쳐져 우리가 아는 "Linux"가 완성되었다.
터미널을 배우기 전에 자주 혼동되는 세 가지 용어를 정리하자.

| 용어 | 비유 | 실체 |
|---|---|---|
| 터미널 (Terminal) | 전화기 | 사용자 입력을 받고 출력을 보여주는 프로그램. macOS의 Terminal.app, Windows의 Windows Terminal, iTerm2 등 |
| 셸 (Shell) | 교환원 | 사용자의 명령어를 해석하고 운영체제에 전달하는 인터프리터. Bash, Zsh, Fish 등 |
| 콘솔 (Console) | 공중전화 부스 | 물리적 입출력 장치. 서버실의 모니터+키보드 조합. 요즘은 거의 "터미널"과 같은 의미로 쓰인다 |
정리하면: 터미널(창)을 열면 그 안에서 셸(Bash 등)이 실행되고, 셸이 사용자의 명령어를 해석해서 OS에 전달한다.
| 셸 | 특징 | 기본 탑재 | 추천 대상 |
|---|---|---|---|
| Bash | 가장 보편적. 스크립팅 표준. 거의 모든 Linux에 설치됨 | 대부분의 Linux 배포판 | 입문자, 서버 관리자 |
| Zsh | Bash 호환 + 자동완성 강화, 테마(Oh My Zsh), 플러그인 생태계 | macOS (Catalina 이후) | 개발자, macOS 사용자 |
| Fish | 설정 없이 자동완성, 구문 하이라이팅 기본 제공. Bash 비호환 | 별도 설치 필요 | 편의성 중시 사용자 |
| Sh (POSIX) | 최소한의 기능. 이식성 최고. 임베디드 환경에서 사용 | 모든 Unix 계열 | 임베디드, 최소 환경 |
터미널을 열면 가장 먼저 보이는 것이 프롬프트(Prompt)다. 이것은 "지금 명령어를 입력해도 됩니다"라는 신호이자, 현재 상태를 요약한 정보다.
minsoo@ubuntu-server:~/projects$
사용자명 @ 호스트명(컴퓨터 이름) : 현재 위치(디렉토리) $ = 일반 사용자 / # = root(관리자)
$가 보이면 일반 사용자, #이 보이면 root(최고 관리자)다. root로 작업할 때는 시스템을 망가뜨릴 수 있으니 항상 주의가 필요하다.
~는 홈 디렉토리의 줄임말이다. /home/minsoo를 ~로 표시한다.

가장 기본적인 세 가지 명령어부터 시작하자.
$ pwd
/home/minsoo/projects
$ ls
README.md app.py config/ data/ requirements.txt
$ ls -la
total 24
drwxr-xr-x 4 minsoo minsoo 4096 Apr 1 09:30 .
drwxr-xr-x 8 minsoo minsoo 4096 Mar 31 15:00 ..
-rw-r--r-- 1 minsoo minsoo 342 Apr 1 09:30 README.md
-rwxr-xr-x 1 minsoo minsoo 1205 Apr 1 09:15 app.py
drwxr-xr-x 2 minsoo minsoo 4096 Mar 30 12:00 config
$ cd config
$ cd .. # 상위 디렉토리로 이동
$ cd ~ # 홈 디렉토리로 이동
$ cd / # 루트 디렉토리로 이동
| 명령어 | 역할 | 비유 |
|---|---|---|
pwd | 현재 위치 출력 (Print Working Directory) | "내가 지금 어디에 있지?" |
ls | 현재 디렉토리의 파일/폴더 목록 | "이 방에 뭐가 있지?" |
ls -la | 숨김 파일 포함 상세 목록 (권한, 크기, 날짜) | "이 방의 모든 것을 자세히 보여줘" |
cd | 디렉토리 이동 (Change Directory) | "다른 방으로 가자" |
# 디렉토리 생성
$ mkdir my-project
$ mkdir -p my-project/src/components # 중간 경로까지 한번에 생성
# 빈 파일 생성
$ touch index.html
# 파일 복사
$ cp index.html backup.html
$ cp -r config/ config-backup/ # 디렉토리 복사 (-r: recursive)
# 파일 이동 / 이름 변경
$ mv backup.html archive/ # 이동
$ mv old-name.txt new-name.txt # 이름 변경
# 파일 삭제
$ rm temp.txt
$ rm -r old-directory/ # 디렉토리 삭제
$ rm -rf unwanted/ # 강제 삭제 (확인 없이) ⚠️ 주의!
rm -rf /는 시스템의 모든 파일을 삭제한다. root 권한으로 실행하면 운영체제까지 사라진다. 현대 Linux는 이를 방지하는 안전장치(--preserve-root)가 있지만, 여전히 rm -rf는 가장 위험한 명령어다. 삭제 전에 항상 경로를 두 번 확인하자.
$ cat README.md # 파일 전체 출력
$ head -20 app.py # 처음 20줄만
$ tail -50 server.log # 마지막 50줄만
$ tail -f server.log # 실시간 로그 모니터링 (follow)
$ less large-file.txt # 페이지 단위로 스크롤 (q로 종료)
tail -f는 서버 운영자가 가장 많이 쓰는 명령어 중 하나다. 서버 로그 파일을 실시간으로 모니터링할 때 사용한다. 에러가 발생하면 즉시 화면에 나타난다.
$ grep "error" server.log # server.log에서 "error" 포함 줄 찾기
$ grep -i "error" server.log # 대소문자 무시 (-i)
$ grep -r "TODO" ./src/ # src 디렉토리 전체에서 재귀 검색 (-r)
$ grep -rn "import" ./src/ # 줄 번호까지 표시 (-n)
$ grep -c "ERROR" server.log # 매칭 줄 수만 출력 (-c)
$ find . -name "*.py" # 현재 디렉토리 하위 모든 .py 파일
$ find /var/log -name "*.log" -mtime -7 # 최근 7일 내 수정된 .log 파일
$ find . -type d -name "node_modules" # node_modules 디렉토리 찾기
$ find . -size +100M # 100MB 초과 파일 찾기
Unix 철학의 핵심 — 프로그램의 출력을 다른 프로그램의 입력으로 연결하는 기능이다.
# 로그에서 에러만 추출해서 줄 수 세기
$ cat server.log | grep "ERROR" | wc -l
47
# 현재 실행 중인 프로세스에서 nginx 찾기
$ ps aux | grep nginx
# 디스크 사용량을 크기순으로 정렬
$ du -sh * | sort -rh | head -10
$ echo "Hello World" > hello.txt # 새 파일 생성 (덮어쓰기)
$ echo "Another line" >> hello.txt # 기존 파일에 추가 (append)
$ grep "ERROR" server.log > errors.txt # 에러 로그만 별도 파일로
$ ls -la > file-list.txt # 파일 목록을 파일로 저장
| 기호 | 이름 | 동작 |
|---|---|---|
| | 파이프 | 왼쪽 명령의 출력 → 오른쪽 명령의 입력 |
> | 리다이렉트 (덮어쓰기) | 출력을 파일로 저장. 기존 내용 삭제 |
>> | 리다이렉트 (추가) | 출력을 파일 끝에 추가 |
< | 입력 리다이렉트 | 파일 내용을 명령의 입력으로 전달 |
2> | 에러 리다이렉트 | 에러 메시지만 파일로 저장 |
| 분류 | 명령어 | 설명 |
|---|---|---|
| 위치/이동 | pwd | 현재 디렉토리 경로 출력 |
ls [-la] | 파일/디렉토리 목록 | |
cd [경로] | 디렉토리 이동 | |
tree | 디렉토리 트리 구조 표시 | |
| 파일 조작 | touch [파일] | 빈 파일 생성 |
mkdir [-p] [디렉토리] | 디렉토리 생성 | |
cp [-r] [원본] [대상] | 파일/디렉토리 복사 | |
mv [원본] [대상] | 이동 또는 이름 변경 | |
rm [-rf] [대상] | 삭제 (주의!) | |
| 파일 보기 | cat [파일] | 전체 내용 출력 |
head [-n] [파일] | 처음 n줄 출력 | |
tail [-f] [파일] | 마지막 줄 출력 / 실시간 모니터링 | |
less [파일] | 페이지 단위로 보기 | |
| 검색 | grep [패턴] [파일] | 파일 내용에서 텍스트 검색 |
find [경로] [조건] | 파일 이름/속성으로 검색 | |
| 조합 | | | 파이프 — 출력을 다음 명령의 입력으로 |
> / >> | 출력을 파일로 저장 (덮어쓰기/추가) | |
wc [-l] | 줄 수 / 단어 수 / 바이트 수 세기 |

윈도우는 C:\, D:\ 같은 드라이브 문자를 쓴다. Linux는 다르다. 모든 것이 루트(/)라는 하나의 뿌리에서 시작하는 트리 구조다.
| 경로 | 역할 | 비유 | 실제 예시 |
|---|---|---|---|
/ | 루트 디렉토리. 모든 파일의 최상위 | 아파트 건물 전체 | 모든 경로의 시작점 |
/home | 사용자별 개인 공간 | 각자의 방 | /home/minsoo, /home/jiyoung |
/etc | 시스템 설정 파일 (Editable Text Configuration) | 관리사무소 서류함 | /etc/nginx/nginx.conf, /etc/hosts |
/var | 가변 데이터 — 로그, DB, 캐시 | 우편함 + 쓰레기통 | /var/log/syslog, /var/www/html |
/tmp | 임시 파일 (재부팅 시 삭제됨) | 화이트보드 | 설치 과정의 임시 파일 |
/usr | 사용자 프로그램, 라이브러리 | 공용 시설 (도서관, 체육관) | /usr/bin/python3, /usr/lib/ |
/opt | 서드파티 소프트웨어 설치 | 건물 내 입주 상가 | /opt/google/chrome, /opt/containerd |
/bin | 필수 명령어 바이너리 | 비상구, 소화기 | ls, cp, mv, cat, grep |
/sbin | 시스템 관리용 바이너리 | 관리실 전용 도구 | mount, reboot, iptables |
/dev | 장치 파일 | 콘센트, 수도꼭지 | /dev/sda (디스크), /dev/null (블랙홀) |
/dev/null은 "블랙홀" 파일이다. 여기에 무엇을 보내든 사라진다. 불필요한 출력을 버릴 때 command > /dev/null 2>&1처럼 사용한다. 에러 메시지까지 모두 조용히 처리할 수 있다.
윈도우에서는 크롬을 설치하려면 구글 사이트에 가서 .exe를 다운로드한다. Linux에서는 패키지 매니저라는 중앙 관리 시스템을 통해 한 줄의 명령어로 소프트웨어를 설치, 업데이트, 삭제한다.
스마트폰의 앱스토어를 생각하면 된다. apt install nginx는 앱스토어에서 "설치" 버튼을 누르는 것과 같다.
| 패키지 매니저 | 배포판 | 설치 명령 | 패키지 형식 |
|---|---|---|---|
| apt | Ubuntu, Debian | sudo apt install nginx | .deb |
| yum / dnf | CentOS, RHEL, Fedora, Amazon Linux | sudo yum install nginx | .rpm |
| pacman | Arch Linux | sudo pacman -S nginx | .pkg.tar.zst |
| brew | macOS (비공식 Linux도 지원) | brew install nginx | 소스 빌드 또는 bottle |
Ubuntu는 클라우드에서 가장 많이 쓰이는 Linux 배포판이므로, apt를 중심으로 살펴보자.
# 패키지 목록 업데이트 (설치 전 항상 실행)
$ sudo apt update
# 패키지 설치
$ sudo apt install nginx
# 설치된 모든 패키지 업그레이드
$ sudo apt upgrade
# 패키지 삭제
$ sudo apt remove nginx
# 패키지 검색
$ apt search "web server"
# 패키지 정보 확인
$ apt show nginx
sudo를 앞에 붙인다. 비밀번호를 입력하면 일시적으로 관리자 권한을 획득한다.
"프로세스"란 실행 중인 프로그램이다. 크롬 브라우저를 더블클릭하면 "크롬이라는 프로세스"가 생성된다. 서버에서 Nginx를 실행하면 "Nginx 프로세스"가 만들어진다.
터미널에서는 이 프로세스들을 직접 관찰하고, 제어하고, 종료할 수 있다.
# 현재 실행 중인 모든 프로세스
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 168940 11788 ? Ss Mar31 0:05 /sbin/init
www-data 1234 0.2 0.5 45316 21892 ? S 09:15 0:12 nginx: worker
minsoo 5678 1.3 2.1 389012 87432 ? Sl 10:00 0:45 node server.js
# 특정 프로세스만 필터링
$ ps aux | grep nginx
# 실시간 모니터링 (CPU, 메모리 사용량)
$ top # 기본 모니터 (q로 종료)
$ htop # 향상된 버전 (색상, 마우스 지원)
$ kill 5678 # PID 5678 프로세스에 종료 요청 (SIGTERM)
$ kill -9 5678 # 강제 종료 (SIGKILL) — 최후의 수단
$ killall nginx # 이름으로 모든 nginx 프로세스 종료
kill은 기본적으로 "정중한 종료 요청(SIGTERM)"을 보낸다. 프로세스가 이를 무시하면 kill -9로 "강제 퇴장(SIGKILL)"시킨다. 가능하면 항상 일반 kill을 먼저 시도하자 — 정중한 종료는 프로세스가 데이터를 저장하고 깔끔하게 마무리할 시간을 준다.
현대 Linux(systemd 기반)에서는 systemctl로 서비스(백그라운드 프로세스)를 관리한다.
$ sudo systemctl start nginx # 서비스 시작
$ sudo systemctl stop nginx # 서비스 중지
$ sudo systemctl restart nginx # 재시작
$ sudo systemctl status nginx # 상태 확인
$ sudo systemctl enable nginx # 부팅 시 자동 시작 설정
$ sudo systemctl disable nginx # 자동 시작 해제
Linux는 다중 사용자 시스템이다. 한 서버에 여러 사람이 접속해서 작업한다. 당연히 "누가 무엇을 할 수 있는가"를 제어하는 권한 시스템이 필수다.


ls -la를 실행하면 왼쪽에 -rwxr-xr-- 같은 문자열이 보인다. 이것이 파일 권한(Permission)이다.
-rwxr-xr--
타입 소유자(User) 그룹(Group) 기타(Others)
타입: - = 일반 파일, d = 디렉토리, l = 심볼릭 링크
카페에 비유해 보자. 카페의 레시피 노트가 있다.
| 권한 | 문자 | 숫자 | 카페 비유 |
|---|---|---|---|
| 읽기 (Read) | r | 4 | 레시피를 읽을 수 있다 |
| 쓰기 (Write) | w | 2 | 레시피를 수정/추가할 수 있다 |
| 실행 (Execute) | x | 1 | 레시피대로 커피를 만들 수 있다 |
숫자로 표현하면: r(4) + w(2) + x(1) = 7. 그래서 chmod 755는 이런 뜻이다:
# 숫자 방식
$ chmod 755 deploy.sh # rwxr-xr-x (스크립트 실행 가능하게)
$ chmod 644 config.yaml # rw-r--r-- (설정 파일: 소유자만 수정)
$ chmod 600 .env # rw------- (비밀 파일: 소유자만 접근)
# 기호 방식
$ chmod +x script.sh # 모든 사용자에게 실행 권한 추가
$ chmod u+w file.txt # 소유자(user)에게 쓰기 권한 추가
$ chmod go-w file.txt # 그룹(g)과 기타(o)의 쓰기 권한 제거
# 소유자 변경
$ sudo chown minsoo:dev deploy.sh # 소유자=minsoo, 그룹=dev
$ sudo chown -R www-data:www-data /var/www/ # 재귀적으로 변경
지금까지 배운 것을 종합해서, EC2 인스턴스에 Nginx 웹 서버를 설치하고 "Hello, World!" 페이지를 띄우는 실전 시나리오를 따라해 보자.

# 키 파일 권한 설정 (AWS에서 다운받은 .pem 파일)
$ chmod 400 my-server-key.pem
# SSH 접속
$ ssh -i my-server-key.pem ubuntu@3.35.xxx.xxx
Welcome to Ubuntu 24.04 LTS
ubuntu@ip-172-31-12-34:~$
chmod 400으로 키 파일을 "소유자만 읽기 가능"으로 설정한다. SSH는 키 파일의 권한이 너무 열려 있으면 접속을 거부한다 — 보안을 위해서다.
# 패키지 목록 업데이트
$ sudo apt update
Hit:1 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble InRelease
Reading package lists... Done
# Nginx 설치
$ sudo apt install nginx -y
Setting up nginx (1.24.0-2ubuntu7) ...
# 설치 확인
$ nginx -v
nginx version: nginx/1.24.0 (Ubuntu)
# Nginx 시작
$ sudo systemctl start nginx
# 상태 확인
$ sudo systemctl status nginx
● nginx.service - A high performance web server
Active: active (running) since Tue 2026-04-01 10:00:00 KST
# 부팅 시 자동 시작 설정
$ sudo systemctl enable nginx
# 80번 포트 리스닝 확인
$ sudo ss -tlnp | grep :80
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=1234,fd=6))
# Nginx 기본 웹 루트 확인
$ ls /var/www/html/
index.nginx-debian.html
# 기존 파일 백업
$ sudo cp /var/www/html/index.nginx-debian.html /var/www/html/index.backup
# 새 페이지 작성 (nano 에디터 사용)
$ sudo nano /var/www/html/index.html
nano 에디터가 열리면 다음 내용을 입력한다:
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>내 첫 번째 서버</title>
<style>
body {
font-family: -apple-system, sans-serif;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background: #0f172a;
color: #e2e8f0;
}
h1 { font-size: 3rem; }
</style>
</head>
<body>
<h1>Hello, World! 🚀</h1>
</body>
</html>
Ctrl + O로 저장, Ctrl + X로 nano를 종료한다.
# 서버 내부에서 확인
$ curl localhost
<!DOCTYPE html>
<html lang="ko">
...
# 접속 로그 실시간 확인
$ sudo tail -f /var/log/nginx/access.log
브라우저에서 EC2의 퍼블릭 IP 주소(http://3.35.xxx.xxx)를 입력하면, 방금 만든 페이지가 보인다.
ssh -i key.pem ubuntu@IP — 터미널에서 원격 서버로 연결
sudo apt update — 소프트웨어 목록 최신화
sudo apt install nginx — 웹 서버 설치
sudo systemctl start nginx + enable — 실행 및 자동시작 설정
nano /var/www/html/index.html — HTML 파일 편집
curl localhost + 브라우저 접속 — 동작 테스트
터미널 고수와 초보의 가장 큰 차이는 단축키 사용 여부다.
| 단축키 | 기능 | 빈도 |
|---|---|---|
Tab | 자동 완성 — 파일명, 디렉토리명, 명령어 | 매 줄마다 |
Ctrl + C | 현재 실행 중인 명령 중단 | 매우 자주 |
Ctrl + R | 명령어 히스토리 검색 (이전에 쓴 명령어 찾기) | 자주 |
Ctrl + L | 화면 지우기 (clear와 동일) | 자주 |
Ctrl + A | 커서를 줄 맨 앞으로 | 가끔 |
Ctrl + E | 커서를 줄 맨 뒤로 | 가끔 |
Ctrl + D | 현재 셸 종료 (exit와 동일) | 가끔 |
↑ / ↓ | 이전/다음 명령어 탐색 | 매우 자주 |
$ history # 이전에 실행한 명령어 전체 목록
$ !! # 직전 명령어 재실행
$ sudo !! # 직전 명령어를 sudo로 재실행 (권한 부족 시 유용)
$ which python3 # 명령어의 실제 위치 확인
$ whoami # 현재 로그인한 사용자명
$ df -h # 디스크 사용량 확인 (human-readable)
$ free -h # 메모리 사용량 확인
$ uptime # 서버 가동 시간
$ man ls # ls의 매뉴얼 페이지 (모든 명령어에 사용 가능)
sudo !!를 치면 된다. 직전 명령어를 sudo 권한으로 다시 실행한다. 긴 명령어를 다시 타이핑할 필요가 없다.
서버에서 파일을 편집해야 할 때 사용하는 에디터들이다.
| 에디터 | 난이도 | 특징 | 추천 |
|---|---|---|---|
| nano | 쉬움 | 하단에 단축키 안내 표시. 직관적 | 입문자 추천 |
| vim | 어려움 | 모드 기반(입력/명령). 학습곡선 높지만 숙련 시 최강 효율 | 중급 이상 |
| emacs | 어려움 | 확장성 최강. "운영체제 안의 운영체제"라 불림 | 특수 목적 |
Esc를 누른 뒤 :q!를 입력하면 저장 없이 종료된다. :wq는 저장 후 종료. "How to exit Vim"은 Stack Overflow에서 수백만 조회수를 기록한 전설의 질문이다.
이 글에서 다룬 내용을 정리하면:
돌아가서 민수의 이야기를 떠올려 보자. 채용 공고에 적혀 있던 "Linux 서버 관리 능력"은 결국 이런 것이다 — 터미널을 열고, 명령어를 입력하고, 서버를 제어하는 능력. 거창한 것이 아니라 ls, cd, grep, chmod 같은 기본 명령어의 조합이다.
물론 이 글에서 다룬 것은 시작에 불과하다. 이 다음에는 이런 주제들이 기다리고 있다:
터미널은 처음에는 불편하다. 마우스가 그립고, GUI가 그립다. 하지만 어느 순간 마우스보다 키보드가 빠르다는 것을 체감하게 된다. Ctrl + R로 과거 명령어를 순식간에 찾아 실행하고, 파이프로 여러 명령어를 연결해 복잡한 작업을 한 줄로 끝내는 순간 — 그때 터미널의 진가를 알게 된다.
클라우드의 언어는 터미널이다. 오늘 터미널을 열고 ls를 쳐 보자. DX 전문가로 가는 여정의 첫 번째 명령어다.
참고 자료