Linux Directory에 대해 알아보자

디렉토리와 파일

디렉토리

리눅스의 디렉토리는 계층구조로, 루트로부터 시작하여 트리 형태의 계층구조를 이룬다.

root

  • 디렉토리 계층 구조의 뿌리

    • 모든 정보는 root로부터 단일한 트리 구조로 구성됨
  • Windows

    • 각각의 저장 장치 파티션마다 드라이브 문자 지정
    • 각 드라이브마다 루트가 존재하고 디렉토리 구조가 존재
  • root를 관리하는 파일 시스템 : 루트 파일 시스템

    • /dev/vda1라는 저장 장치에 루트 파일 시스템 내부 저장 정보 저장
  • 리눅스에 새로운 저장 장치 추가된다면?

    • 루트 파일 시스템 하의 어떤 디렉토리에 해당 장치를 마운트
    • ex) /home/user/new_ssd 라는 디렉토리 만들고, 새 장치 mount 수행시 해당 디렉토리 밑에 저장되는 정보는 루트 파일 시스템이 아닌 새로운 장치에 저장

홈 디렉토리

각 사용자마다 별도의 홈 디렉토리가 존재하고 사용자가 로그인하면 홈 디렉토리에서 작업을 시작한다.

절대 경로 명 : 루트 디렉토리로부터 시작하여 경로 이름을 정확하게 적는 것

상대 경로 명 : 현재 작업 디렉토리부터 시작해서 경로 이름을 적는 것

  • ~ : 홈 디렉토리
  • . : 현재 디렉토리
  • .. : 부모 디렉토리

그외 디렉토리

  • /bin
    • Binaries : System-wide (global) 하게 사용되는 기본적인 명령어에 대한 실행 파일들
  • /sbin
    • System binaries : 시스템 관리를 위한 명령어의 실행 파일 들
  • /usr
    • 각 사용자들이 설치한 프로그램들의 실행파일과 라이브러리, 소스, 매뉴얼 등
    • /usr/local : 새로운 프로그램들이 설치됨
  • /etc
    • Configurations : 각종 환경 설정 파일들 (네트워크, 서비스, 사용자, 암호 등)
  • /var
    • Variable data : 시스템 동작 중에 계속해서 변화하는 파일들 (log, webdata, lock)

디렉토리 명령어

  • pwd : 현재 작업 디렉토리의 절대 경로명 출력
  • cd [디렉토리] : 현재 작업 디렉토리를 지정된 디렉티리로 이동한다. 디렉토리 미 지정시 홈 디렉토리로 이동
  • which 명령어 : 명령어의 경로 출력
  • whereis 명령어 : 명령어의 경로 출력, 메뉴얼 경로 출력
  • ls(dir) [-aslFR] 디렉토리* 파일* : 지정된 디렉토리의 내용을 리스트 한다. 디렉토리 미 지정시 현재 디렉토리 내용을 리스트 한다. 또한 파일을 지정하면 해당 파일만을 리스트한다. 옵션 중 -s는 size 옵션으로, 디렉토리 내에 있는 모든 파일의 크기를 KB크기로 출력해준다. -R은 Recursive 옵션으로 모든 하위 디렉토리 내용을 리스트해준다.
  • mkdir [-p] 디렉토리 : 디렉토리를 새로 만든다. -p 옵션은 중간 디렉토리가 없는 경우 자동으로 생성해주는 옵션이다.
  • rmdir 디렉토리 : 디렉토리를 삭제한다. 이 때는 빈 디렉토리만 삭제할 수 있다.

파일

유닉스의 파일

  • 연속된 바이트 형태로 저장된 데이터

파일의 종류

  • 일반 파일

    • 데이터를 가지고 있으면서 디스크에 저장
    • text file, binary file
  • 디렉토리

    • 파일들을 계층적으로 조직화하는데 사용되는 일종의 특수 파일
    • 디렉토리 내에 파일이나 서브디렉토리들이 존재
  • 장치파일

    • 물리적인 장치에 대한 내부적인 표현
    • 키보드(stdin), 모니터(stdout), 프린터 등도 파일처럼 사용
    • dev 디렉토리에 여러 장치들을 저장한다.
  • 심볼릭 링크 파일

    • 어떤 파일을 가르키는 또 하나의 경로명을 저장하는 파일
    • 윈도우즈의 바로가기 파일과 유사하다고 생각하면 이해에 도움 됨

리눅스에서 지원하는 파일 종류

파일 종류표시설명
일반 파일-데이터를 갖고 있는 텍스트 파일 또는 이진 파일
디렉토리 파일d디렉토리 내의 파일들의 이름들과 파일 정보를 관리하는 파일
문자 장치 파일c문자 단위로 데이터를 전송하는 장치를 나타내는 파일
블록 장치 파일b블록 단위로 데이터를 전송하는 장치를 나타내는 파일
FIFO 파일p프로세스 간 통신에 사용되는 이름 있는 파이프
소켓s네트워크를 통한 프로세스 간 통신에 사용되는 파일
심볼릭 링크l다른 파일을 가리키는 포인터와 같은 역할을 하는 파일

파일 명령어

file [옵션] 파일 : 파일의 종류를 볼 수 있다.

파일의 상태

  • 파일 상태
    • 파일에 대한 모든 정보
    • 블록 수, 파일 타입, 접근권한
    • 링크 수, 파일 소유자의 사용자 ID
    • 그룹 ID, 파일 크기, 최종 수정 기간 등
    • 이러한 정보들을 전부 메타데이터(metadata)라고 함

ex) ls -l newfile

-rw-rw-r–1rootroot14Sep 14 13:39new file
접근권한링크수소유자ID소유그룹ID파일크기최종 수정 시간파일 이름

stat 명령어

stat [옵션] 파일 : 파일의 자세한 상태 정보(metadata)를 출력한다.

  • Blocks : 실제 저장 장치 내에서 차지하는 블록 개수
  • IO Block : 1개 블록의 크기(바이트). 이 단위로 장치 입출력이 수행됨
  • I-node : Index node. 운영체제에서 해당 파일을 관리하기 위해 부여한 번호
  • Links : 해당 I-node와 연결된 파일의 개수

파일 내용 출력

cat [-n] 파일 : 파일들의 내용을 그대로 화면에 출력한다. 파일을 지정하지 않으면 표준입력 내용을 그대로 화면에 출력한다. -n 옵션은 출력의 라인마다 숫자를 매겨준다.

more 파일 : 파일들의 내용을 페이지 단위로 화면에 출력한다.

head [-n] 파일 : 파일들의 앞 10개 라인을 화면에 출력한다. 파일을 지정하지 않으면 표준입력 내용을 대상으로 한다.

tail [-n] 파일 : 파일들의 뒷 10개 라인을 화면에 출력한다. 파일을 지정하지 않으면 표준입력 내용을 대상으로 한다. -f 옵션을 가지고 있는데 파일의 변화가 있을 때 계속 지켜보고자 할 때 사용한다. 예를 들어 log를 확인할 때 사용하면 좋다.

wc [-lwc] 파일 : 파일에 저장된 line, word, char의 개수를 세서 출력한다. 파일을 지정하지 않으면 표준입력 내용을 대상으로 한다.

ex) wc cs1.txt : 38 318 2088 cs1.txt line, word, char 순서로 나오게 되며, 옵션을 통해서 원하는 개수를 얻을 수 있다.

파일 명령어

cp [-i] 파일1 파일2 : 파일1을 파일2에 복사한다. -i 옵션은 대화형 옵션으로, 복사 대상 파일와 같은 이름을 가진 파일이 존재한다면 덮어씌울 것인가 물어보는 옵션이다. -r 옵션은 cp [-r] 디렉토리1 디렉토리2 디렉토리1 전체(하위 디렉토리 포함)를 디렉토리2로 복사한다는 옵션이다.

mv [-i] 파일1 파일2 : 파일1의 이름을 파일2로 변경한다. -i 옵션은 위의 cp와 같다. 여러 파일을 지정하려면 mv 파일1 파일2 .. 파일n 디렉토리와 같이 사용하면 된다.

rm [-ri] 파일* : 파일을 삭제한다. -i는 대화형 옵션이며, -r 옵션은 디렉토리 지정시 하위 디렉토리나 파일들을 다 삭제하는 명령어다.

링크 : 기존 파일에 대한 또 하나의 새로운 이름

ln [-s] 파일1 파일2 : 파일1에 대한 새로운 이름(링크)로 파일2를 만들어 준다. -s 옵션은 심볼릭 링크를 뜻한다. 파일2 부분에 디렉토리를 넣어서 사용할 수도 있다.

심볼릭 링크

  • 다른 파일을 가리키는 별도의 파일
  • 실제 파일의 경로명을 저장하고 있는 일종의 특수 파일
  • 이 경로명이 다른 파일에 대한 간접 포인터 역할
  • Windows의 바로가기 파일과 유사

댓글