[CentOS] 파일시스템, pwd, ls, cd
by Choi HyeSun
Linux 파일시스템
트리구조
-
리눅스와 같은 유닉스형 운영체제에서는 윈도우즈와 마찬가지로 계층적인 디렉토리 구조로 파일을 구성
-
트리 형식으로 디렉토리(다른 시스템에서는 폴더라고도 부름)를 구성하고, 각 디렉토리에는 파일이나 다른 디렉토리가 포함될 수 있음
-
루트(root) 디렉토리 :
/
-
파일시스템의 최상위 디렉토리
-
파일들과 하위 디렉토리들을 포함하고 있음
-
하위 디렉토리 역시 디렉토리들과 하위 파일을 가지고 있음
-
-
윈도우즈와 차이점
-
윈도우즈 : 저장장치마다 개별 파일 시스템으로 관리
-
유닉스형 시스템 : 아무리 많은 저장장치가 설치되어 있어도 단일 파일 시스템으로 관리
저장장치들은 시스템 유지보수를 담당하는 시스템 관리자의 재량에 따라 정확한 위치에 설치(장착/마운트)됨
-
-
예제
리눅스 시스템 디렉토리
-
/
: 루트 디렉토리, 파일 시스템의 시작점 -
/bin
: 시스템 부팅과 실행에 필요한 바이너리(프로그램)들을 포함 -
/boot
: 리눅스 커널, 시작 RAM 디스크 이미지(시스템 부팅시 필요한 드라이버가 있음), 그리고 부트 로더를 포함 -
/dev
: 디바이스 노드를 갖고 있는 특수한 디렉토리, 커널이 인식하고 있는 모든 디렉토리를 관리 -
/etc
: 시스템 전반의 환경설정 파일, 시스템 부팅시 시스템의 각 서비스를 시작하는 쉘 스크립트 전부가 있음, 모든 파일이 텍스트 형식 -
/home
: 일반적으로 각 사용자마자 /home 디렉토리를 갖게 됨, 일반 사용자는 홈 디렉토리 내에서만 파일 편집 가능 -
/lib
: 주요 시스템 프로그램에서 사용하는 공유 라이브러리 파일이 저장 -
/lost+found
: 포맷된 각 파티션이나 ext3처럼 리눅스 파일시스템에서 사용하는 디바이스에 있음, 파일 시스템에 문제가 생겼을 때 부분 복구를 도움, 시스템에 심각한 문제가 없다면 늘 비어있음 -
/media
: (최신)USB 드라이버, CD_ROM 등과 같은 휴대용 장치가 시스템에 연결될 때 자동으로 마운트되는 마운트 포인트는 여기에 저장 -
/mnt
: (구식)수동으로 휴대용 장치를 제거하기 위한 마운트 포인트를 저장 -
/opt
: 추가적인 소프트웨어를 설치할 때 사용, 주로 상업용 소프트웨어를 설치 -
/proc
: 특수 디렉토리, 리눅스 커널이 관리하는 가상 파일 시스템 -
/root
: 루트 계정의 홈 디렉토리 -
/sbin
: 시스템 바이너리 파일, 일반적으로 슈퍼유저를 위한 중요한 시스템 작업을 수행하는 프로그램들이 있음 -
/tmp
: 임시 저장용 디렉토리 -
/usr
: 리눅스 시스템에서 가장 큰 트리구조를 갖고 있음, 일반 사용자가 사용하는 모든 프로그램과 지원파일들이 모두 들어있음-
/usr/bin
: 사용중인 리눅스 배포판이 설치한 실행 프로그램 -
/usr/lib
:/usr/bin
디렉토리에 있는 프로그램을 위한 공유 라이브러리 -
/usr/local
: 시스템 전반에 걸쳐 사용되는 프로그램들이 저장되는 공간 -
/usr/local/bin
: 소스코드로 컴파일된 프로그램이 주로 설치됨
-
-
/usr/sbin
: 시스템 관리 프로그램 -
/usr/share
:/usr/bin
디렉토리에 있는 프로그램이 사용하는 공유 데이터를 저장, 디폴트 설정파일 등이 있음/usr/share/doc
: 시스템에 설치된 대부분의 패키지에는 문서파일이 포함되어있고, 이러한 패키지 문서파일이 저장
-
/var
: 상대적으로 변하기 쉬운 데이터를 모아둠, 데이터페이스, 스풀 파일, 사용자 메일 등과 같은 데이터가 저장/var/log
: 시스템 활동을 기록하는 로그 파일이 들어있음, 매시간마다 시스템 상황을 확인하는 매우 중요한 기록 파일
Linux 파일명
-
.
로 시작하는 파일명을 가진 파일들은 보이지 않음(숨김파일)ls
로는 확인할 수 없고,ls -a
로 확인 가능
-
파일명과 명령어는 대소문자를 구별
file
!=FILE
-
리눅스는 파일 확장자 개념이 없기 때문에 원하는 대로 파일명을 만들 수 있음
-
파일의 내용과 파일 종류는 다른 방법으로 결정됨
-
다른 운영체제(윈도우즈 등)와 편한 호환을 위해서, 또는 사용자가 알아보기 쉽기 위하여 확장자를 붙여주면 좋음
-
-
파일명에 `
(띄어쓰기),
.,
-,
_`(구두점기호) 사용 가능- 띄어쓰기와 마침표는 권장하지 않음
심볼릭 링크
-
파일을 가리키는 링크
-
종류 : 하드링크 / 소프트링크
-
하드링크
-
링크를 생성하는 기존 유닉스 방식
-
기본적으로 하나의 파일에는 하나의 하드 링크가 있는데, 그것이 바로 파일에 이름을 만들어주는 것
-
하드 링크가 만들어질 때 그 파일에 대한 디렉토리가 곧바로 생성됨
-
약점 1. 파일 시스템 외부에 있는 파일을 참조할 수 없음
같은 디스크 파티션에 있는 파일만 참조 가능 -
약점 2. 디렉토리를 참조할 수 없음
-
파일 그 자체만으로 구분이 어려움
하드 링크를 포함한 디렉토리 목록은 해당 링크가 가리키고 있는 것이 무엇인지 보여주지 않음 -
하드 링크가 삭제될 때, 링크도 함께 사라지지만 파일 내용은 그 파일의 모든 링크가 삭제될 때까지 (0개가 될 때까지) 계속 남아있음
-
-
소프트링크(심볼릭링크)
-
하드 링크의 한계를 극복하기 위하여 탄생
-
참조될 파일이나 디렉토리를 가리키는 텍스트 포인터가 포함된 특수한 파일을 생성
-
윈도우즈의 바로가기와 매우 흡사함(물론 윈도우즈보다 수년이나 앞서긴 함)
-
심볼릭 링크에 편집을 하게 되면 심볼릭 링크가 참조하고 있는 파일도 똑같은 변경이 이루어짐
-
심볼릭 링크 삭제시 링크만 삭제됨
-
링크가 깨지는 것 : 심볼링 링크는 남아있고 파일만 삭제하여 아무것도 가리키지 않게 되는 것
-
pwd - 현재 작업 디렉토리 확인
-
Print Working Directory
-
현재 작업 디렉토리 : 지금 위치해있는 지점
-
시스템에 로그인시 홈 디렉토리(~)가 현재 작업 디렉토리가 됨
-
홈 디렉토리(~) : 사용자 계정마다 갖는 고유의 공간, 일반 사용자로 시스템 사용시 파일 쓰기 권한이 부여된 유일한 공간
ls
현재 디렉토리 조회하기
ls
: 현재 작업 디렉토리에 있는 파일과 하위 디렉토리들이 모두 표시
다른 디렉토리 조회하기
ls $다른디렉토리
: 다른 디렉토리에 있는 파일과 하위 디렉토리들이 모두 표시
ls $다른디렉토리1 $다른디렉토리2
: 한 번에 여러 디렉토리 목록 확인
ls 많이 사용되는 옵션
-
-a
--all
: 모든 파일 보기,.
으로 시작하는 숨김 파일도 표시됨 -
-d
--directory
: 디렉토리를 명시하더라도 세부 내용이 아닌 해당 디렉토리만 조회할 수 있도록, 보통-l
과 같이 쓰임 -
-F
--classify
: 지시 문자를 추가 표시, 예) 디렉토리명이면 끝에/
를 덧붙여 표시 -
-l
: 자세한 정보 출력 (long 포맷으로 출력 결과 확인) -
-h
--human-readable
:-l
옵션과 함께 사용하면 파일 크기를 사람이 인식하기 쉬운 형태로 표시 -
-r
-reverse
: 출력 결과를 역순(내림차순)으로 표시, 일반적으론 오름차순 -
-s
: 파일 크기순으로 정렬 -
-t
: 파일 수정 시간 순으로 정렬
ls -l
long 포맷으로 봤을 때의 정보
-
ex)
drwxr-xr-x. 28 root root 860 10월 16 18:43 run
-
첫 번째.
drwxr-xr-x.
: 형식 & 접근 권한 정보-
1번째 문자 : 형식
-
일반파일,d
디렉토리,l
심볼릭링크 -
2~4번째 문자 : 소유자의 접근 권한 정보
r
read,w
write,x
execute -
5~7번째 문자 : 소유 그룹의 접근 권한 정보
-
8~10번째 문자 : 그 외 사용자의 접근 권한 정보
-
-
두 번째.
28
: 하드 링크의 수 -
세 번째.
root
: 소유자의 사용자명 -
네 번째.
root
: 소유한 그룹명 -
다섯 번째.
860
: 크기(byte) -
여섯 번째.
10월 16 18:43
: 수정 일자 -
일곱 번째.
run
: 파일 or 디렉터리 or 심볼릭링크 명
cd : 현재 작업 디렉토리 변경
-
cd $이동할디렉토리경로명
-
유용한 단축 표현
-
cd
: 작업 디렉토리를 홈 디렉토리로 변경 -
cd -
: 작업 디렉토리를 이전 디렉토리로 변경 -
cd ~username
: username의 홈 디렉토리로 작업 디렉토리를 변경
-
-
예제
디렉토리경로
- 절대 경로와 상대 경로가 있음
절대 경로
-
/
루트(최상위) 디렉토리에서부터 원하는 디렉토리 또는 파일까지의 경로에 대하여 각 디렉토리 위치들을 명시한 것 -
예)
/usr/bin
- 루트 디렉토리 아래의 usr 디렉토리 아래의 bin 디렉토리
상대 경로
-
현재 작업 디렉토리에서부터 원하는 디렉토리 또는 파일까지의 경로에 대하여 각 디렉토리 위치들을 명시한 것
-
상대 경로명을 표시하려면 파일시스템 트리상의 상대적인 위치를 대신 표현해주는 특수 기호를 사용해야함
-
.
: 현재 작업 디렉토리
거의 모든 경우에./
기호를 생략할 수 있음
예)./bin
=bin
-
..
: 작업 디렉토리의 상위 디렉토리
-
Subscribe via RSS