본문 바로가기
Tutorial/OS

리눅스 기초 명령어 ① : 파일 관리와 권한 설정

by CLJ 2025. 10. 13.

리눅스는 모든 것이 파일로 구성된 구조를 가진 운영체제다. 따라서 파일과 디렉터리를 다루는 명령어는 리눅스의 기초이자 핵심이다. 파일 이동, 복사, 탐색, 내용 확인, 그리고 권한 관리까지의 흐름을 이해하면 복잡해 보이던 터미널 환경이 체계적으로 다가온다. 이 글에서는 리눅스 초보자도 바로 활용할 수 있는 기본 명령어 20개 중 핵심 5개 영역을 실제 예시와 함께 정리했다.

 

 

1) 파일·디렉터리: pwd, ls, cd, mkdir, rmdir/rm -r

리눅스 시스템의 핵심은 모든 것이 파일로 이루어져 있다는 점이다. 그래서 경로 이동, 목록 조회, 폴더 생성과 삭제는 리눅스의 ‘기본 언어’에 해당한다. 아래 명령어 다섯 개만 익히면 대부분의 파일 탐색과 구조 관리를 수행할 수 있다.


현재 위치 확인: pwd

현재 작업 중인 디렉터리(절대 경로)를 출력한다.

pwd

출력 예시:

/home/user/projects

항상 명령 실행 전 pwd로 “내가 지금 어디에 있는가”를 확인하는 습관이 중요하다. 특히 rm, mv, cp 같은 명령은 위치를 잘못 잡으면 시스템 전체에 영향을 줄 수 있다.


디렉터리 목록 보기: ls

폴더 안의 파일·폴더 목록을 확인한다. 다음과 같이 옵션을 조합해 사용할 수 있다. 

ls -alh
  • -a : 숨김파일(.으로 시작) 포함
  • -l : 상세 정보 표시(권한, 소유자, 크기, 수정일)
  • -h : 사람이 읽기 쉬운 크기 단위(KB, MB 등)

디렉터리 이동: cd

디렉터리 간 이동 명령이다. 리눅스의 ~는 자신의 홈 디렉터리를 의미한다. 

cd /etc          # 절대 경로로 이동
cd ..            # 상위 디렉터리로 이동
cd ~/Downloads   # 홈 디렉터리 내로 이동
cd -             # 이전 디렉터리로 돌아가기

 


새 폴더 생성: mkdir

새로운 디렉터리를 만든다.

mkdir backup
mkdir -p /home/user/archive/2025

-p 옵션을 붙이면 상위 폴더가 없어도 함께 생성한다. 예를 들어 /home/user/archive/2025 구조 전체를 한 번에 만들 수 있다. 만약 /home/user/archive가 없는 상태에서 mkdir명령어로만 실행하면 오류가 나지만 -p옵션을 사용하면 존재하지 않는 상위 폴더까지 자동생성한다. 


폴더 삭제: rmdir, rm -r

폴더 제거는 주의가 필요한 작업이다.

rmdir empty_dir       # 비어 있는 폴더만 삭제
rm -r old_logs        # 파일이 들어 있는 폴더까지 삭제

rm -r은 되돌릴 수 없다. 삭제 전 pwd로 현재 경로를 반드시 확인하고, ls로 대상 폴더를 다시 점검해야 한다.


실무 예시

pwd                     # 현재 작업 중인 디렉터리(절대 경로) 확인
mkdir project           # 'project'라는 새 디렉터리 생성
cd project              # project 폴더로 이동
mkdir src logs          # src(소스)와 logs(로그) 폴더를 동시에 생성
ls -al                  # 현재 디렉터리의 모든 파일·폴더 목록을 상세히 출력

위와 같이 현재 경로 확인 → 폴더 생성 → 이동 → 구조 점검까지 한 번에 처리할 수 있다.


요약 

  • pwd: 현재 경로 확인
  • ls -alh: 폴더·파일 목록과 속성 확인
  • cd: 디렉터리 이동
  • mkdir -p: 새 폴더 생성 (필요시 상위 폴더 포함)
  • rmdir / rm -r: 폴더 삭제

2) 이동·복사·이름변경: cp, mv

리눅스에서 파일을 복사하거나 이동하는 일은 가장 기본적이면서도 자주 수행되는 작업이다. 이 과정에서 사용되는 명령이 cp와 mv이며, 단순한 파일 관리부터 백업과 정리까지 대부분의 작업에 활용된다.


파일 복사: cp

cp는 copy의 약자로, 파일이나 디렉터리를 복사할 때 사용한다.

cp file1.txt file2.txt

file1.txt를 같은 위치에 file2.txt로 복제한다. 자주 사용하는 옵션은 다음과 같다.

  • -r: 폴더(디렉터리)를 재귀적으로 복사
  • -p: 원본의 권한·수정시간을 유지
  • -v: 복사 과정을 출력

예시:

cp -rpv /home/user/docs /home/backup/docs

-p 옵션은 원본 파일의 권한(permission), 소유자(owner), 수정 시간(timestamp) 정보를 그대로 보존한다. 이를 사용하지 않으면 복사된 파일이 현재 사용자 기준의 새 권한과 시간으로 바뀐다. 덮어쓰기를 방지하려면 -i 옵션을 함께 사용해, 동일 이름의 파일이 있을 때 진행할지를 묻는 확인 메시지를 띄워준다.

cp -i file1.txt file2.txt

파일 이동 또는 이름 변경: mv

mv는 move의 약자로, 파일을 이동하거나 이름을 변경할 때 사용한다.

mv oldname.txt newname.txt

같은 폴더 안에서는 이름이 변경된다. 다른 위치로 옮기려면 경로를 함께 지정한다.

mv /home/user/logs/*.log /home/user/archive/

logs 폴더의 모든 .log 파일을 archive 폴더로 이동한다.

주요 옵션:

  • -i: 덮어쓰기 전에 확인
  • -v: 이동 과정 출력

find와 함께 사용하면 자동화된 이동 작업을 구성할 수 있다.

find /data -name "*.tmp" -exec mv {} /data/tmp/ \;

실무 예시

mkdir -p ~/backup/configs

홈 디렉터리 아래 backup/configs 폴더를 만든다. -p 옵션 덕분에 상위 폴더가 없어도 자동으로 생성되고, 이미 존재하면 오류 없이 넘어간다.

cp -rp /etc/nginx/nginx.conf ~/backup/configs/

Nginx 설정 파일을 백업 폴더로 복사한다. -r은 디렉터리용 재귀 옵션, -p는 원본의 권한·소유자·수정 시간을 유지한다. 시스템 파일을 다루므로 일반적으로 sudo가 필요하다.

mv ~/backup/configs/nginx.conf ~/backup/configs/nginx.conf.bak

백업 파일의 이름을 .bak으로 바꿔 구분한다. 같은 경로 안에서는 단순 이름 변경으로 처리되며, 덮어쓰기를 방지하려면 -i 옵션을 추가한다.


 

요약

  • cp: 파일이나 폴더 복사 (-r, -p, -v, -i 옵션 조합)
  • mv: 파일 이동 또는 이름 변경 (-i, -v 자주 사용)

이 두 명령은 리눅스의 기본적인 파일 관리에 가장 자주 사용된다.

 


3) 내용 조회·뷰어: cat, less

리눅스 환경에서 대부분의 설정과 로그는 텍스트 파일로 저장된다. 따라서 파일 내용을 빠르게 확인하고 분석하는 능력은 매우 중요하다. 이때 가장 기본적으로 사용하는 명령이 cat과 less이다. 두 명령은 비슷하지만, 다루는 파일 크기와 목적에 따라 구분해서 사용하는 것이 효율적이다.


파일 내용 보기: cat

cat은 concatenate의 약자로, 파일 내용을 그대로 화면에 출력한다.

cat /etc/hostname

짧은 설정 파일이나 단문 로그를 확인할 때 적합하다. 여러 파일을 한 번에 확인하거나 이어 붙일 수도 있다.

cat file1.txt file2.txt > merged.txt

이 명령은 file1.txt와 file2.txt의 내용을 합쳐 merged.txt 파일로 저장한다.

자주 쓰는 옵션:

  • -n: 줄 번호 표시
  • -E: 줄 끝에 $ 표시 (공백이나 줄바꿈 확인용)

단점은 파일이 너무 크면 화면이 빠르게 넘어가며 내용이 잘리지 않고 전부 출력된다는 점이다. 이런 경우에는 less를 사용하는 것이 훨씬 효율적이다.


대용량 로그 탐색: less

less는 페이지 단위로 파일을 읽어 들이는 뷰어다. 대형 로그 파일이나 지속적으로 확인해야 하는 시스템 로그를 볼 때 유용하다.

less /var/log/syslog

한 번에 파일 전체를 읽지 않기 때문에 속도가 빠르고, 메모리 사용량도 적다.

 

주요 조작키:

기능
한 줄 아래 / 위 ↓ / ↑
한 페이지 아래 / 위 Space / b
문자열 검색 /키워드
다음 검색 결과 n
종료 q

 

less는 grep(아래 4번 참조)과 조합하여 다음과 같이 필요한 내용만 필터링해서 페이지 단위로 분석할 수 있다.

grep "fail" /var/log/auth.log | less

 

이 명령은 로그 파일에서 “fail”이 포함된 줄만 찾아 페이지 단위로 확인하는 방법이다. 로그인 실패나 인증 오류 내역을 찾을 때 자주 사용하는 조합이다. 필요한 정보만 추려서 안전하게 탐색할 수 있어, 로그 분석의 기본 패턴으로 쓰인다.


실무 예시

cd /var/log      # 로그 파일들이 모여 있는 디렉터리로 이동
less syslog      # syslog 파일을 페이지 단위로 열어 로그 내용 확인
grep -i "error" syslog | less   # error가 포함된 줄만 필터링해 페이지 단위로 확인

시스템 로그를 확인하고, 특정 키워드(error)가 포함된 줄만 따로 추려서 본다. 이런 방식으로 서비스 장애나 설정 오류를 빠르게 찾을 수 있다.


요약

  • cat: 짧은 텍스트 파일 확인 또는 파일 병합용
  • less: 대용량 로그 분석용, 스크롤·검색 지원

두 명령어는 리눅스에서 로그와 설정 파일을 읽는 기본 도구이며, 파일 내용을 직접 편집하지 않고 안전하게 확인할 수 있는 가장 효율적인 방법이다.


4) 검색·탐색: grep, find

서버에는 수천 개의 로그와 설정 파일이 쌓인다. 이 중에서 필요한 정보만 빠르게 찾는 능력이 곧 작업 효율이다.
grep과 find는 리눅스의 대표적인 검색 명령이며, 텍스트 내용과 파일 자체를 각각 탐색할 때 사용된다.


텍스트 내용 검색: grep

grep은 Global Regular Expression Print의 약자로, 특정 단어나 패턴이 포함된 줄만 출력한다.

grep "error" /var/log/syslog     # syslog 파일에서 'error'가 포함된 줄만 출력

주요 옵션:

  • -i: 대소문자 구분 없이 검색 (Error, ERROR 모두 매칭)
  • -n: 줄 번호 함께 표시
  • -r: 하위 폴더까지 재귀적으로 검색
  • -v: 특정 패턴 제외
  • --color=auto: 일치한 문자열 색상 강조
grep -rin --color=auto "fail" /var/log

이 명령은 로그 분석 시 자주 사용되며, 결과를 색상으로 표시해 가독성을 높인다.


파일·디렉터리 탐색: find

find는 파일 이름, 크기, 수정 시간 등 파일 속성 기반 검색을 수행한다.

find /home -name "*.sh"          # /home 경로 아래의 모든 .sh(쉘 스크립트) 파일 찾기

자주 사용하는 옵션:

옵션  의미  예시
-type f 일반 파일만 검색 find . -type f
-type d 디렉터리만 검색 find . -type d
-size +100M 100MB보다 큰 파일 find / -size +100M
-mtime -7 최근 7일 내 수정된 파일 find /etc -mtime -7
-exec 조건에 맞는 파일에 명령 실행 find . -name "*.log" -exec rm {} \;

-exec은 매칭된 각 파일에 지정한 명령을 실행한다. 예를 들어 위 명령은 현재 폴더에서 .log 파일을 찾아 자동으로 삭제한다. 참고로 리눅스에서 파일의 세 가지 주요 시간 정보에는 mtime, ctime, atime이 있다. m은 moditioncation, c는 chagem, a는 access를 의미하여 각각 파일 내용이 수정된 시각, 파일 속성(권한, 소유자 등)이 바뀐 시각, 파일을 마지막으로 읽은 시각이다. 


grep + find 조합

두 명령을 파이프로 연결하면 특정 조건을 가진 파일에서 특정 단어를 검색하는 고급 필터링이 가능하다.

find /var/log -name "*.log" | xargs grep -i "timeout"   # 모든 로그 중 'timeout' 단어가 포함된 줄 찾기

find로 대상 파일 목록을 만들고, grep으로 내용을 필터링하는 방식이다.
대용량 로그를 분석하거나 시스템 전체에서 오류 메시지를 추적할 때 유용하다.


실무 예시

cd /var/log
grep -i "error" syslog | less     # syslog에서 error가 포함된 로그만 필터링해 페이지 단위로 보기
find /home/user -type f -size +50M  # 50MB 이상 파일만 검색해 디스크 사용 원인 파악

첫 번째 명령은 에러 로그만 추출해 빠르게 점검하고,
두 번째 명령은 대용량 파일을 찾아 용량 문제를 진단할 때 사용한다.


요약

  • grep: 파일 내부의 문자열 검색 (-r, -i, --color 옵션 자주 사용)
  • find: 파일 이름, 크기, 수정 시간 등 속성 기반 검색 (-exec으로 자동 처리 가능)

이 두 명령을 조합하면, 리눅스 파일 시스템 전체를 검색엔진처럼 다루는 수준의 효율을 낼 수 있다.


5) 권한·소유권: chmod, chown

리눅스는 멀티유저 환경이기 때문에 파일이나 폴더마다 누가 읽고, 쓰고, 실행할 수 있는지를 명확히 구분해야 한다.
이때 사용하는 명령이 chmod(권한 변경)과 chown(소유자 변경)이다. 두 명령은 시스템의 기본적인 보안을 지탱하는 핵심 도구다.


파일 권한 변경: chmod

chmod는 change mode의 약자로, 파일이나 폴더의 접근 권한을 설정한다. 권한은 세 그룹(user, group, others)으로 나뉘며, 각 그룹은 읽기(r=4), 쓰기(w=2), 실행(x=1)의 값을 가진다.

chmod 755 script.sh      # 사용자: rwx, 그룹·기타: r-x
chmod 644 index.html     # 사용자: rw-, 그룹·기타: r--

숫자는 8진수 조합이며, 각 자리(사용자/그룹/기타)의 권한 합으로 표현된다. 예를 들어 755는 rwxr-xr-x에 해당한다.

문자 방식으로도 조정할 수 있다.

chmod u+x run.sh         # 사용자(user)에게 실행 권한 추가
chmod go-w config.conf   # 그룹(group)과 기타(others)의 쓰기 권한 제거

 

chmod -R을 사용하면 폴더 전체에 재귀적으로 권한을 적용할 수 있다. 단, 시스템 경로(/etc, /usr 등)에 실행하면 큰 문제를 일으킬 수 있으므로 주의해야 한다.


파일 소유자 변경: chown

chown은 파일이나 폴더의 소유자(owner)와 그룹(group)을 변경하는 명령이다.
리눅스에서는 누가 파일을 다룰 수 있는지 명확히 구분하기 때문에, 소유권을 올바르게 지정하는 것이 중요하다.

sudo chown user:group file.txt
  • user: 새 소유자로 지정할 사용자 이름
  • group: 함께 사용할 그룹 이름
  • file.txt: 변경할 파일 이름
  • sudo: 관리자 권한으로 실행 (일반 사용자는 타인 파일 변경 불가)

예:

sudo chown ubuntu:dev report.log

report.log의 소유자를 ubuntu, 그룹을 dev로 변경한다.
이제 ubuntu 계정이 이 파일을 관리하고, dev 그룹 사용자는 그룹 권한 범위 내에서 접근할 수 있다.

폴더 전체의 소유권을 한 번에 바꾸려면 -R 옵션을 쓴다.

sudo chown -R www-data:www-data /var/www/html

웹서버가 실행되는 계정(www-data)이 /var/www/html 폴더와 내부 파일을 모두 다룰 수 있게 된다. 웹 페이지 수정이나 로그 생성이 되지 않을 때 이 명령으로 문제를 해결하는 경우가 많다.

 


정리

이 글에서는 리눅스의 가장 기초적인 작업 영역인 파일 시스템 조작과 권한 관리에 대해 알아보았다. pwd, ls, cd, mkdir, rm으로 디렉터리 구조를 이해하고 이동하는 방법과 cp와 mv로 파일을 복사하고 이름을 바꾸는 방법을 알아보았다. 또한, cat과 less로 파일 내용을 확인하고, grep과 find를 이용해 필요한 정보를 빠르게 찾는 방법과 chmod와 chown으로 파일의 권한과 소유자를 변경하는 방법을 배웠다. 이 명령어들은 리눅스의 출발점이며, 시스템 관리나 서버 운영의 토대가 된다. 터미널에 익숙하지 않더라도 이 다섯 가지 범주의 명령만 정확히 익히면, 리눅스 환경에서 대부분의 파일 관리 작업을 안전하고 효율적으로 수행할 수 있다.