파일과 디렉토리
학습 개요
리눅스에서는 모든 것이 파일로 취급되어 디렉토리나 디바이스도 파일로 취급한다.
파일의 종류를 살펴보고 파일과 디렉토리의 접근권한이 가지는 의미를 이해해 보자.
파일과 디렉토리를 다루기 위한 쉘 명령을 익히고 텍스트 파일의 출력을 위한 명령을 알아보자.학습 목표
- 리눅스에서 파일의 종류를 나열할 수 있다.
- 파일과 디렉토리를 조작하는 명령의 사용법을 익힌다.
- 파일과 디렉토리의 접근권한에 관해 설명할 수 있다.
- 파일의 내용을 확인하는 명령을 나열하고 설명할 수 있다.
파일 시스템 탐색
파일 시스템
- 운영체제가 디스크(파티션)상에 파일을 구성하는 방식
- 파일과 디렉토리의 집합을 구조적으로 관리하는 체계
- 다양한 형식의 파일 시스템이 존재
- 리눅스는 전체 파일 시스템을 개의 트리구조로 관리
- 1개의 루트(/) 디렉토리만 있음.
ls
- 파일과 서브 디렉토리 목록을 나열.
- 파일(또는 디렉토리)가 가지는 속성까지 확인할 수 있음.
ls [options] [names]
ls directory
- 디렉토리에 존재하는 파일과 서브 디렉토리의 정보 출력.
ls file
- 해당 파일의 정보를 출력
➜ UNIX git:(master) ✗ ls
Lecture 중간과제
➜ UNIX git:(master) ✗ ls -l
total 0
drwxr-xr-x 7 jeahasorrowkissed staff 224 Oct 19 22:06 Lecture
drwxr-xr-x 11 jeahasorrowkissed staff 352 Oct 15 17:46 중간과제
➜ UNIX git:(master) ✗ ls -l Lecture
total 80
-rw-r--r-- 1 jeahasorrowkissed staff 9161 Oct 16 16:47 01_LINUX.md
-rw-r--r-- 1 jeahasorrowkissed staff 5615 Oct 16 18:06 02_Install_Linux.md
-rw-r--r-- 1 jeahasorrowkissed staff 14176 Oct 16 19:53 03_Use_Shell.md
-rw-r--r-- 1 jeahasorrowkissed staff 1473 Oct 19 22:13 04_File_And_Directory.md
➜ UNIX git:(master) ✗ ls -l ./Lecture/01_LINUX.md
-rw-r--r-- 1 jeahasorrowkissed staff 9161 Oct 16 16:47 ./Lecture/01_LINUX.md
옵션
짧은 옵션 | 긴 옵션 | 설명 |
---|---|---|
-a | --all | 모든 파일을 보여줌 점(.)으로 시작하는 숨김 파일도 보여줌 |
-d | --directory | 디렉토리 자체에 대한 정보를 보여줌 |
-F | --classify | 우측에 파일의 종류를 알려주는 문자를 붙임. 실행파일은 *, 디렉토리는 /, 심볼릭 링크는 @ |
-l | --format=long | 긴 포맥으로 결과를 보여줌 |
-R | --recursive | 재귀적으로 수행되는데 서브 디렉토리의 내용도 나열함 |
-S | --sort=size | 파일의 크기 순서로 결과를 보여줌 |
-t | --sort=time | 최종 수정 시간 순으로 보여줌 |
파일의 종류
- 정규 파일
- 데이터를 저장하는 데 주로 사용
- 각종 텍스트 파일, 실행 파일, 이미지 파일 등 리눅스에서 사용하는 대부분의 파일
- 실행 파일이나 이미지 파일의 경우 바이너리 형태로 저장되어 바이너리 파일이라고 함
- 디렉토리
- 리눅스에서 디렉토리도 파일로 취급
- 해당 디렉토리에 저장된 파일이나 하위 디렉토리에 대한 정보가 저장
- 심볼릭 링크
- '소프트 링크'라고도 함
- 원본 파일에 대한 링크로서 다른 이름으로 파일명을 지정한 것
- 윈도우 바로가기와 비슷한 것
- 장치 파일
- 리눅스에서 프린터, CD-ROM, HDD, 키보드 등과 같은 각종 장치를 파일로 취급 함
- 블록 디바이스 파일과 문자 디바이스 파일로 구분 됨
file
파일의 종류를 알려주는 명령
➜ UNIX git:(master) ✗ file ./Lecture/01_LINUX.md
./Lecture/01_LINUX.md: UTF-8 Unicode text
pwd
절대 경로 방식으로 현재 작업 디렉토리를 알려줌
➜ UNIX git:(master) ✗ pwd
/Users/Jeaha/git/KNOU/3-2/UNIX
cd
작업 디렉토리를 이동
- 디렉토리를 지정하지 않으면 사용자의 홈 디렉토리로 이동함
cd [directory]
➜ UNIX git:(master) ✗ cd Lecture
➜ Lecture git:(master) ✗
파일과 디렉토리 관리
mkdir
- 디렉토리를 만드는 명령
mkdir [options] directories
- 옵션
-p
필요한 경우 상위 디렉토리를 만듦-m
디렉토리를 만들면서 접근 권한을 설정
rmdir
- 디렉토리 삭제 명령
- 비어있는 디렉토리만 삭제할 수 있음
- 조건없이 디렉토리를 삭제하려면(모든 파일과 하위 폴더를 포함)
rm -r dir
또는rm -rf dir
을 사용해야 함(위험하다.)
- 옵션
-p
비어있는 디렉토리를 삭제하면서 부모 디렉토리가 비게 되는 경우 사용
cp
- 파일이나 디렉토리를 복사
cp [options] file1 file2
cp -i file1 file2
- 대상 파일이 존재 한다면 덮어쓰기 함.
cp [options] files directory
- 마지막 인자가 디렉토리인 경우
- 여러 파일을 지정된 디렉토리에 같은 이름으로 복사
cp file1 file2 dir1
cp -r [options] dir3 dir2
- 디렉토리응 재귀적으로 복사할 때
-r
옵션 사용 - 대상 디렉토리가 존재하는 경우, 그 곳에 디렉토리 자체가 복사됨
- 디렉토리응 재귀적으로 복사할 때
mv
- 파일의 이름을 변경하는 명령
- 또는 다른 디렉토리로 이동하는 명령
mv [options] source target
mv file2 file2
- 대상 파일이 존재한다면 덮어쓰기가 수행됨
mv dir1 dir2
- 디렉토리의 이름을 변경함
- 대상 디렉토리가 존재한다면 서브디렉토리로 이동됨.
mv [options] files directory
- 마지막 인자가 존재하는 디렉토리인 경우
- 여러 파일을 지정된 디렉토리로 이동함
mv file1 file2 dir1
rm
- 파일을 삭제
- 기본적으로 파일만 삭제함
rm [options] files
- 파일을 삭제할 때 조심해야 함
alias rm='rm -i'
를 해두는 것도 좋은 방법임
- 옵션
-r
디렉토리와 하위 를 모두 함께-i
삭제 전에 물어봄-f
물어보지 않고 무조건 삭제
파일의 접근 권한
- 권한이 없는 사용자의 접근을 막기 위해 접근권한을 설정함
- 사용자 부류에 따라 읽기/쓰기/실행 권한을 각각 설정함
- 사용자 부류
- u 소유자
- g 그룹
- o 기타
- 권한
- r 읽기
- w 쓰기/수정/삭제/이름바꾸기
- x 실행
디렉토리의 접근 권한
- 권한
- r : 디렉토리가 가진 파일과 서브 디렉토리의 목록 보기
- w : 파일과 디렉토리를 만들거나 삭제
- x : 디렉토리로 이동하거나 디렉토리에서 프로그램 실행 또는 파일의 메타데이터 보기
- 디렉토리를 자유롭게 사용하려면 읽기/쓰기/실행 권한을 모두 가져야 함
- 적어도 읽기/실행 권한을 가지고 있어야 해당 디렉토리로 이동하거나 해당 디렉토리에서
ls -l
을 실행할 수 있음.
- 적어도 읽기/실행 권한을 가지고 있어야 해당 디렉토리로 이동하거나 해당 디렉토리에서
➜ UNIX git:(master) ✗ ls -ld /home ~root
lrwxr-xr-x 1 root wheel 25 Oct 22 11:07 /home -> /System/Volumes/Data/home
drwxr-x--- 7 root wheel 224 Apr 19 2020 /var/root
chmod
파일의 소유자가 파일의 접근 권한을 변경하는 명령
chmod [options] mode files
-R
옵션을 디렉토리에 적용하면 모든 파일과 서브 디렉토리까지 권한을 변경
- 8진수 모드
- 읽기(r)은 4, 쓰기(w)는 2, 실행(x)는 1
- 예: rwxr-xr-x -> 111101101 -> 755
chmod -R 755 dir1
- 기호 모드
- 형식은
[ugoa][+-=][rwx]
- ugoa는 각각 user, group, other, all을 의미. 생략 하면 all
- +-=는 각각 권한의 추가, 제거, 지정을 의미함.
chmod u+x file1
chmod u=rwx,g=rx,o=x file2
- 형식은
umask
- 접근권한의 기본값을 출력하거나 설정하는 명령
- 보통
/etc/bashrc
에 설정되어 있음
- 보통
umask [-S][mask]
- 단순히 umask 또는 umask -S 명령을 실행하면 현재 기본값을 알 수 있음
- -S 옵션은 기호모드로 결과를 보여줌
umask 002
마스크 값이 라는 것은 -------w-, 즉 기타 사용자에게 쓰기 권한을 부여하지 않겠다는 것.- 결국 마스크 값이 002 라는 것은 접근 권한을 주는것.
- 파일의 경우 실행 권한은 부여되지 않으며 접근 권한은 664가 됨.
- 참고로
touch file
명령을 파일의 접근/수정 시간을 현재 시간으로 변경하며 파일이 존재하지 않으면 파일을 생성함.
chown
root 사용자가 파일이나 디렉토리 소유자를 변경하는 명령
- 파일 또는 디렉토리는 그것을 생성한 사용자 계정과 그룹이 곧 소유자와 소유 그웁으로 설정됨.
chown [options] newowner files
- newowner에 소유자만 주어지면 소유자를 변경하는것.
소유자:그룹
또는소유자.그룹
의 형태로 지정할 수 있음.- 소유자가 생량디면
:그룹
변경이 없어지는 것이며, 그룹이 생략되면소유자:
소유자와 같은 그룹으로 정해짐
- 소유자가 생량디면
- -R 옵션을 사용하여 디렉토리에 재귀적으로 적용할 수 있음
ln
- 파일에 다른 이름으로 연결(link)하는 명령
ln [options] 원본파일명 [대상파일명]
- 기본적으로 하드 링크를 만들며, -s 옵션을 사용하면 심벌릭 링크가 만들어짐
- 하드 링크(hard link)
- 하나의 파일에 다른 이름을 부여하는 것
- 원본 파일의 링크 카운트가 증가함
- 다른 파일 시스템에는 링크할 수 없음
- 심벌릭 링크
- 윈도우 '바로가기'와 같은 역할의 독립적 파일
- 다른 파일 시스템에 링크를 만들 수 있음
- 원본을 삭제하면 심벌릭 링크는 의미가 없어짐
- 디렉토리의 경우, 심벌릭 링크만 만들 수 있음
- 하드 링크와 심벌릭 링크의 차이
➜ Lecture git:(master) ✗ ll
total 96
-rw-r--r-- 1 jeahasorrowkissed staff 8.9K Oct 16 16:47 01_LINUX.md
-rw-r--r-- 1 jeahasorrowkissed staff 5.5K Oct 16 18:06 02_Install_Linux.md
-rw-r--r-- 1 jeahasorrowkissed staff 14K Oct 16 19:53 03_Use_Shell.md
-rw-r--r-- 1 jeahasorrowkissed staff 9.9K Oct 22 11:41 04_File_And_Directory.md
➜ Lecture git:(master) ✗ ls -l 04_File_And_Directory.md
-rw-r--r-- 1 jeahasorrowkissed staff 10115 Oct 22 11:41 04_File_And_Directory.md
➜ Lecture git:(master) ✗ ln 04_File_And_Directory.md 04.hl
➜ Lecture git:(master) ✗ ln -s 04_File_And_Directory.md 04.sl
➜ Lecture git:(master) ✗ ls -li 04*
37003925 -rw-r--r-- 2 jeahasorrowkissed staff 10115 Oct 22 11:41 04.hl
37110394 lrwxr-xr-x 1 jeahasorrowkissed staff 24 Oct 22 11:45 04.sl -> 04_File_And_Directory.md
37003925 -rw-r--r-- 2 jeahasorrowkissed staff 10115 Oct 22 11:41 04_File_And_Directory.md
37003925 -rw-r--r-- 2 jeahasorrowkissed staff 10115 Oct 22 11:41 04_File_And_Directory.md
의 2는 링크의 갯수를 의미함.37110394 lrwxr-xr-x 1 jeahasorrowkissed staff 24 Oct 22 11:45 04.sl -> 04_File_And_Directory.md
의 ->는 대상 파일의 심볼릭 링크임을 의미함.
파일의 내용 확인
more
- 파일의 내용을 한 화면 단위로 출력하는 명령
- 한 화면을 보여준 상태에서 멈춤
more [options] file
- 한 화면에 모두 보여줄 수 없을 때
--More--(69%)
와 같은 메세지가 나옴 - space bar를 누르면 다음 화면으로 이동
- enter를 누르면 한라인씩 이동
- q를 누르면 종료
more -20 +10 /etc/services
- 10번째 라인부터, 20라인 단위로 보여줌
- 한방향으로만 스크롤 가능.
- 한 화면에 모두 보여줄 수 없을 때
less
- more 명령의 개선된 버전 양방향 스크롤 가능
- 위 또는 아래로 스트롤 가능
- page up, page down, up, down등
- 그외 내부 명령이 있음
- 라인/화면 단위 이동, 라인/퍼센트로 위치 지정, 검색 등
head
파일의 맨 앞 부분을 10라인(기본 값) 출력하는 명령
head [options][files]
- 옵션
-n 숫자
또는-숫자
를 사용하면 보고싶은 라인 수를 변경할 수 있음 head -n 5 /etc/passwd
head -3 /etc/*.conf
- 옵션
tail
파일의 마지막 부분을 10라인(기본값) 출력하는 명령
tail [options] [files]
- head 명령과 같은 옵션을 사용할 수 있으며,
옵션-n + 숫자
를 사용하면 해당 라인부터 출력함 -f
옵션을 사용하면 변화하는 파일의 내용을 계속 감시함.tail -f /log/catalina.out
- head 명령과 같은 옵션을 사용할 수 있으며,
cat
하나 또는 여러 파일을 연결(concatenate) 시켜 화면에 출력
cat [options] [files]
- 파일을 지정하지 않으면 표준 입력으로부터 읽음
cat > file
을 수행하여 텍스트 파일로 만들 수 있음- 여러 파일의 내용을 연결시킬 때 사용할 수 있음 (리다이렉션 활용)
- 옵션 -n을 사용하면 라인 번호를 붙일 수 있음
➜ Lecture git:(master) ✗ cat > cat1.txt
asdf
1234
➜ Lecture git:(master) ✗ cat > cat2.txt
cat2 22222
eee222^C
➜ Lecture git:(master) ✗ cat cat2.txt
cat2 22222
➜ Lecture git:(master) ✗ cat cat*.txt > total.txt
➜ Lecture git:(master) ✗ cat total.txt
asdf
1234
cat2 22222
➜ Lecture git:(master) ✗ ll
total 144
-rw-r--r-- 1 jeahasorrowkissed staff 8.9K Oct 16 16:47 01_LINUX.md
-rw-r--r-- 1 jeahasorrowkissed staff 5.5K Oct 16 18:06 02_Install_Linux.md
-rw-r--r-- 1 jeahasorrowkissed staff 14K Oct 16 19:53 03_Use_Shell.md
-rw-r--r-- 2 jeahasorrowkissed staff 13K Oct 22 12:08 04.hl
lrwxr-xr-x 1 jeahasorrowkissed staff 24B Oct 22 11:45 04.sl -> 04_File_And_Directory.md
-rw-r--r-- 2 jeahasorrowkissed staff 13K Oct 22 12:08 04_File_And_Directory.md
-rw-r--r-- 1 jeahasorrowkissed staff 10B Oct 22 12:09 cat1.txt
728x90
반응형
'OS > Linux' 카테고리의 다른 글
[Linux] 사용자 관리 (0) | 2020.10.25 |
---|---|
[Linux] 시작과 종료 (0) | 2020.10.24 |
[Linux] Shell 사용하기 (0) | 2020.10.16 |
[Linux] 리눅스 설치준비 및 표준 디렉토리 (0) | 2020.10.16 |
[Linux] 리눅스 란 (0) | 2020.10.16 |