들어가기
리눅스 시스템에서 파일과 디렉토리를 탐색하고, 생성하고, 삭제하고, 수정하는 방법에 대해 정리했습니다.
Windows를 사용해봤다면 파일과 폴더라는 개념 자체는 낯설지 않을 것입니다.
다만 리눅스는 파일시스템 구조와 명명 규칙, 파일을 다루는 철학 자체가 Windows와 꽤 다릅니다.
이 차이점을 이해하면서 익혀나가면 훨씬 자연스럽게 손에 익을 것입니다.
파일시스템이란?
파일시스템(Filesystem)은 저장장치에 데이터를 어떻게 저장하고 관리할지 정의하는 구조와 규칙입니다.
우리가 파일을 저장하고 불러올 수 있는 것은 파일시스템이 디스크 위에서 데이터를 정리해주기 때문입니다.
파일시스템마다 지원하는 최대 파일 크기, 파일명 길이, 권한 체계, 저널링(갑작스러운 종료 시 데이터 보호) 여부 등이 다릅니다.
따라서 용도에 맞는 파일시스템을 선택하는 것이 중요합니다.
대표적인 파일시스템은 아래와 같습니다.
| 파일시스템 | 운영체제 | 특징 |
|---|---|---|
| NTFS | Windows | Windows 기본. 권한, 암호화, 저널링 지원 |
| FAT32 | 범용 | USB 등 호환성 최강. 파일 최대 4GB 제한 |
| exFAT | 범용 | FAT32의 용량 제한 개선. SD카드, USB 자주 사용 |
| ext4 | Linux | 리눅스 서버/데스크탑의 가장 일반적인 선택 |
| XFS | Linux | 대용량 파일, 고성능 환경에 강함. RHEL 기본값 |
| Btrfs | Linux | 스냅샷, 압축, 서브볼륨 지원. 차세대 파일시스템 |
Rocky Linux(RHEL 계열)의 기본 파일시스템은 XFS입니다.
일반 학습 환경에서는 큰 차이를 느끼기 어렵지만, 엔터프라이즈 환경에서는 이 선택이 중요한 이슈가 되기도 합니다.
inode란?
리눅스 파일시스템을 이해할 때 inode(아이노드) 개념은 빼놓을 수 없습니다.
리눅스에서 파일은 크게 두 가지 정보로 구성됩니다.
- 데이터 블록 : 파일의 실제 내용
- inode : 파일의 메타데이터(소유자, 권한, 크기, 타임스탬프, 데이터 블록 위치 등)
plain[파일명] → [inode 번호] → [inode] → [데이터 블록]
(디렉토리가 관리) (메타데이터) (실제 내용)
파일명 자체는 inode를 가리키는 포인터일 뿐입니다.
이것이 나중에 배울 하드링크(Hard Link) 의 원리이기도 합니다.
inode 번호는 ls -i 명령어로 확인할 수 있습니다.
bashls -i /etc/hostname
# 출력 예: 134217751 /etc/hostname
유닉스/리눅스 파일 구조의 특징
단일 루트 구조 (Singly Rooted)
Windows에서는 드라이브별로 루트가 나뉩니다 (C:\, D:\).
리눅스는 다릅니다. 모든 파일과 디렉토리는 단 하나의 루트 / 아래에 존재합니다.
USB를 연결하거나 추가 디스크를 붙이더라도, 별도 드라이브 문자가 생기는 게 아니라
/mnt/usb처럼 기존 디렉토리 트리의 어딘가에 마운트(mount) 되는 방식으로 편입됩니다.
plain/
├── home/
│ └── user/
├── etc/
├── var/
├── mnt/
│ └── usb/ ← USB 연결 시 여기에 마운트됨
└── ...
대소문자 구분 (Case Sensitivity)
리눅스는 파일명에서 대소문자를 명확히 구분합니다.
bashtouch file.txt File.txt FILE.txt
ls
# file.txt File.txt FILE.txt ← 세 개가 모두 다른 파일로 존재
Windows에서 file.txt와 File.txt는 같은 파일로 취급되지만,
리눅스에서는 완전히 별개의 파일입니다.
이 특성 때문에 스크립트나 프로그램에서 파일명을 다룰 때 오타가 발생하기 쉬우니 주의가 필요합니다.
긴 파일명 지원 (Long File Names)
ext4, XFS 기준으로 파일명의 최대 길이는 255바이트입니다.
한글은 UTF-8 기준 한 글자에 3바이트이므로 약 85자까지 가능합니다.
링크 지원 (Supports Links)
같은 파일 데이터를 여러 경로에서 참조할 수 있는 하드링크와 심볼릭 링크를 지원합니다. 뒤에서 자세히 다룹니다.
파일 타임스탬프 (Timestamps)
리눅스는 파일마다 세 가지 시간 정보를 관리합니다.
| 속성 | 이름 | 설명 |
|---|---|---|
mtime |
Modification Time | 파일 내용이 마지막으로 수정된 시간 |
atime |
Access Time | 파일에 마지막으로 접근(읽기)한 시간 |
ctime |
Change Time | 파일 메타데이터(권한, 소유자 등)가 마지막으로 변경된 시간 |
bashstat 파일명 # 세 가지 타임스탬프를 모두 확인
리눅스 표준 디렉토리 구조 (FHS)
리눅스는 FHS(Filesystem Hierarchy Standard) 라는 표준에 따라 디렉토리 구조가 정해져 있습니다.
어떤 리눅스 배포판이든 최상위 디렉토리 구성은 거의 동일합니다.
plain/
├── bin/ → 기본 실행 파일 (ls, cp, mv 등)
├── sbin/ → 시스템 관리용 실행 파일 (root 권한 필요)
├── etc/ → 시스템 전체 설정 파일
├── home/ → 일반 사용자 홈 디렉토리
├── root/ → root 계정의 홈 디렉토리
├── var/ → 가변 데이터 (로그, 캐시, 메일 등)
├── tmp/ → 임시 파일 (재부팅 시 삭제)
├── usr/ → 사용자 설치 프로그램 및 라이브러리
│ ├── bin/ → 일반 실행 파일 (대부분의 명령어)
│ ├── sbin/ → 시스템 관리 실행 파일
│ └── local/ → 직접 빌드·설치한 프로그램
├── lib/ → 공유 라이브러리
├── dev/ → 디바이스 파일 (하드웨어를 파일로 표현)
├── proc/ → 실행 중인 프로세스 정보 (가상 파일시스템)
├── sys/ → 커널 및 하드웨어 정보 (가상 파일시스템)
├── mnt/ → 임시 마운트 포인트
├── media/ → USB, CD 등 이동식 미디어 마운트 포인트
├── boot/ → 부트로더, 커널 이미지
└── opt/ → 서드파티 소프트웨어 설치 경로
자주 마주치는 디렉토리만 짚어두면:
/etc: 거의 모든 서비스의 설정 파일이 여기에 있습니다. (/etc/ssh/sshd_config,/etc/hosts등)/var/log: 시스템 로그 파일이 저장되는 곳. 문제가 생겼을 때 가장 먼저 확인합니다./tmp: 재부팅하면 지워지는 임시 디렉토리. 테스트용 파일을 만들기 좋습니다./home/사용자명: 내 작업 파일은 여기에 저장합니다.
경로 표현 방식
절대경로 (Absolute Path)
절대경로는 루트 / 부터 시작하는 전체 경로입니다.
현재 위치에 관계없이 항상 동일한 위치를 가리킵니다.
bashvi /home/user/workspace/project1/package.json
cat /etc/hostname
ls /var/log
스크립트나 서버 설정 파일 등에서는 절대경로를 사용하는 것이 안전합니다.
현재 위치가 달라져도 동일하게 동작하기 때문입니다.
상대경로 (Relative Path)
상대경로는 현재 위치를 기준으로 하는 경로입니다.
절대경로보다 짧게 표현할 수 있어 직접 타이핑할 때 편리합니다.
bash# 현재 위치: /home/user
vi workspace/project1/package.json # /home/user/workspace/project1/package.json 과 동일
상대경로에서 자주 쓰이는 특수 표현이 있습니다.
| 표현 | 의미 |
|---|---|
. (점 하나) |
현재 디렉토리 |
.. (점 두 개) |
상위 디렉토리 |
~ (틸드) |
현재 로그인한 사용자의 홈 디렉토리 |
- (하이픈) |
cd에서 사용 시 바로 이전 디렉토리 |
bashls . # 현재 디렉토리 목록 (ls 만 입력하는 것과 동일)
ls .. # 상위 디렉토리 목록
cd .. # 상위 디렉토리로 이동
cd ../.. # 두 단계 위로 이동
cp file.txt ./backup/ # 현재 디렉토리의 backup 폴더로 복사
탐색 명령어
pwd — 현재 위치 확인
pwd(Print Working Directory) 는 현재 내가 있는 디렉토리의 절대경로를 출력합니다.
bash[user@localhost ~]$ pwd
/home/user
처음 로그인하면 홈 디렉토리(/home/사용자명)에 위치합니다.
미로처럼 복잡한 디렉토리를 돌아다니다 길을 잃었을 때 현재 위치를 확인하는 용도로 자주 씁니다.
cd — 디렉토리 이동
cd(Change Directory) 는 다른 디렉토리로 이동하는 명령어입니다.
bashcd /etc # 절대경로로 이동
cd Documents # 현재 위치의 하위 디렉토리로 이동 (상대경로)
cd .. # 상위 디렉토리로 이동
cd ~ # 홈 디렉토리로 이동
cd # 인수 없이 실행해도 홈 디렉토리로 이동
cd - # 바로 이전에 있던 디렉토리로 이동
cd -는 두 디렉토리를 왔다 갔다 할 때 특히 유용합니다.
bashcd /etc/ssh
# ... 작업 ...
cd /var/log
# ... 작업 ...
cd - # /etc/ssh 로 즉시 복귀
ls — 디렉토리 목록 확인
ls(List) 는 파일과 디렉토리 목록을 출력하는 명령어입니다.
리눅스에서 가장 자주 사용하는 명령어 중 하나입니다.
bashls # 현재 디렉토리 목록
ls /etc # 특정 디렉토리 목록
ls -l # 상세 정보 포함
ls -a # 숨김 파일 포함 (. 으로 시작하는 파일)
ls -la # 상세 정보 + 숨김 파일
ls -lh # 파일 크기를 사람이 읽기 쉬운 단위로 출력 (KB, MB, GB)
ls -lt # 수정 시간 기준 최신순 정렬
ls -lS # 파일 크기 기준 내림차순 정렬
ls -R # 하위 디렉토리까지 재귀적으로 출력
ls -1 # 한 줄에 하나씩 출력
ls -l 출력 형식 읽기
ls -l을 실행하면 아래와 같은 형식의 출력이 나타납니다.
plain-rw-r--r--. 1 user user 1234 Jan 24 21:00 example.txt
drwxr-xr-x. 2 user user 4096 Jan 24 20:00 mydir
각 필드의 의미는 다음과 같습니다.
plain[파일 타입 + 권한] [하드링크 수] [소유자] [그룹] [크기(bytes)] [수정 시간] [파일명]
-rw-r--r--. 1 user user 1234 Jan 24 21:00 example.txt
첫 번째 문자 (파일 타입)
| 문자 | 의미 |
|---|---|
- |
일반 파일 |
d |
디렉토리 |
l |
심볼릭 링크 |
b |
블록 디바이스 |
c |
문자 디바이스 |
권한 (9자리) 은 소유자(rwx), 그룹(rwx), 기타(rwx) 순으로 3자리씩 구성됩니다.
권한 체계는 이후 시리즈에서 별도로 자세히 다룹니다.
와일드카드 (Wildcard)
파일을 다룰 때 특정 패턴에 맞는 여러 파일을 한 번에 지정하고 싶을 때 와일드카드를 사용합니다.
| 와일드카드 | 의미 | 예시 |
|---|---|---|
* |
0개 이상의 임의 문자 | *.txt → 확장자가 .txt인 모든 파일 |
? |
임의의 문자 1개 | file?.txt → file1.txt, fileA.txt 등 |
[abc] |
괄호 안의 문자 중 하나 | file[123].txt → file1.txt, file2.txt, file3.txt |
[a-z] |
범위 내 문자 중 하나 | file[a-z].txt → filea.txt ~ filez.txt |
[!abc] |
괄호 안의 문자를 제외한 나머지 | file[!0-9].txt → 숫자가 아닌 문자가 붙은 파일 |
bashls *.conf # .conf로 끝나는 모든 파일
ls log_202?.txt # log_2020.txt ~ log_2029.txt 등
cp *.jpg /backup/ # 현재 디렉토리의 모든 jpg 파일을 backup으로 복사
rm temp_* # temp_ 로 시작하는 파일 전체 삭제
와일드카드는 쉘이 명령어 실행 전에 먼저 해석합니다.
rm temp_*를 실행하면 쉘이temp_로 시작하는 파일 목록으로 확장한 뒤rm에 전달합니다.
따라서 패턴에 해당하는 파일이 없으면 오류가 발생할 수 있습니다.
디렉토리 조작 명령어
mkdir — 디렉토리 생성
mkdir(Make Directory) 는 새 디렉토리를 생성합니다.
bashmkdir mydir # 현재 위치에 mydir 생성
mkdir /tmp/testdir # 절대경로로 생성
mkdir dir1 dir2 dir3 # 여러 디렉토리를 한 번에 생성
-p 옵션: 중간 경로가 없어도 한 번에 생성합니다.
bash# 중간 디렉토리가 없는 경우
mkdir a/b/c
# mkdir: cannot create directory 'a/b/c': No such file or directory
mkdir -p a/b/c # a, a/b, a/b/c 를 한 번에 모두 생성
이미 존재하는 디렉토리에 -p 옵션을 사용해도 오류 없이 무시됩니다.
스크립트에서 디렉토리 존재 여부를 신경 쓰지 않고 생성할 때 유용합니다.
-m 옵션: 생성과 동시에 권한을 지정합니다.
bashmkdir -m 700 private_dir # 소유자만 접근 가능한 디렉토리 생성
rmdir — 빈 디렉토리 삭제
rmdir(Remove Directory) 는 비어 있는 디렉토리만 삭제합니다.
파일이 있는 디렉토리는 삭제되지 않습니다.
bashrmdir mydir # 비어 있으면 삭제
rmdir -p a/b/c # c, b, a 순서로 비어 있으면 연속 삭제
실제로는 내용물이 있는 디렉토리째 삭제하는 경우가 더 많기 때문에, rm -r을 더 자주 사용합니다.
파일 조작 명령어
cp — 파일/디렉토리 복사
cp(Copy) 는 파일이나 디렉토리를 복사합니다.
bashcp 원본 사본
bashcp file.txt file_backup.txt # 같은 위치에 다른 이름으로 복사
cp file.txt /tmp/ # 다른 디렉토리로 복사 (파일명 유지)
cp file.txt /tmp/renamed.txt # 다른 위치에 다른 이름으로 복사
cp file1.txt file2.txt /tmp/ # 여러 파일을 한 디렉토리로 복사
cp -r mydir/ /tmp/ # 디렉토리째 복사 (-r 필수)
자주 쓰는 옵션
| 옵션 | 설명 |
|---|---|
-r, -R |
디렉토리를 하위 파일까지 재귀적으로 복사 |
-i |
덮어쓸 파일이 있으면 확인 메시지 출력 |
-p |
원본 파일의 권한, 소유자, 타임스탬프 유지 |
-v |
복사 과정을 화면에 출력 (진행 상황 확인) |
-u |
원본이 사본보다 최신인 경우에만 복사 |
bashcp -rp /etc/nginx /tmp/nginx_backup # 권한과 타임스탬프를 유지하며 디렉토리 복사
cp -v *.txt /backup/ # 복사 과정을 출력하면서 진행
mv — 파일/디렉토리 이동 및 이름 변경
mv(Move) 는 파일을 다른 위치로 이동하거나, 이름을 변경할 때 사용합니다.
리눅스에는 별도의 “이름 바꾸기” 명령어가 없고 mv가 그 역할을 합니다.
bashmv 원본 대상
bashmv file.txt renamed.txt # 이름 변경 (같은 위치)
mv file.txt /tmp/ # 파일 이동
mv file.txt /tmp/renamed.txt # 이동 + 이름 변경 동시에
mv mydir/ /var/backup/ # 디렉토리 이동 (-r 없어도 됨)
mv file1.txt file2.txt /tmp/ # 여러 파일을 한 디렉토리로 이동
cp와 달리 mv는 원본이 삭제됩니다. 같은 파일시스템 안에서의 이동은 실제로 데이터를 복사하지 않고 inode 경로만 수정하기 때문에 매우 빠릅니다.
자주 쓰는 옵션
| 옵션 | 설명 |
|---|---|
-i |
덮어쓸 파일이 있으면 확인 메시지 출력 |
-v |
이동 과정을 화면에 출력 |
-u |
원본이 대상보다 최신인 경우에만 이동 |
rm — 파일/디렉토리 삭제
rm(Remove) 은 파일이나 디렉토리를 삭제합니다.
bashrm file.txt # 파일 삭제
rm file1.txt file2.txt # 여러 파일 삭제
rm *.log # 확장자가 .log인 파일 전체 삭제
rm -r mydir/ # 디렉토리와 내용물 전체 삭제
rm -rf mydir/ # 확인 없이 강제 삭제
주의 — rm은 휴지통이 없습니다
GUI 환경의 삭제는 휴지통에 들어가 복구가 가능하지만,
리눅스의 rm은 즉시 영구 삭제입니다. 복구가 거의 불가능합니다.
특히 rm -rf는 디렉토리 전체를 묻지도 따지지도 않고 삭제하기 때문에
아래와 같은 실수는 시스템 전체를 날릴 수 있습니다.
bash# 절대 실행하면 안 되는 명령어 예시
rm -rf / # 루트 디렉토리 전체 삭제 (시스템 파괴)
rm -rf /* # 루트 아래 모든 것 삭제
와일드카드 사용 시에는 항상 ls로 먼저 대상을 확인하고 삭제하는 습관을 들이세요.
bashls *.log # 먼저 어떤 파일이 해당되는지 확인
rm *.log # 확인 후 삭제
자주 쓰는 옵션
| 옵션 | 설명 |
|---|---|
-i |
파일마다 삭제 여부 확인 |
-f |
존재하지 않는 파일 오류 무시, 확인 없이 강제 삭제 |
-r, -R |
디렉토리 재귀 삭제 |
-v |
삭제 과정을 화면에 출력 |
touch — 파일 생성 / 타임스탬프 변경
touch 는 두 가지 용도로 사용됩니다.
1. 빈 파일 생성
bashtouch newfile.txt # 내용이 없는 빈 파일 생성
touch file1.txt file2.txt # 여러 파일 동시 생성
2. 타임스탬프 갱신
이미 존재하는 파일에 touch를 사용하면 내용은 그대로이고 mtime과 atime이 현재 시각으로 갱신됩니다.
bashtouch existing_file.txt # 타임스탬프만 현재 시각으로 갱신
활용 사례
touch는 단순해 보이지만 다양한 상황에서 쓰입니다.
bash# 파일 존재 여부로 특정 동작을 제어하는 패턴 (flag 파일)
touch /etc/nologin # 이 파일이 존재하면 root 외 일반 사용자 로그인 차단
rm /etc/nologin # 삭제하면 다시 로그인 가능
# 스크립트에서 빈 로그 파일을 미리 만들어두기
touch /var/log/myapp.log
# Makefile에서 의존성 타임스탬프 조작
touch Makefile
링크 생성 : ln
리눅스에서 링크(Link) 는 하나의 파일 데이터를 여러 경로에서 참조하거나 바로가기를 만드는 기능입니다.
링크에는 두 종류가 있습니다.
하드링크 (Hard Link)
하드링크는 같은 inode를 가리키는 파일명을 하나 더 만드는 것입니다.
원본과 링크가 동일한 inode를 공유하므로, 어느 쪽을 수정해도 같은 데이터가 변경됩니다.
bashln 원본파일 링크파일
ln file.txt hardlink.txt
plainfile.txt ─┐
├→ inode 12345 → 실제 데이터
hardlink.txt ─┘
원본 파일을 삭제해도 링크된 파일이 남아 있으면 데이터는 유지됩니다.
inode에 대한 참조(링크) 수가 0이 될 때 비로소 실제 데이터가 삭제됩니다.
하드링크의 제한
- 다른 파일시스템(다른 파티션/디스크)간 하드링크 생성 불가
- 디렉토리에 하드링크 생성 불가 (시스템 무결성 이슈)
심볼릭 링크 (Symbolic Link / Soft Link)
심볼릭 링크는 파일 경로를 가리키는 별도의 파일을 만드는 것입니다.
Windows의 바로가기(.lnk)와 개념이 유사합니다.
bashln -s 원본파일 링크파일
ln -s /etc/nginx/nginx.conf ~/nginx.conf
ln -s /usr/local/bin/python3.11 /usr/local/bin/python # 버전 관리에 자주 활용
plainsymlink.txt → "/home/user/original.txt" → inode 12345 → 실제 데이터
(별도 inode, 경로 저장)
원본 파일이 삭제되면 심볼릭 링크는 깨진 링크(Dangling Link) 가 됩니다.
ls -l 에서 붉은색으로 표시됩니다.
심볼릭 링크의 장점
- 파일시스템 경계를 넘어 생성 가능
- 디렉토리에도 생성 가능
- 원본 경로를 저장하므로 링크 대상 확인이 쉬움
bashls -l symlink.txt
# lrwxrwxrwx. 1 user user 20 Jan 24 21:00 symlink.txt -> /home/user/original.txt
readlink symlink.txt # 링크가 가리키는 경로 출력
하드링크 vs 심볼릭 링크 비교
| 특성 | 하드링크 | 심볼릭 링크 |
|---|---|---|
| 생성 명령어 | ln 원본 링크 |
ln -s 원본 링크 |
| inode 공유 | 같은 inode 공유 | 별도 inode (경로 저장) |
| 파일시스템 경계 | 불가 | 가능 |
| 디렉토리 링크 | 불가 | 가능 |
| 원본 삭제 시 | 데이터 유지됨 | 깨진 링크가 됨 |
| 활용 예시 | 중요 파일 이중화 | 버전 관리, 경로 단축 |
Alias — 자주 쓰는 명령어 단축키 만들기
alias는 자주 사용하는 명령어(+ 옵션 조합)에 별명을 붙이는 기능입니다.
bashalias ll='ls -alh'
alias la='ls -a'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
설정 후에는 ll만 입력해도 ls -alh가 실행됩니다.
현재 세션에서만 유효한 alias는 터미널을 닫으면 사라집니다.
재시작 후에도 유지하려면 ~/.bashrc 파일에 추가합니다.
bash# ~/.bashrc 에 추가
alias ll='ls -alh'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# 변경 사항 즉시 적용
source ~/.bashrc
rm,cp,mv에-i옵션을 alias로 걸어두는 것은 리눅스 입문 시기에 가장 먼저 해야 할 설정 중 하나입니다.
실수로 파일을 덮어쓰거나 삭제하는 상황을 예방해줍니다.
등록된 alias 목록 확인:
bashalias # 모든 alias 목록 출력
alias ll # 특정 alias 확인
unalias ll # 특정 alias 제거
명령어 정리
| 명령어 | 기본 형태 | 주요 옵션 | 설명 |
|---|---|---|---|
pwd |
pwd |
- | 현재 디렉토리 절대경로 출력 |
cd |
cd [경로] |
- (이전 위치) |
디렉토리 이동 |
ls |
ls [경로] |
-l, -a, -h, -t, -S |
파일/디렉토리 목록 출력 |
mkdir |
mkdir 디렉토리명 |
-p, -m |
디렉토리 생성 |
rmdir |
rmdir 디렉토리명 |
-p |
빈 디렉토리 삭제 |
cp |
cp 원본 대상 |
-r, -i, -p, -v |
파일/디렉토리 복사 |
mv |
mv 원본 대상 |
-i, -v |
파일/디렉토리 이동·이름 변경 |
rm |
rm 파일명 |
-r, -f, -i, -v |
파일/디렉토리 삭제 |
touch |
touch 파일명 |
- | 빈 파일 생성 / 타임스탬프 갱신 |
ln |
ln 원본 링크명 |
-s (심볼릭) |
링크 생성 |
마치면서
이번 글에서는 리눅스 파일시스템의 구조와 파일·디렉토리를 다루는 핵심 명령어들을 정리했습니다.
전부 외울 필요는 없습니다. 자주 쓰다 보면 자연스럽게 손에 익고,
가끔 쓰는 옵션은 man ls나 ls --help로 확인하면 됩니다.
특히 rm의 동작은 한 번 더 주의 깊게 기억해두는 것을 권장합니다.
서버 환경에서 실수로 / 아래 중요한 파일을 날리면 복구가 정말 어렵습니다.
alias rm='rm -i' 설정 하나만으로도 많은 사고를 예방할 수 있습니다.
다음 글에서는 터미널에서 각종 정보를 얻거나 명령어 매뉴얼을 확인하는 방법,
그리고 파일 내용을 읽고 검색하는 명령어(cat, less, grep 등)에 대해 정리하겠습니다.