오토에버 클라우드 2기 13일차
우분투, 리눅스에서 주로 사용하는 명령어
파일 권한 (File Permissions)
ls -l현재 디렉토리의 파일/디렉토리 권한을 확인
1
2
3
ls -l
drwxr-xr-x 2 user group 4096 May 19 10:00 mydir
-rw-r--r-- 1 user group 128 May 19 10:01 file.txt
- 첫 글자: d(디렉토리), -(파일)
- 이후 9자리: 사용자(u), 그룹(g), 기타(o)의 읽기(r), 쓰기(w), 실행(x)
chmod 권한 변경
심볼릭 모드는 r, w, x 등의 문자와 +, -, = 기호를 사용하여 파일 권한을 설정하는 방식 기본 기호
u : 사용자(owner)
g : 그룹(group)
o : 기타 사용자(others)
a : 모든 사용자(all)
r : 읽기(read)
w : 쓰기(write)
- x : 실행(execute)
- +: 권한 추가
- -: 권한 제거
- = : 권한을 특정 값으로 설정
1
2
3
4
5
chmod u+r file.txt # 현재 사용자에게 읽기 권한 추가
chmod g-w file.txt # 그룹의 쓰기 권한 제거
chmod o+x script.sh # 기타 사용자에게 실행 권한 추가
chmod a=r report.txt # 모든 사용자에게 읽기 권한만 부여
chmod u+x,g+r,o-r file.txt # 사용자에게 실행, 그룹에게 읽기, 기타 사용자에게 읽기 제거
숫자 모드는 8진수(Octal) 값을 사용하여 파일 권한을 설정하는 방식
r (읽기) = 4
w (쓰기) = 2
x (실행) = 1 각 사용자(u, g, o)의 권한을 더해서 설정합니다.
1
2
3
4
chmod 755 script.sh # 사용자(7), 그룹(5), 기타(5) 권한 설정
chmod 644 document.txt # 사용자(6), 그룹(4), 기타(4) 권한 설정
chmod 700 private.txt # 사용자에게만 모든 권한(읽기, 쓰기, 실행) 부여
chmod 777 public.sh # 모든 사용자에게 모든 권한 부여 (주의!)
폴더 삭제 (Remove Directory)
- rmdir 빈 디렉토리만 삭제
1
rmdir empty_dir
- rm -r 디렉토리와 내부 모든 파일/서브디렉토리 삭제
1
rm -r project_dir
- rm -rf -f : 확인 없이(force) 삭제
1
rm -rf old_backup
파일 삭제 (Remove File)
- rm 파일 삭제
1
rm file1.txt file2.log
- 옵션
-i 삭제 전 확인
1
rm -i secret.txt
-f 강제 삭제
1
rm -f temp.txt
복사 (Copy)
- cp 파일/디렉토리 복사
1
2
3
4
5
6
# 단일 파일 복사
cp source.txt dest.txt
# 디렉토리 재귀 복사
cp -r src_folder/ dst_folder/
- 주요 옵션
- r 또는
-R: 디렉토리 내부까지 복사 -i: 덮어쓰기 전 확인-u: 대상 파일이 없거나 더 오래된 경우에만 복사-v: 진행 상황 출력
- r 또는
폴더 및 파일 이동 (Move)
- mv 파일/디렉토리 이동 및 이름 변경
1
2
3
4
5
6
7
8
# 디렉토리 이동
mv folder1/ /backup/
# 파일 이동
mv report.pdf ~/Documents/
# 여러 파일 이동
mv *.log logs/
- 옵션
-i: 덮어쓰기 전 확인-v: 진행 상황 출력
1
2
mv -iv oldname.txt newname.txt
# 이름 변경
하드 링크 vs 심볼릭 링크 차이 (Hard Link vs Symbolic Link)
| 구분 | 하드 링크 (Hard Link) | 심볼릭 링크 (Symbolic Link) |
|---|---|---|
| 포인터 대상 | 같은 inode(실제 데이터) 참조 | 다른 파일의 경로(path) 참조 |
| 원본 파일 삭제 시 | 링크된 파일 여전히 접근 가능 | 대상이 사라지면 깨진 링크(broken) 됨 |
| 다른 파일 시스템 | 동일 파일시스템에서만 가능 | 서로 다른 파일시스템도 가능 |
| 디렉토리에 대한 링크 | 보통 금지 | 허용(일부 시스템 제한 있을 수 있음) |
하드 링크 생성 (Create Hard Link)
1
2
3
ln 원본_파일 하드링크_이름
# 예시
ln report.txt report_backup.txt
report.txt와 report_backup.txt가 동일 inode를 가짐
둘 중 하나를 수정하면 동일 내용 변경
심볼릭 링크 생성 (Create Symbolic Link)
1
2
3
ln -s 원본_경로 링크_이름
# 예시
ln -s /var/log/syslog ~/syslog_link
-s 옵션으로 심볼릭 링크 생성
ls -l 시 -> 로 링크 대상 표시
대상이 없어도 링크는 생성되지만 접근 시 오류
1
2
ls -l ~/syslog_link
lrwxrwxrwx 1 user group 15 May 19 11:00 syslog_link -> /var/log/syslog
grep (파일 내 문자열 검색)
grep 명령어는 파일 내에서 특정 문자열을 검색하는 데 사용
옵션
-i: 대소문자를 구분하지 않고 검색-v: 검색한 문자열을 포함하지 않는 라인 출력-n: 라인 번호 출력-r: 하위 디렉토리까지 재귀적으로 검색-w: 전체 단어로 검색--color=auto: 검색된 문자열을 색상으로 강조
1
2
3
4
5
6
#예시
grep "hello" example.txt # example.txt 파일에서 "hello" 포함된 라인 검색
grep -i "linux" example.txt # "linux"를 대소문자 구분 없이 검색
grep -n "error" logs.txt # logs.txt에서 "error" 포함된 라인의 번호 출력
grep -r "config" /etc/ # /etc 디렉토리 내 모든 파일에서 "config" 검색
grep -v "warning" logs.txt # logs.txt에서 "warning"을 포함하지 않은 라인 출력
find (파일 및 디렉토리 검색)
find 명령어는 특정 조건에 맞는 파일이나 디렉토리를 검색하는 데 사용
옵션
-name: 특정 이름을 가진 파일 검색-type: 파일 유형 지정 (f=파일, d=디렉토리)-size: 특정 크기 이상의 파일 검색 (+10M = 10MB 이상)-mtime: 마지막 수정 날짜 기준 검색 (-7 = 7일 이내 수정된 파일)-exec: 검색된 파일에 특정 명령어 실행-user: 특정 사용자가 소유한 파일 검색
1
2
3
4
5
6
find /home -name "*.txt" # /home 디렉토리에서 .txt 파일 검색
find /var/log -type f -size +10M # /var/log에서 10MB 이상 파일 검색
find /etc -type d -name "config" # /etc에서 이름이 "config"인 디렉토리 검색
find /home/user -mtime -7 # 최근 7일 이내 수정된 파일 검색
find /tmp -type f -exec rm {} \; # /tmp에서 모든 파일 삭제
find /home -user username # 특정 사용자가 소유한 파일 검색