리눅스 터미널 기본 명령어 정리 – 초보자가 실제로 막히는 지점까지 해결

리눅스 터미널, 처음 열었을 때 그 깜박이는 커서가 낯설게 느껴지셨던 분 많을 겁니다. 이 글은 “명령어 목록만 나열한 치트시트”가 아닙니다. 실제로 초보자가 막히는 지점을 중심으로, 명령어의 동작 원리와 흔한 실수, 안전하게 쓰는 방법까지 함께 정리했습니다.

Ubuntu, Rocky Linux, WSL 등 어떤 환경이든 여기 나오는 기본 명령어는 거의 그대로 동작합니다.

먼저 알아야 할 것: 터미널과 셸의 관계

터미널을 열면 실제로 실행되는 것은 셸(Shell)입니다. 우분투 기본은 bash, macOS 카탈리나 이후는 zsh이 기본값입니다. 명령어 대부분은 두 셸에서 동일하게 동작하지만, 자동완성 동작이나 기본 alias(별칭) 설정이 일부 다를 수 있습니다.

> WSL 사용자 주의: Windows 파일시스템은 /mnt/c/ 경로로 접근합니다. 권한(permission) 구조가 순수 리눅스와 다르게 취급될 수 있어, 일부 chmod 동작이 예상과 다를 수 있습니다.


학습 우선순위 로드맵

명령어 목록을 한꺼번에 외우려 하면 금방 지칩니다. 단계별로 익히는 것을 권장합니다.

단계익혀야 할 명령어목적
1단계 (필수)pwd, ls, cd, mkdir, rm, cp, mv, touch파일·디렉터리 기본 조작
2단계 (핵심)cat, less, head, tail, grep, find, man파일 내용 확인·검색
3단계 (실무)chmod, chown, ps, top, kill, history, echo권한·프로세스·환경 관리

1단계: 위치 파악과 디렉터리 탐색

pwd – 지금 어디에 있는지 확인

“`bash

pwd

“`

pwdprint working directory의 약자입니다. 터미널을 열면 항상 pwd로 시작하는 습관을 들이면 “파일이 어디 갔지?”라는 혼란이 크게 줄어듭니다.

리눅스 터미널 기본 명령어 정리 - 포커스 키워드 기반 alt 텍스트:

ls – 디렉터리 내용 나열

“`bash

ls # 기본 목록

ls -l # 상세 정보 (권한, 소유자, 크기, 수정 시간)

ls -a # 숨김 파일(.으로 시작하는 항목) 포함

ls -al # 위 두 옵션 조합 (가장 자주 씀)

ls -lh # 파일 크기를 사람이 읽기 쉽게 표시 (KB, MB 단위)

“`

> 옵션 조합 팁: ls -alls -a -l과 완전히 동일합니다. 플래그를 붙여 쓰는 것이 관례입니다.

cd – 디렉터리 이동

“`bash

cd /home/username/projects # 절대경로로 이동

cd projects # 상대경로로 이동 (현재 위치 기준)

cd .. # 상위 디렉터리로 이동

cd ~ # 홈 디렉터리로 이동 (/home/username과 동일)

cd – # 직전에 있던 디렉터리로 이동

“`

#### 🚨 초보자 마찰 포인트: 절대경로 vs 상대경로

구분형태예시
절대경로/로 시작/home/username/Downloads
상대경로현재 위치 기준./mydir, ../otherdir

cd mydircd ./mydir은 결과가 같지만, 스크립트에서는 ./를 명시하는 것이 안전합니다. 경로에 공백이나 한글이 포함된 경우에는 따옴표로 감싸야 합니다.

“`bash

cd “My Folder” # 올바른 방법

cd My\ Folder # 백슬래시로 공백 이스케이프

cd My Folder # ❌ 에러: No such file or directory

“`


2단계: 파일과 디렉터리 조작

mkdir – 디렉터리 생성

“`bash

mkdir mydir # 단일 디렉터리 생성

mkdir -p a/b/c # 부모 디렉터리가 없어도 한 번에 생성

mkdir -p existing/dir # 이미 존재해도 에러 없이 넘어감

“`

-p 옵션은 중첩 구조를 한 번에 만들 때 유용합니다. -p 없이 존재하지 않는 부모 경로를 지정하면 에러가 납니다.

touch – 파일 생성 및 시간 갱신

“`bash

touch newfile.txt # 새 파일 생성

touch existing.txt # 이미 있는 파일이면 수정 시간만 현재로 갱신

“`

빈 파일을 빠르게 만들거나, 빌드 시스템에서 파일 타임스탬프를 갱신할 때 자주 씁니다.

cp – 파일·디렉터리 복사

“`bash

리눅스 터미널에서 주요 명령어 사용

cp source.txt dest.txt # 파일 복사

cp -r source_dir dest_dir # 디렉터리 재귀 복사 (필수: -r 없으면 에러)

cp -f source.txt dest.txt # 대상 파일이 있으면 강제 덮어쓰기

“`

#### 🚨 초보자 마찰 포인트: 인자 순서

cp 명령어는 항상 원본(source) → 대상(destination) 순서입니다. 반대로 입력하면 원본이 덮어써져 복구가 어렵습니다. 디렉터리를 복사할 때 -r 옵션을 빠뜨리면 오류가 발생하므로 습관적으로 확인하세요.

mv – 파일·디렉터리 이동 또는 이름 변경

“`bash

mv oldname.txt newname.txt # 이름 변경

mv file.txt /home/user/docs/ # 다른 디렉터리로 이동

mv dir1 /tmp/ # 디렉터리 이동 (-r 옵션 불필요)

“`

mv는 같은 파일시스템 내에서는 실제 데이터를 옮기지 않고 경로(링크)만 변경하므로 매우 빠릅니다. 다른 파일시스템 간 이동은 복사 후 삭제 방식으로 동작합니다.

rm – 파일·디렉터리 삭제 ⚠️ 가장 위험한 명령어

“`bash

rm file.txt # 파일 삭제

rm -r mydir # 디렉터리와 내부 전체 재귀 삭제

rm -rf mydir # 확인 없이 강제 삭제 (-r + -f 조합)

rmdir emptydir # 비어있는 디렉터리만 삭제 가능

“`

#### 🚨 rm -rf 안전 가이드

리눅스 터미널에는 휴지통이 없습니다. rm으로 삭제한 파일은 특수한 복구 도구 없이는 돌아오지 않습니다.

위험한 패턴과 안전한 대안:

위험한 패턴왜 위험한가안전한 방법
rm -rf /시스템 전체 삭제최신 시스템은 --no-preserve-root 없이 차단
rm -rf /*/ 하위 전체 삭제작업 전 pwd 확인 필수
rm -rf ~/홈 디렉터리 전체 삭제~/ 뒤에 슬래시 하나 실수로 대참사
와일드카드 rm -rf *.log의도치 않은 파일 일치ls *.log로 대상 먼저 확인

> 실전 안전 루틴: rm -rf를 실행하기 전에 동일한 경로를 ls로 먼저 확인하는 습관을 들이세요.

rmdir비어있는 디렉터리만 삭제할 수 있습니다. 안에 파일이 하나라도 있으면 rmdir: failed to remove 'dir': Directory not empty 오류가 납니다. 내용물이 있는 디렉터리는 rm -r을 사용해야 합니다.


3단계: 파일 내용 확인

cat – 파일 전체 출력

“`bash

cat file.txt # 파일 내용을 터미널에 출력

cat file1.txt file2.txt # 두 파일을 이어서 출력

“`

짧은 파일 확인에 적합합니다. 긴 파일을 cat으로 열면 터미널이 텍스트로 가득 차 스크롤이 밀려버립니다. 이때는 less를 사용하세요.

less – 페이지 단위로 스크롤

“`bash

less largefile.log

“`

동작
Space / f다음 페이지
b이전 페이지
/검색어아래 방향 검색
n다음 검색 결과
q종료

#### 🚨 초보자 마찰 포인트

긴 로그 파일을 cat으로 열어 터미널이 넘친 경험이 있다면, 앞으로는 less를 먼저 떠올리세요.

head / tail – 파일 앞뒤 출력

“`bash

head file.txt # 앞에서 10줄 (기본값)

head -n 20 file.txt # 앞에서 20줄

tail file.txt # 뒤에서 10줄 (기본값)

tail -n 50 file.txt # 뒤에서 50줄

tail -f access.log # 파일 실시간 모니터링 (로그 추적에 필수)

“`

tail -f는 서버 로그를 실시간으로 모니터링할 때 매우 자주 쓰입니다. 로그 파일에 새 내용이 추가될 때마다 즉시 터미널에 출력됩니다.

4단계: 검색과 필터링

grep – 텍스트 패턴 검색

“`bash

grep “ERROR” server.log # 파일에서 “ERROR” 포함 줄 출력

grep -i “error” server.log # 대소문자 구분 없이 검색

grep -r “config” /etc/ # 디렉터리 재귀 검색

grep -n “TODO” *.py # 줄 번호 함께 출력

grep -v “DEBUG” server.log # 해당 패턴 제외하고 출력

“`

find – 파일·디렉터리 검색

“`bash

find . -name “*.txt” # 현재 디렉터리 이하에서 .txt 파일 검색

find /home -name “config.json” # 특정 디렉터리에서 파일명으로 검색

find . -type d -name “logs” # 디렉터리(-type d) 이름으로 검색

find . -mtime -7 # 7일 이내 수정된 파일 검색

find . -size +100M # 100MB 이상인 파일 검색

“`

파이프(|)와 리다이렉션으로 명령어 연결하기

기본 명령어들은 파이프(|)로 연결할 때 진짜 위력이 발휘됩니다. 경쟁 글들이 거의 다루지 않는 부분입니다.

“`bash

tail -f /var/log/syslog | grep “ERROR”

ls -al | grep “2025”

ls -al > filelist.txt # 덮어쓰기

ls -al >> filelist.txt # 이어서 추가

ps aux | grep “nginx”

du -sh * | sort -rh | head -10

“`


5단계: 권한 관리

chmod – 파일 권한 변경

리눅스의 파일 권한은 소유자(owner) / 그룹(group) / 기타(others) 세 구분으로 나뉩니다.

“`bash

chmod 755 script.sh # rwxr-xr-x

chmod 644 file.txt # rw-r–r–

chmod +x script.sh # 실행 권한만 추가 (기호 표기)

chmod -w file.txt # 쓰기 권한 제거

“`

숫자 표기법 이해:

숫자권한의미
4r읽기
2w쓰기
1x실행
7rwx읽기+쓰기+실행
6rw-읽기+쓰기
5r-x읽기+실행

755 = 소유자(7=rwx) / 그룹(5=r-x) / 기타(5=r-x)

644 = 소유자(6=rw-) / 그룹(4=r–) / 기타(4=r–)

chown – 소유자 변경

“`bash

sudo chown username file.txt # 소유자 변경

sudo chown username:groupname dir/ # 소유자+그룹 동시 변경

sudo chown -R username /var/www/ # 재귀적으로 하위 전체 변경

“`

#### 🚨 Permission denied 에러 해결

Permission denied가 뜰 때 초보자가 흔히 하는 실수는 무조건 sudo를 붙이는 것입니다. 먼저 파일 소유권과 권한을 확인하세요.

“`bash

ls -l 문제파일 # 권한과 소유자 확인

whoami # 현재 사용자 확인

“`

시스템 디렉터리(/etc, /usr, /var 등)가 아닌 내 홈 디렉터리에서 Permission denied가 난다면, 권한이 잘못 설정된 것이므로 chmod로 수정하는 것이 올바른 접근입니다.


6단계: 프로세스 및 시스템 정보

프로세스 관리

“`bash

ps aux # 실행 중인 모든 프로세스 목록

ps aux | grep “python” # 특정 프로세스 찾기

top # 실시간 프로세스 모니터링 (q로 종료)

kill 1234 # 프로세스 ID(PID)로 종료

kill -9 1234 # 강제 종료 (SIGKILL)

“`

시스템 정보 확인

“`bash

uname -a # 커널 버전 및 시스템 정보

df -h # 디스크 사용량 (사람이 읽기 쉬운 단위)

du -sh /home/user/ # 특정 디렉터리 용량 확인

free -h # 메모리 사용량

“`


7단계: 도움말과 명령어 환경 이해

man과 –help – 구글 검색 전에 먼저 확인

많은 초보자가 모르는 것을 구글에서만 찾는데, 사실 가장 정확한 설명은 이미 터미널 안에 있습니다.

“`bash

man ls # ls 명령어 전체 매뉴얼 (q로 종료)

ls –help # 간단한 사용법과 옵션 요약

man grep # grep 정규표현식 옵션까지 상세 설명

“`

man 페이지 안에서도 /검색어로 원하는 내용을 찾을 수 있습니다.

history / clear / which

“`bash

history # 실행한 명령어 이력 (번호 포함)

!150 # history에서 150번 명령어 재실행

clear # 터미널 화면 지우기

which python3 # python3 명령어가 어디 있는지 경로 확인

echo $PATH # 셸이 명령어를 찾는 경로 목록 확인

“`

#### 🚨 command not found 에러 해결

“`

bash: somecommand: command not found

“`

이 에러는 두 가지 원인 중 하나입니다.

  • 패키지가 설치되지 않음sudo apt install 패키지명 (Ubuntu) 또는 sudo dnf install 패키지명 (Rocky/RHEL 계열)
  • PATH에 경로가 없음which somecommand로 위치 확인 후 PATH에 추가

주요 명령어 한눈에 보기

분류명령어핵심 기능
탐색pwd현재 경로 출력
탐색ls -al숨김 파일 포함 상세 목록
탐색cd ~홈 디렉터리 이동
디렉터리mkdir -p중첩 디렉터리 한 번에 생성
디렉터리rmdir빈 디렉터리만 삭제
파일touch빈 파일 생성
파일cp -r디렉터리 재귀 복사
파일mv이동/이름 변경
파일rm -rf강제 재귀 삭제 ⚠️
내용 확인cat짧은 파일 전체 출력
내용 확인less긴 파일 페이지 스크롤
내용 확인tail -f로그 실시간 추적
검색grep -r디렉터리 재귀 텍스트 검색
검색find . -name파일명으로 검색
권한chmod 755권한 변경
권한chown소유자 변경
프로세스`ps aux \grep`특정 프로세스 찾기
도움말man공식 매뉴얼
환경which명령어 위치 확인

환경별 주의사항 요약

WSL(Windows Subsystem for Linux)

  • Windows 파일은 /mnt/c/ 경로로 접근
  • 파일 권한이 순수 Linux와 다르게 동작할 수 있음
  • 줄바꿈 문자가 \r\n(CRLF)으로 저장된 스크립트는 실행 오류 발생 가능 → dos2unix 변환 필요

컨테이너(Docker 등)

  • 컨테이너 내부에서 rm -rf /를 실행해도 호스트가 삭제되지 않으나, 컨테이너 자체는 망가짐
  • BusyBox 기반 경량 이미지에서는 일부 옵션이 지원되지 않을 수 있음

클라우드 서버

  • 학습용·무료 계정은 sudo 권한이 제한될 수 있음
  • 항상 whoamipwd로 현재 컨텍스트를 확인하는 습관 필요

자주 묻는 질문

rm으로 삭제한 파일을 복구할 수 있나요?

기본적으로 리눅스 터미널의 rm은 파일을 휴지통으로 보내지 않고 즉시 삭제합니다. 일반적인 방법으로는 복구가 어렵습니다. 중요한 작업 전에는 cp로 백업하거나, trash-cli 같은 도구를 설치해 휴지통 개념을 도입하는 것을 권장합니다. 서버 환경이라면 스냅샷이나 백업 정책을 미리 구성하는 것이 최선입니다.

`sudo`를 붙이면 항상 Permission denied 문제가 해결되나요?

항상은 아닙니다. sudo는 관리자 권한으로 명령어를 실행하는 것이며, 무분별하게 사용하면 시스템 파일을 실수로 삭제하는 등의 사고로 이어질 수 있습니다. 먼저 ls -l로 해당 파일의 소유자와 권한을 확인하고, 내 홈 디렉터리 내 파일이라면 chmod로 권한을 수정하는 것이 올바른 접근입니다. 시스템 파일(/etc, /usr 등)을 다룰 때만 sudo를 사용하는 것이 원칙입니다.

명령어 옵션이 너무 많아서 외우기 어렵습니다. 어떻게 하면 좋을까요?

모두 외울 필요가 없습니다. man lsls --help를 습관적으로 활용하면 됩니다. 실무에서 자주 쓰는 옵션은 반복하다 보면 자연스럽게 익혀집니다. 처음에는 1단계 명령어 8개(pwd, ls, cd, mkdir, rm, cp, mv, touch)만 손에 익히고, 나머지는 필요할 때 man으로 찾아보는 방식이 훨씬 효율적입니다.

함께 보면 좋은 글

Similar Posts

답글 남기기