파일의 종류

1. 일반 파일(Regular File) 또는 정규 파일

- 데이터 또는 프로그램 코드에 해당하는 일련의 바이트 스트림으로 구성

- 정규 파일은 표준 파일 입출력 시스템 호출을 통해 참조됨


2. 디렉토리 파일(Directory File)

- 특별한 형식으로 디스크에 저장

- 디렉토리 파일은 디렉토리의 명시적인 시스템 호출을 통해 참조됨


3. 특수 파일(Special File)

- 프린터와 터미널, 디스크 같은 주변 장치나 또는 파이프와 소켓 같은 프로세스 간 상호 통신 기법에 해당

- 표준 입출력 시스템 호출을 통해 참조됨


4. UNIX 파일 시스템

- 일반 파일(Ordinary File)과 특수 파일(Special File)로 구성

- 일반 파일: 아스키 파일(ASCII File), 링크된 파일(Linked File), 실행 파일(Execute File) 등

- 특수 파일: 디렉터리(Directory), 장치 파일(Device File) 등


디렉토리(파일) 정보 출력(ls)

- ls(List) 명령어: 특정 디렉토리에 있는 디렉토리와 파일의 정보를 열거 (기본적으로 현재 디렉토리를 리스트)

- 추가 옵션으로 파일이나 디렉토리의 크기, 소유주, 만든 시간, 변경 시간, 이름, 접근 권한 등도 알 수 있음 

- 일반적으로 알파벳 오름 차순으로 표시함


1. ls 명령어 도움말

- 여러 파일이나 디렉토리를 지정할 수 있음

- 여러 옵션 문자를 연속적으로 사용하여 옵션 기능을 복합적으로 사용할 수 있음


- 주요 옵션

 옵션

 설명

 -l

 목록(List) 형태로 디렉토리 및 파일의 정보를 자세히 보여줌

 -a

 도트(.) 파일(숨김 파일)을 포함하여 디렉토리 내에 있는 모든 디렉토리 및 파일을 보여줌

 -R

 하위 디렉토리에 있는 내용까지 보여줌

 -F

 디렉토리인지 어떤 종류의 파일인지를 알려줌, 지시 문자를 추가로 표시

 (디렉토리: '/', 실행 파일:'*', 심볼릭 링크: '@')

 -i

 디렉토리 및 파일에 지정된 inode 번호를 보여줌

 -s

 파일을 크기순으로 정렬하여 보여줌

 -t

 파일을 수정 시간 순으로 정렬하여 보여줌

 -r

 출력 결과를 역순으로 표시


2. ls 명령 출력 결과

- ls -alFi 명령 실행 결과

- 각 필드 설명

① inode 번호, ② 파일 종류, 접근 권한, ③ 하드 링크수, ④ 소유주, ⑤ 소유 그룹, ⑥ 크기, 

⑦ 최종 변경일, ⑧ 최종 변경 시간,  이름


3. 각 필드 상세 설명

1) 파일 종류 (File Type)

 문자값

 디렉토리 및 파일의 종류

 d

 디렉토리

 b

 불록 디바이스 파일 (하드 드라이브나 CD-ROM 같이 블록 단위의 데이터를 처리하는 디바이스)

 c

 문자 디바이스 파일(터미널과 모뎀같이 바이트의 열로 데이터를 처리하는 디바이스)

 l

 심볼릭 링크 파일

 p

 명명된 파이프(Named Pipe)

 s

 유닉스 도메인(Socket)

 -

 일반(정규) 파일


2) 접근 권한 (파일 모드(File Mode))

- 권한에 대한 자세한 내용은 아래 링크의 글을 참조

a. UNIX 운영체제에서는 권한 부여의 대상을 세 종류로 구분

- user: 파일을 만든(생성) 소유주

- group: 파일을 만든 소유주가 속한 그룹의 사용자

- other: 기타 사용자

b.  접근 권한의 종류

문자값 

 파일

  디렉토리

 r(4)

 파일에 대한 읽기 권한(열기, 읽기 허용)

 실행 속성이 설정되어 있으면 디렉토리 내의 파일을 나열할 수 있게 허용

 w(2)

 파일에 대한 쓰기 권한(쓰기, 잘나내기 허용, 이름 변경이나 파일 삭제 허용하지 않음,

파일 삭제나 파일 이름 변경은 디렉토리 속성에 의해 결정됨)

 실행 속성이 설정되어 있으면 디렉토리 내의 파일들을 생성, 삭제, 이름변경이 가능하도록 허용

 x(1)

 파일에 대한 실행 권한

(파일이 프로그램으로 처리되고 파일이 실행되도록 허용, 스크립트 언어에서 작성된 프로그램 파일들은 읽기 가능으로 설정 되어 있어야만 실행 가능함)

 디렉토리 내에서 탐색을 위해 이동 할 수 있도록 허용(디렉토리에 들어 올 수 있도록 허용)

 -

 r, w, x에 대한 권한이 없음을 표시(문자 자리를 -로 대체)


c. 접근 권한 기본 값(파일과 디렉토리 생성시 접근 권한, 단, umask로 지정한 값은 기본값에서 제거)

- 일반(정규) 파일; 666(rw-rw-rw-) - umask로 지정한 값

- 디렉토리: 777(rwxrwxrwx) - umask로 지정한 값

* umask

- 앞으로 만들어질 파일에 영향을 미치는 명령, 파일이 생성될 때 주어진 기본 퍼미션을 제어

- 명령 시 지정한 8진수는 새로 만들어질 파일에서 제거 될 권한을 명시


d. 기타

- 심볼릭 링크 파일 속성: 항상 lrwxrwxrwx으로 더미값을 의미, 실제 파일의 속성은 심볼릭 링크가 가리키는 파일의 속성값을 따름


3) 하드 링크수(Hard Link)

- 링크 카운터라고도 함

- 동일한 inode를 참조하는 파일 수를 말함

4) 소유주

- 해당 디렉토리 및 파일의 소유주, 디렉토리 및 파일을 생성한 UNIX 시스템의 사용자 계정이 지정됨

- 소유주는 생성 후에도 변경이 가능(chown 명령 사용, 추후 자세히 다룸)

5) 소유그룹

- 소유주가 소속된 기본 그룹명이 지정됨

- 소유 그룹은 생성 후에도 변경 가능 (chgrp 명령 사용, 추후 자세히 다룸)

6) 파일 크기

- 바이트 단위


디렉토리 관리 관련 명령어

1. 디렉토리 간의 이동(cd)

- cd 명령: Change Working Directory의 약자, 파일시스템 내의 특정 디렉토리로 이동할 때 사용

1) cd 명령 사용 방법: cd [Directory Name]

2) cd 명령 예시

 표현

 설명

 cd

 홈 디렉토리로 이동

 cd /

 root 디렉토리로 이동

 cd -

 이전 작업 디렉토리로 이동

 cd ~username

 username의 홈 디렉터리로 이동 (예: cd ~bob을 입력: 사용자 bob의 홈 디렉토리로 이동)

 cd /usr/include

 /usr/include 디렉터리로 이동

 cd ~/work/project

 홈 디렉토리 하위의 work/project 디렉토리로 이동

3) 현재 디렉토리 확인 명령

- pwd 명령: Print Working Directory의 약자, 사용자가 현재 작업하고 있는 디렉토리를 알려줌

4) 절대 경로명(Absolute Pathname)

- 루트 디렉토리를 기준으로 기술

- 루트 디렉토리에서 원하는 디렉토리 또는 파일(목적지) 까지의 경로에 대하여 각 디렉토리 위치를 하나하나 모두 명시

- 사용 예시

a. 홈 디렉토리에서 /usr/bin 디렉토리로 이동

- 절대 경로명: /usr/bin (루트 디렉토리(/) 다음에 usr 디렉토리가 있고 usr 안에는 bin 디렉토리가 있음을 의미)

b. /usr/bin 디렉토리에서 상위 디렉토리인 /usr로 이동

- 절대 경로명: /usr


5) 상대 경로명(Relative Pathname)

- 현재 디렉토리를 기준으로 기술, 현재 작업 디렉토리가 시작점

- 상대 경로명을 표시하려면 파일 시스템 트리상의 상대적인 위치를 대신 표현해주는 특수 기호를 사용

- '.' 기호: 현재 디렉토리, '..' 기호: 상위 디렉토리를 의미

- 사용 예시

a. /usr/bin 디렉토리에서 상위 디렉토리인 /usr 디렉토리로 이동

- 상대 경로명: ..


b. /usr에서 하위 디렉토리인 /bin 디렉토리로 이동

- 상대 경로명: ./bin

* 참고

- 거의 모든 경우에 ./ 기호를 생략할 수 있음

- 예시: /usr 디렉토리 하위 디렉토리인 /bin 디렉토리로 이동


2. 새로운 디렉토리 생성(mkdir)

- mkdir 명령: Make Directory의 약자, 디렉토리를 새로 만드는 경우에 사용

- 이미 존재 하는 디렉토리를 생성하려고 하면 오류가 발생

1) mkdir 명령 도움말

- 주요 옵션

 옵 션

 설 명

 -m

 새로 생성되는 디렉토리의 파일 모드(접근권한)를 명시적으로 설정

 -p

 이미 존재하는 디렉토리 생성시 오류를 발생하지 않고, 계층적 구조를 디렉토리를 한꺼번에 만듦

 -m, -p 같이 사용

 -p 옵션과 함께 -m 옵션이 사용되는 경우에 명시적인 접근 권한은 최하위 디렉토리에만 적용


2) mkdir 명령어 사용 예시


3. 기존 디렉토리 삭제(rmdir)

- rmdir 명령어: Remove Directory의 약자, 기존 디렉토리를 삭제함

- 디렉토리를 성공적으로 삭제 하려면 삭제 하려고 하는 디렉토리에 하위 디렉토리나 파일이 없어야 함

(즉, 비어 있어야 함, 비어있지 않으면 Directory not empty(디렉토리가 비어있지 않음) 오류 발생)

- 단, '.'와 '..'는 비어 있어야 하는 하위 디렉토리 개념에서 제외, 사용자에 의해 임의로 삭제 되지 않음


1) rmdir 명령어 도움말


- 주요 옵션

 옵 션

 설 명

 -p

 계층적인 구조를 갖는 디렉토리를 한꺼번에 삭제함

 p 옵션이 성공하려면 명령어에 나열한 하위 디렉토리 외에는 추가적인 파일이나 디렉토리가 없어야 함


2) rmdir 명령어 사용 예시