파일과 디렉토리

  • 학습 개요
    리눅스에서는 모든 것이 파일로 취급되어 디렉토리나 디바이스도 파일로 취급한다.
    파일의 종류를 살펴보고 파일과 디렉토리의 접근권한이 가지는 의미를 이해해 보자.
    파일과 디렉토리를 다루기 위한 쉘 명령을 익히고 텍스트 파일의 출력을 위한 명령을 알아보자.

  • 학습 목표

    1. 리눅스에서 파일의 종류를 나열할 수 있다.
    2. 파일과 디렉토리를 조작하는 명령의 사용법을 익힌다.
    3. 파일과 디렉토리의 접근권한에 관해 설명할 수 있다.
    4. 파일의 내용을 확인하는 명령을 나열하고 설명할 수 있다.

파일 시스템 탐색

파일 시스템

  • 운영체제가 디스크(파티션)상에 파일을 구성하는 방식
  • 파일과 디렉토리의 집합을 구조적으로 관리하는 체계
  • 다양한 형식의 파일 시스템이 존재
  • 리눅스는 전체 파일 시스템을 개의 트리구조로 관리
    • 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

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

+ Recent posts