📁 파일 및 디렉토리 관련 명령어
기본 탐색 명령어
# 현재 디렉토리 확인
pwd
# 디렉토리 내용 보기
ls # 기본 목록
ls -l # 상세 정보 포함
ls -la # 숨김 파일까지 포함
ls -lh # 파일 크기를 사람이 읽기 쉬운 형태로
# 디렉토리 이동
cd /path/to/dir # 절대 경로로 이동
cd .. # 상위 디렉토리로
cd ~ # 홈 디렉토리로
cd - # 이전 디렉토리로
파일/디렉토리 생성 및 삭제
# 디렉토리 생성
mkdir dirname # 단일 디렉토리 생성
mkdir -p path/to/dir # 중간 경로까지 모두 생성
# 파일 생성
touch filename # 빈 파일 생성
touch file1 file2 file3 # 여러 파일 동시 생성
# 복사
cp source dest # 파일 복사
cp -r source dest # 디렉토리 복사 (재귀적)
cp -p source dest # 권한과 시간 정보 유지
# 이동/이름 변경
mv oldname newname # 파일명 변경
mv file /path/to/dest # 파일 이동
# 삭제
rm filename # 파일 삭제
rm -r dirname # 디렉토리 삭제 (재귀적)
rm -f filename # 강제 삭제
rm -rf dirname # 디렉토리 강제 삭제 (주의!)
📄 파일 내용 확인 명령어
파일 내용 보기
# 전체 내용 보기
cat filename # 파일 전체 출력
less filename # 페이지 단위로 보기
more filename # 페이지 단위로 보기 (less보다 기능 제한적)
# 일부 내용 보기
head filename # 앞부분 10줄 출력
head -n 20 filename # 앞부분 20줄 출력
tail filename # 뒷부분 10줄 출력
tail -n 20 filename # 뒷부분 20줄 출력
tail -f filename # 실시간으로 추가되는 내용 확인 (로그 모니터링)
파일 검색
# 파일 찾기
find /path -name "*.txt" # 특정 확장자 파일 찾기
find /path -type f -name "file" # 파일만 찾기
find /path -type d -name "dir" # 디렉토리만 찾기
find /path -size +10M # 10MB보다 큰 파일 찾기
# 명령어 위치 찾기
which command # 명령어 실행 파일 위치
whereis command # 명령어, 소스, 매뉴얼 위치
# 파일 내용에서 검색
grep "pattern" filename # 패턴과 일치하는 줄 찾기
grep -i "pattern" filename # 대소문자 구분 없이 찾기
grep -r "pattern" /path # 디렉토리 내 모든 파일에서 재귀 검색
grep -n "pattern" filename # 줄 번호와 함께 출력
🔒 권한 및 소유권 관리
권한 변경
# chmod: 파일 권한 변경
chmod 755 filename # rwxr-xr-x 권한 설정
chmod u+x filename # 소유자에게 실행 권한 추가
chmod g-w filename # 그룹에서 쓰기 권한 제거
chmod o=r filename # 기타 사용자를 읽기 전용으로 설정
# 권한 번호 의미
# 4: 읽기(r), 2: 쓰기(w), 1: 실행(x)
# 755 = 소유자(7=4+2+1), 그룹(5=4+1), 기타(5=4+1)
소유권 변경
# chown: 소유자 변경
chown user filename # 소유자만 변경
chown user:group filename # 소유자와 그룹 변경
chown -R user:group dirname # 디렉토리와 하위 모든 파일의 소유권 변경
# chgrp: 그룹만 변경
chgrp group filename
⚙️ 시스템 관리 명령어
프로세스 관리
# 프로세스 확인
ps # 현재 터미널의 프로세스
ps aux # 모든 프로세스 상세 정보
ps -ef # 모든 프로세스 (다른 형식)
# 실시간 프로세스 모니터링
top # 실시간 프로세스 정보
htop # top의 향상된 버전 (설치 필요)
# 프로세스 종료
kill PID # 프로세스 ID로 종료
kill -9 PID # 강제 종료
killall process_name # 프로세스 이름으로 모두 종료
시스템 정보
# 시스템 기본 정보
uname -a # 시스템 정보 전체
uname -r # 커널 버전
hostname # 호스트명
# 디스크 사용량
df -h # 파일시스템 사용량 (사람이 읽기 쉬운 형태)
du -h dirname # 디렉토리 크기
du -sh dirname # 디렉토리 총 크기만
# 메모리 정보
free -h # 메모리 사용량
cat /proc/meminfo # 상세 메모리 정보
네트워크 관련
# 네트워크 연결 확인
ping hostname # 연결성 테스트
ping -c 4 hostname # 4번만 ping
# 네트워크 정보
ifconfig # 네트워크 인터페이스 정보
ip addr show # 네트워크 인터페이스 정보 (최신)
netstat -tuln # 열린 포트 확인
🗂️ 아카이브 및 압축
tar 명령어
# 압축하기
tar -czf archive.tar.gz files/ # gzip으로 압축
tar -cjf archive.tar.bz2 files/ # bzip2로 압축
tar -cJf archive.tar.xz files/ # xz로 압축
# 압축 풀기
tar -xzf archive.tar.gz # gzip 압축 해제
tar -xjf archive.tar.bz2 # bzip2 압축 해제
tar -xJf archive.tar.xz # xz 압축 해제
# 내용 확인
tar -tzf archive.tar.gz # 압축 파일 내용 목록 확인
기타 압축 도구
# gzip/gunzip
gzip filename # 파일 gzip 압축
gunzip filename.gz # gzip 압축 해제
# zip/unzip
zip -r archive.zip files/ # zip 압축
unzip archive.zip # zip 압축 해제
unzip -l archive.zip # zip 파일 내용 목록
📝 텍스트 처리 명령어
정렬 및 중복 제거
# 정렬
sort filename # 알파벳 순 정렬
sort -n filename # 숫자 순 정렬
sort -r filename # 역순 정렬
# 중복 제거
uniq filename # 인접한 중복 줄 제거
sort filename | uniq # 정렬 후 중복 제거
텍스트 조작
# cut: 열 추출
cut -d':' -f1 /etc/passwd # ':' 구분자로 첫 번째 필드 추출
cut -c1-10 filename # 1-10번째 문자 추출
# sed: 스트림 편집기
sed 's/old/new/' filename # 첫 번째 매치만 치환
sed 's/old/new/g' filename # 모든 매치 치환
sed '5d' filename # 5번째 줄 삭제
# awk: 패턴 스캐닝 및 처리
awk '{print $1}' filename # 첫 번째 필드만 출력
awk -F':' '{print $1}' /etc/passwd # ':' 구분자로 첫 번째 필드 출력
🔧 유용한 조합 명령어
파이프와 리다이렉션
# 파이프 (|): 명령어 결과를 다음 명령어의 입력으로
ls -l | grep "^d" # 디렉토리만 필터링
ps aux | grep python # python 프로세스만 검색
cat /var/log/syslog | tail -20 # 로그 파일의 마지막 20줄
# 리다이렉션
command > file # 출력을 파일에 저장 (덮어쓰기)
command >> file # 출력을 파일에 추가
command < file # 파일을 입력으로 사용
command 2> error.log # 오류만 파일에 저장
실무에서 자주 사용하는 조합
# 가장 큰 파일 찾기
find /path -type f -exec ls -lh {} + | sort -k5 -hr | head -10
# 특정 확장자 파일에서 문자열 검색
find . -name "*.txt" -exec grep -l "search_term" {} \;
# 디렉토리별 용량 확인 (크기 순 정렬)
du -sh */ | sort -hr
# 로그 파일에서 특정 시간대 에러 찾기
grep "ERROR" /var/log/app.log | grep "2024-01-15"
자주 나오는 옵션들
- ls -la: 숨김 파일 포함 상세 정보
- rm -rf: 디렉토리 강제 삭제
- cp -r: 디렉토리 재귀 복사
- grep -r: 재귀 검색
- find -name: 파일명으로 찾기
- chmod 755: 권한 설정
- tar -czf: gzip 압축으로 묶기
헷갈리기 쉬운 부분
- mv는 이동과 이름 변경 모두 가능
- less와 more의 차이 (less가 더 많은 기능)
- head와 tail의 기본값은 10줄
- find에서 -name은 파일명, -type은 파일 유형
- 권한 숫자: 4(읽기) + 2(쓰기) + 1(실행)