파일과 폴더 마음대로 다루기
리눅스 터미널에서 폴더를 만들고 파일을 복사, 이동, 삭제하는 mkdir, cp, mv, rm 명령어의 실전 사용법을 알아봅니다.
지난 시간에는 터미널 환경에서 내 위치를 확인하고 이리저리 이동하는 내비게이션 방법을 배웠습니다. 눈으로 확인하고 돌아다니는 것만으로는 부족하겠죠? 이번 시간에는 실제로 서버에 새로운 방(폴더)을 만들고, 파일을 복사하거나 이름을 바꾸며, 필요 없는 자료를 삭제하는 등 본격적인 파일 관리 명령어들을 학습합니다. 특히, 마우스 클릭 실수를 되돌리기 힘든 터미널 환경의 특성을 이해하고 안전하게 작업하는 방법을 함께 알아보겠습니다.
새로운 방 만들기: `mkdir`
웹 서버를 구축할 때는 프로젝트마다 별도의 폴더(디렉터리)를 만들어 코드를 깔끔하게 정리해야 합니다. 윈도우에서 바탕화면에 마우스 우클릭을 하고 '새 폴더'를 만드는 것과 같은 작업을 터미널에서는 `mkdir` 명령어로 수행합니다.
`mkdir`은 Make Directory의 약자입니다. 명령어 뒤에 스페이스바를 한 칸 띄우고 생성하고 싶은 폴더의 이름을 적어주기만 하면 됩니다. 만약 `my-new-project`라는 이름의 폴더를 만들고 싶다면 `mkdir my-new-project`라고 입력하고 엔터를 칩니다. 오류 메시지가 나오지 않는다면 정상적으로 생성된 것이며, `ls` 명령어를 쳐서 방금 만든 폴더가 목록에 있는지 눈으로 확인할 수 있습니다.
mkdir의 유용한 옵션 활용
bash```bash
$ mkdir -p src/components/button
$ ls src/components
button
```- 1단일 폴더 생성: mkdir assets (현재 위치에 assets 폴더를 만듭니다.)
- 2다중 폴더 생성: mkdir css js images (스페이스바로 구분하여 한 번에 3개의 폴더를 생성합니다.)
- 3하위 폴더까지 한 번에 생성: mkdir -p src/components/button (src 폴더 안에 components, 그 안에 button 폴더를 한 번에 연쇄적으로 만듭니다.)
특히 `-p`(parents) 옵션은 실무에서 매우 자주 쓰입니다. 상위 폴더가 없더라도 에러를 내지 않고 필요한 부모 폴더들까지 한꺼번에 만들어주기 때문에, 복잡한 폴더 구조를 짤 때 타이핑 횟수를 획기적으로 줄여줍니다.
똑같은 파일 하나 더 만들기: `cp`
기존에 잘 작동하던 설정 파일을 수정해야 할 때, 곧바로 수정하기보다는 백업본을 하나 만들어두는 것이 바이브코딩의 훌륭한 안전 수칙입니다. 이때 파일을 복사하는 `cp` 명령어를 사용합니다.
`cp`는 Copy의 약자입니다. 사용법은 `cp [원본 파일] [복사될 새 파일 이름]`의 구조를 가집니다. 예를 들어, `config.json` 파일을 복사해서 `config_backup.json`을 만들고 싶다면 `cp config.json config_backup.json`이라고 입력합니다.
cp 명령어 실행 예시
$ cp index.html index_old.html
$ ls
index.html index_old.html위 명령을 실행하면 현재 폴더 안에 원본과 똑같은 내용을 가진 `index_old.html` 파일이 새로 생겨납니다.
주의할 점은, 폴더(디렉터리)를 통째로 복사할 때는 단순히 `cp`만 쓰면 안 된다는 것입니다. 폴더 안에는 여러 파일과 또 다른 하위 폴더들이 나무뿌리처럼 얽혀있기 때문입니다. 폴더를 그 내용물까지 모두 포함해 복사하려면 `-r`(recursive, 재귀적) 옵션을 반드시 붙여야 합니다. `cp -r old-project new-project`라고 입력해야 폴더 전체가 통째로 복사됩니다.
파일의 이사와 이름표 바꾸기: `mv`
파일을 다른 폴더로 옮기고 싶거나, 파일의 이름을 수정하고 싶을 때는 `mv` 명령어를 사용합니다. 리눅스에서는 이동과 이름 변경을 모두 이 하나의 명령어로 처리합니다.
`mv`는 Move의 약자입니다. 기본 구조는 `cp`와 동일하게 `mv [원본 파일] [목적지]`입니다. 만약 `logo.png` 파일을 아까 만든 `images` 폴더 안으로 집어넣고 싶다면 `mv logo.png images/`라고 입력합니다.
그렇다면 이름표는 어떻게 바꿀까요? 파일을 이동시킬 때 목적지 위치에 새로운 이름을 적어주면 됩니다. 같은 폴더 내에서 목적지 이름만 다르게 적으면, 위치는 그대로 둔 채 이름만 변경하는 결과가 됩니다.
mv 명령어를 활용한 이동과 이름 변경
| 명령어 | 수행 결과 | 비고 |
|---|---|---|
| mv main.css css/ | main.css 파일을 css/ 폴더 안으로 이동시킵니다. | 단순 이동 |
| mv old_name.txt new_name.txt | 현재 위치에서 파일의 이름을 new_name.txt로 변경합니다. | 이름 변경 |
| mv index.html backup/index_old.html | index.html 파일을 backup/ 폴더로 옮기면서 동시에 이름을 index_old.html로 바꿉니다. | 이동 + 이름 변경 |
가장 위험하고 강력한 지우개: `rm`
필요 없는 파일이나 잘못 만든 폴더를 삭제할 때는 `rm` 명령어를 사용합니다. 윈도우의 '휴지통' 개념이 터미널에는 기본적으로 존재하지 않기 때문에, `rm` 명령어로 지운 파일은 영구히 복구할 수 없습니다. 따라서 사용에 각별한 주의가 필요합니다.
`rm`은 Remove의 약자입니다. 삭제할 파일의 이름을 뒤에 붙여 `rm temp.txt`와 같이 사용합니다. 복사 명령어(`cp`)와 마찬가지로, 일반적인 `rm` 명령어는 파일만 지울 수 있으며 폴더를 지우려고 하면 에러를 냅니다. 내용물이 들어있는 폴더를 통째로 지우려면 하위 내용을 모두 지우라는 `-r` 옵션을 함께 사용해야 합니다.
rm 명령어 사용 시 자주 하는 치명적 실수
오해 또는 실수
rm -rf / 와 같이 최상위 경로 삭제 시도
바로잡기
서버의 운영체제 자체를 날려버리는 자폭 명령입니다. 절대 입력하지 마세요.
오해 또는 실수
폴더 이름에 띄어쓰기를 잘못하여 엉뚱한 파일 삭제
바로잡기
rm -r my folder 라고 입력하면 'my' 폴더와 'folder' 폴더 두 개를 지우려고 시도합니다. 공백은 항상 주의해야 합니다.
오해 또는 실수
경로 확인 없이 습관적인 삭제
바로잡기
삭제 전 반드시 pwd로 위치를 확인하고, ls로 지울 파일을 눈으로 확인한 뒤 실행하는 습관을 들여야 합니다.
실무에서 가장 많이, 그리고 조심해서 써야 하는 명령어는 `rm -rf [폴더명]`입니다. `-r`(재귀적 삭제)과 `-f`(force, 강제 삭제)가 결합된 이 옵션은, 폴더 안의 모든 것을 사용자에게 묻지 않고 가차 없이 지워버립니다. 특히 바이브코딩으로 인해 임시 파일이 많이 생겼을 때 폴더를 통째로 날리고 다시 시작할 때 자주 쓰지만, 경로를 한 글자라도 잘못 입력하면 프로젝트 전체가 날아갈 수 있으니 엔터를 치기 전 항상 경로를 세 번 확인하십시오.
개념 퀴즈
퀴즈 답을 맞춰야 학습 완료가 됩니다.내용물이 여러 개 들어있는 'old-website'라는 이름의 폴더를, 에러 없이 하위 파일까지 통째로 복사하여 'backup-website'를 만들려고 합니다. 올바른 명령어는 무엇인가요?
3줄 요약
- 1mkdir 명령어를 사용해 새로운 디렉터리(폴더)를 만들 수 있으며, -p 옵션으로 복잡한 하위 폴더까지 한 번에 생성합니다.
- 2파일을 복사할 때는 cp, 이동하거나 이름을 바꿀 때는 mv를 사용하며, 디렉터리를 복사할 때는 cp -r을 써야 합니다.
- 3rm 명령어는 파일을 영구적으로 삭제하므로 복구가 불가능하며, 폴더를 통째로 지우는 rm -rf 명령어는 매우 신중하게 경로를 확인한 후 사용해야 합니다.