====== Linux 기본 명령어 완전 정복 ======
**← 돌아가기**: [[wiki:it:linux:start|Linux 완전 정복 가이드]]
**← 다음**: [[wiki:it:linux:advanced_commands|권한 설정 & 고급 명령어]]
**Linux 터미널이 처음이신가요?** 괜찮습니다! 차근차근 따라하다 보면 어느새 Linux 고수가 되어 있을 거예요.
----
===== 1. 🎯 학습 목표 =====
이 가이드를 마치면:
- **파일과 폴더**를 자유자재로 다룰 수 있습니다
- **터미널에서 길을 잃지 않고** 원하는 곳으로 이동할 수 있습니다
- **파일 내용을 확인**하고 **검색**할 수 있습니다
- **실무에서 자주 쓰는 명령어**들을 자연스럽게 사용할 수 있습니다
===== 2. 🚀 Linux 터미널 첫 만남 =====
==== 1) Linux가 뭔가요? ====
**Linux**는 스마트폰의 안드로이드, 웹사이트를 돌리는 서버, 심지어 냉장고까지! 우리 주변 어디에나 있는 운영체제입니다.
**터미널**은 마우스 클릭 대신 **글자로 명령**을 내리는 방식입니다. 처음엔 불편해 보이지만, 익숙해지면 마우스보다 훨씬 빠르고 정확해요!
----
==== 2) 터미널 열기 ====
**Windows (WSL)**:
%%Windows 키 + R → "wsl" 입력 → 엔터%%
**Mac**:
%%Cmd + Space → "터미널" 검색 → 엔터%%
**Linux**:
%%Ctrl + Alt + T%%
===== 3. 🧭 1단계: 내가 어디에 있는지 파악하기 =====
----
==== 1) pwd - 현재 위치 확인 ====
**의미**: "Print Working Directory" (현재 작업 중인 디렉토리 출력)
pwd
**결과 예시**:
/home/username
**🔍 이해하기**:
- Linux에서는 모든 파일과 폴더가 **트리 구조**로 되어 있어요
- %%/%%가 최상위 폴더(루트)이고, 그 아래로 가지를 뻗어나가는 형태
- %%/home/username%%은 "루트 아래 home 폴더 아래 username 폴더"를 의미
----
==== 2) ls - 현재 위치의 파일과 폴더 보기 ====
**의미**: "List" (목록 보기)
# 기본 사용법
ls
# 자세한 정보까지 보기
ls -l
# 숨겨진 파일까지 모두 보기
ls -a
# 자세한 정보 + 숨겨진 파일 모두 보기
ls -la
**결과 해석**:
drwxr-xr-x 2 user user 4096 Jan 15 10:30 Documents
-rw-r--r-- 1 user user 1234 Jan 15 09:15 hello.txt
- **첫 글자**: ''d''는 폴더, ''-''는 파일
- **숫자**: 파일 크기 (바이트)
- **날짜/시간**: 마지막 수정 시간
----
==== 3) cd - 다른 폴더로 이동하기 ====
**의미**: "Change Directory" (디렉토리 변경)
# Documents 폴더로 이동
cd Documents
# 상위 폴더로 이동
cd ..
# 홈 폴더로 이동
cd ~
cd (아무것도 안 적기)
# 루트 폴더로 이동
cd /
# 이전 위치로 돌아가기
cd -
**💡 실습해보기**:
pwd # 현재 위치 확인
ls # 뭐가 있는지 보기
cd Documents # Documents 폴더로 이동
pwd # 이동했는지 확인
cd .. # 다시 원래 위치로
pwd # 돌아왔는지 확인
===== 4. 📁 2단계: 폴더 만들고 지우기 =====
----
==== 1) mkdir - 새 폴더 만들기 ====
**의미**: "Make Directory" (디렉토리 생성)
# 기본 사용법
mkdir 새폴더
# 여러 폴더 한 번에 만들기
mkdir 폴더1 폴더2 폴더3
# 중간 폴더가 없어도 자동으로 만들어주기
mkdir -p 프로젝트/문서/2024년/1월
**💡 실습해보기**:
mkdir 연습폴더
ls # 폴더가 생겼는지 확인
cd 연습폴더
pwd # 들어왔는지 확인
----
==== 2) rmdir - 빈 폴더 지우기 ====
**의미**: "Remove Directory" (디렉토리 삭제)
# 빈 폴더만 삭제 가능
rmdir 빈폴더
# 폴더 안에 파일이 있으면 삭제 안됨 (안전장치)
**⚠️ 주의**: ''rmdir''은 빈 폴더만 지울 수 있어요. 파일이 들어있는 폴더는 나중에 배울 ''rm -r''을 사용해야 합니다.
===== 5. 📄 3단계: 파일 다루기 =====
----
==== 1) touch - 빈 파일 만들기 ====
**의미**: 원래는 파일의 시간을 바꾸는 명령어인데, 파일이 없으면 새로 만들어줘요
# 빈 파일 만들기
touch 새파일.txt
# 여러 파일 한 번에 만들기
touch 파일1.txt 파일2.txt 파일3.txt
----
==== 2) cp - 파일 복사하기 ====
**의미**: "Copy" (복사)
# 기본 사용법: cp 원본 복사본
cp 원본.txt 복사본.txt
# 폴더째 복사하기
cp -r 원본폴더 복사폴더
# 다른 폴더로 복사하기
cp 파일.txt %%/다른/폴더/경로/%%
**💡 실습해보기**:
touch 원본.txt # 빈 파일 만들기
cp 원본.txt 복사본.txt # 복사하기
ls # 두 파일이 모두 있는지 확인
----
==== 3) mv - 파일 이동하기 (이름 바꾸기) ====
**의미**: "Move" (이동)
# 파일 이름 바꾸기
mv 옛이름.txt 새이름.txt
# 파일을 다른 폴더로 이동
mv 파일.txt %%/다른/폴더/%%
# 폴더 이름 바꾸기
mv 옛폴더명 새폴더명
**🔍 이해하기**: ''mv''는 이동과 이름 바꾸기를 동시에 할 수 있어요!
----
==== 4) rm - 파일 지우기 ====
**의미**: "Remove" (삭제)
# 파일 삭제
rm 파일.txt
# 여러 파일 삭제
rm 파일1.txt 파일2.txt
# 폴더와 그 안의 모든 내용 삭제
rm -r 폴더명
**⚠️ 경고**: ''rm''은 되돌릴 수 없어요! 특히 ''rm -r''은 매우 위험하니 조심하세요.
**💡 실습해보기**:
touch 테스트.txt # 테스트 파일 만들기
ls # 파일이 있는지 확인
rm 테스트.txt # 파일 삭제
ls # 파일이 사라졌는지 확인
===== 6. 📖 4단계: 파일 내용 보기 =====
----
==== 1) cat - 파일 내용 전체 보기 ====
**의미**: "Concatenate" (연결하다)
# 파일 내용 보기
cat 파일.txt
# 여러 파일 내용 한 번에 보기
cat 파일1.txt 파일2.txt
# 파일에 내용 추가하기
cat >> 파일.txt
(내용 입력 후 Ctrl+D로 종료)
**💡 실습해보기**:
echo "안녕하세요" > 인사.txt # 파일에 내용 쓰기
cat 인사.txt # 내용 확인
----
==== 2) less - 파일 내용 페이지별로 보기 ====
**의미**: 긴 파일을 편리하게 볼 수 있어요
less 긴파일.txt
**조작법**:
- **스페이스바**: 다음 페이지
- **b**: 이전 페이지
- **q**: 종료
- %%/검색어%%: 내용 검색
- **G**: 파일 끝으로 이동
- **g**: 파일 처음으로 이동
----
==== 3) head - 파일 앞부분 보기 ====
**의미**: 파일의 첫 몇 줄만 보기
# 처음 10줄 보기 (기본값)
head 파일.txt
# 처음 5줄만 보기
head -n 5 파일.txt
----
==== 4) tail - 파일 뒷부분 보기 ====
**의미**: 파일의 마지막 몇 줄만 보기
# 마지막 10줄 보기 (기본값)
tail 파일.txt
# 마지막 20줄 보기
tail -n 20 파일.txt
# 실시간으로 추가되는 내용 보기 (로그 파일에 유용)
tail -f 로그파일.txt
===== 7. 🔍 5단계: 파일과 내용 찾기 =====
----
==== 1) find - 파일 찾기 ====
**의미**: 조건에 맞는 파일을 찾아줘요
# 현재 폴더에서 이름으로 찾기
find . -name "*.txt"
# 특정 폴더에서 찾기
find %%/home/user%% -name "*.pdf"
# 대소문자 구분 없이 찾기
find . -iname "*.TXT"
# 폴더만 찾기
find . -type d -name "test*"
# 파일만 찾기
find . -type f -name "*.log"
**💡 실습해보기**:
touch 테스트1.txt 테스트2.txt 문서.pdf # 테스트 파일들 만들기
find . -name "*.txt" # txt 파일들 찾기
find . -name "테스트*" # 테스트로 시작하는 파일 찾기
----
==== 2) grep - 파일 내용에서 텍스트 찾기 ====
**의미**: "Global Regular Expression Print" (전역 정규표현식 출력)
# 파일에서 특정 단어 찾기
grep "찾을단어" 파일.txt
# 대소문자 구분 없이 찾기
grep -i "hello" 파일.txt
# 여러 파일에서 찾기
grep "에러" *.log
# 줄 번호와 함께 출력
grep -n "함수" 코드.py
# 찾은 단어 주변 3줄도 함께 보기
grep -C 3 "중요" 문서.txt
**💡 실습해보기**:
echo "안녕하세요 리눅스 세계입니다" > 인사.txt
echo "리눅스는 정말 재미있어요" >> 인사.txt
grep "리눅스" 인사.txt # 리눅스가 포함된 줄 찾기
grep -n "재미" 인사.txt # 재미가 포함된 줄과 줄 번호 보기
===== 8. 🎯 실전 연습 문제 =====
**🏋️ 연습 1: 프로젝트 폴더 구조 만들기**
# 1. 홈 디렉토리에서 시작
cd ~
# 2. 프로젝트 폴더 구조 만들기
mkdir -p 내프로젝트/문서/2024
mkdir -p 내프로젝트/코드/파이썬
mkdir -p 내프로젝트/코드/웹개발
# 3. 각 폴더에 테스트 파일 만들기
touch 내프로젝트/문서/2024/계획서.txt
touch 내프로젝트/코드/파이썬/main.py
touch 내프로젝트/코드/웹개발/index.html
# 4. 구조 확인
find 내프로젝트 -type f
**🏋️ 연습 2: 파일 정리하기**
# 1. 테스트 파일들 만들기
touch 문서1.txt 문서2.pdf 이미지1.jpg 이미지2.png 코드1.py
# 2. 파일 종류별로 폴더 만들기
mkdir 문서파일 이미지파일 코드파일
# 3. 파일들을 적절한 폴더로 이동
mv *.txt *.pdf 문서파일/
mv *.jpg *.png 이미지파일/
mv *.py 코드파일/
# 4. 결과 확인
ls -la 문서파일/ 이미지파일/ 코드파일/
**🏋️ 연습 3: 로그 파일 분석하기**
# 1. 가상의 로그 파일 만들기
echo "2024-01-15 10:30:00 INFO 서버 시작" > 서버.log
echo "2024-01-15 10:31:00 ERROR 데이터베이스 연결 실패" >> 서버.log
echo "2024-01-15 10:32:00 INFO 데이터베이스 연결 성공" >> 서버.log
echo "2024-01-15 10:33:00 WARNING 메모리 사용량 높음" >> 서버.log
# 2. 로그 분석하기
cat 서버.log # 전체 로그 보기
grep "ERROR" 서버.log # 에러만 찾기
grep -c "INFO" 서버.log # INFO 로그 개수 세기
tail -n 2 서버.log # 마지막 2줄만 보기
===== 9. 💡 꿀팁 모음 =====
**🚀 생산성 향상 팁**:
1. **Tab 키 활용**: 파일명이나 폴더명을 일부만 입력하고 Tab을 누르면 자동완성!
cd Doc[Tab] # Documents로 자동완성
2. **히스토리 활용**: 이전에 입력한 명령어 재사용
history # 이전 명령어 목록 보기
!123 # 123번째 명령어 다시 실행
!! # 바로 이전 명령어 다시 실행
3. **와일드카드 활용**: 여러 파일을 한 번에 처리
ls *.txt # 모든 txt 파일
ls test?.txt # test1.txt, test2.txt 등
ls test[1-3].txt # test1.txt, test2.txt, test3.txt
4. **명령어 조합**: 여러 명령어를 한 번에
mkdir 새폴더 && cd 새폴더 # 폴더 만들고 바로 이동
ls -la | grep "txt" # 파일 목록에서 txt만 필터링
**⚠️ 주의사항**:
- ''rm -rf''는 매우 위험해요! 복구 불가능합니다.
- 중요한 파일은 항상 백업하세요
- 명령어를 모르면 ''man 명령어''로 도움말을 확인하세요
- 파일명에 공백이 있으면 따옴표로 감싸주세요: ''"파일 이름.txt"''
**🎓 다음 단계**: 기본 명령어가 익숙해지면 [[wiki:it:linux:advanced_commands|권한 설정 & 고급 명령어]]로 넘어가세요!
===== 10. 📚 참고자료 =====
- **공식 문서**: %%https://linux.die.net/man/%%
- **연습 사이트**: %%https://cmdchallenge.com/%%
**💬 도움이 필요하면**: 각 명령어 뒤에 ''--help''를 붙이거나 ''man 명령어''를 입력하면 자세한 설명을 볼 수 있어요!