디렉터리 구조
FHS
: Filesystem Hierarchy system 구조
root로부터 디렉터리가 트리구조로 이루어짐
디렉터리 종류
- /root: 시스템 관리자인 root의 홈 디렉터리
- /home: 일반 사용자 홈 디렉터리, 사용자가 파일 등의 작업을 한 뒤 저장 위치 지정하지 않을 경우 자동 저장, 외부와 연결하면 자동으로 연결되는 지점
- /bin: 시스템 운영을 위한 쉘과 명령어 도구들의 들어있는 곳
시스템 관리자나 일반 사용자가 실행 할 수 있는 명령어
- /sbin: 시스템 운영하기 위한 명령어 관리 도구, 백업과 복원 등의 시스템 관리 명령어 일반사용자 접근하지 못하도록 설정 할 필요 있음
- /lib: 재사용 가능한 프로그램 모듈들이 들어있는 곳, 공유 라이브러리가 존재
- /usr: 일반 사용자들을 위한 대부분의 프로그램 저장 디렉터리
- /var: 로그, 웹 등의 외부에서 인터넷 접속 할 수 있는 지점, 업데이트 되는 파일, log 등 저장
- /boot: 시스템 부팅에 필요한 커널,
- /etc: 시스템 구성 파일들이 들어있는 곳, 환경 설정 파일들이 존재
- /lost+found: 시스템 crash, 전원문제로 shutdown 될 경우 system check 의해 복원된 파일들이 있는 곳, fsck 명령어로 복구할 때 사용되는 곳
- /media: 이동식 저장장치 자동 mount 되는 디렉터리
- /misc: NFS 디렉터리가 mount되는 디렉터리
- /src: 서비스 제공 시스템 데이터들이 들어있는 곳
- /mnt: 원격 디렉터리와 이동용 드라이브의 일시적 마운트에 사용되는 디렉터리
- /opt: 써드파티(시스템 이외의 장소) 어플리케이션들이 들어있는 곳
추가 소프트웨어 설치 시 사용
- /proc: 커널 설정을 보유하고 있는 특수 파일, 가상파일 시스템
패킷을 포워드 시키는 등 여러 설정 변경 가능
- /dev: 커널이 제공하는 가상 장치, 시스템에 있는 하드웨어 장치 파일들이 들어있는곳 블록장치들이 들어있음
- /tmp: 시스템에 의해 주기적으로 삭제되는 임시 파일과 폴더들이 임시 저장되는곳
- /selinux: SELinux 세팅을 변경하거나 표시하는데 사용되는 특수 파일이 들어있는 가상 파일 시스템, Linux 접속 보안 규정
- /sys: 핫 플러그인한 장치들을 변경하거나, 표시하는데 사용되는 특수 파일이 들어있는 가상 파일 시스템
- /tmp: 주기적으로 삭제되는 임시 파일과 폴더 들이 저장되는 곳,
임시로 파일을 만들고 삭제하는 곳, Sticky bit 권한 설정되어있음
- /dev/tty0: 첫번째 콘솔 CLI에서의 콘솔
- /dev/pts0: 첫번째 가상 터미널 GUI에서의 콘솔 에뮬레이터
File system
Linux
file system 종류를 확인 할 수 있음
![](https://velog.velcdn.com/images/dawon22/post/85dc3230-2d49-4016-8385-b95f0a205e64/image.png)
filesystem 종류
- ext3: 저널링 기능(디스크의 무결성을 유지) 시스템 로그에 있는 metadata 정보를 가지고 있는 데이터를 사용해서 저장하지 못한 데이터 복원
- ext4: 64bit 기억 공간 제한 삭제
- VAT,CIFS: Windows 파일 시스템 vfat_DOs 인식
- NTFS: Window NT4.0서버와 워크스테이션 사용, 하드디스크 인식하고 압축과 암호를 걸 수 있는 파일 시스템
- CIFS: Linux에서 인식하는 Windows 폴더의 파일시스템으로 Samba가 이를 사용
- ISO9660: Linux 인식하는 CD/DVD 표준 파일 시스템
- BRTFS와 XFS: Centos7부터 디폴트로 사용되는 파일시스템인 XFS와 안정성, 속도,최대 16EB 지원 등을 장점으로 하고 있음
/etc/fstab
자동 마운트 정보, UUID(장치 식별자) 해당 장치를 시스템이 인식해주는 고유 번호
![](https://velog.velcdn.com/images/dawon22/post/8640b05d-5116-4ce6-b1cc-7803ab16d0e9/image.png)
- UUID: 장치 식별자(UUID를 사용하지 않고 /dev/sdb1으로 작성할 수도 있음)
- blkid: 장치 식별자 정보를 확인 할 수 있음
![](https://velog.velcdn.com/images/dawon22/post/c3b5f487-4b8b-470b-9ed3-dcd2dcbd3452/image.png)
- uuidgen 장치명: UUID 값을 생성
uuid 생성 시 사용자와 시스템의 값이 다를 경우가 있는데
일반적으로 사용자가 인식해주는것보다 시스템이 인식해주는 것을 사용
- /boot: mount point
- xfs: filesystem
- defaults: monut option (auto, noauto, ro, rw)
- 0: backup 0 or 1
- 0: fsck 검사 후 로딩( 검사x=0, root 검사=1, root 외의 검사=2)
ls
디렉터리 안에 내용
(-a: 숨김파일, -l: 속성파일,-dl: 디렉터리 속성)
- 디렉터리/파일 속성
![](https://velog.velcdn.com/images/dawon22/post/e135031f-2046-4fd8-bfce-38001a349288/image.png)
d: 디렉터리, rwx: read, write, execute
- 권한 앞에 나오는 파일의 종류
- 파일, d 디렉터리, l 심볼릭 링크, b 블록장치, c 문자장치, s 소켓장치, p 파이프
wild card
파일/디렉터리 선택에서 *(any), ?(one)의 의미
![](https://velog.velcdn.com/images/dawon22/post/713c7152-7885-48e3-871a-5936cb00e34d/image.png)
man
명령어에 대한 옵션과 사용법 등의 설명을 확인할 수 있음
![](https://velog.velcdn.com/images/dawon22/post/e84203ec-3aad-4351-8821-d99e05dee54e/image.png)
Ls(1) : 카테고리
- 카테고리:
- 명령어 ? or -help 를 하면 옵션 정보 확인 가능
apropos
카테고리에서 유사한 단어들 출력
![](https://velog.velcdn.com/images/dawon22/post/832d2428-598a-4164-9fa7-b50d6e20c914/image.png)
whatis
해당 단어가 정확한 것들만 출력
![](https://velog.velcdn.com/images/dawon22/post/443a43e2-acca-462a-879f-8382dffb43d7/image.png)
여러 명령어 연속 실행
- && : 이전 명령어에 오류가 있을 경우 이후 명령어들 오류 미 실행 (and의 의미)
- ; : 단순 명령어 나열, 이전 명령어에 오류가 있어도 실행
- ||: 파이프 (or의 의미)
who
![](https://velog.velcdn.com/images/dawon22/post/23bfcd4c-aa03-4866-af20-3f3e2da472ce/image.png)
whoami
![](https://velog.velcdn.com/images/dawon22/post/3c8a56c5-e8fc-4ae1-8988-530e7fe8c4d8/image.png)
tail
tail -1: 어떤 파일에 대해서 끝에서 1번 짜리 확인
alias
긴 명령어를 별명을 부여하여 하나로 만들어 실행
명령어를 간단하게 사용하기 위해서 만듬
![](https://velog.velcdn.com/images/dawon22/post/9cb9e0e1-4c4e-4413-9653-cd9b9764eee6/image.png)
삭제의 경우 unalias
touch
빈파일 생성
해당 프로그램에 라이브버리 의존성
![](https://velog.velcdn.com/images/dawon22/post/351ce40f-534e-45d7-99fe-63e99c43afd6/image.png)
파일 복사 cp
옵션은 arp 를 사용 원본 사본 구문
![](https://velog.velcdn.com/images/dawon22/post/d0c26db1-750a-4e61-92c2-dda30a919398/image.png)
-f 옵션으로 강제 복사
![](https://velog.velcdn.com/images/dawon22/post/b55490fe-7e42-4698-a6ad-4ad2f8d86e96/image.png)
/dev/null null 파일의 내용이 빈 파일로 복사할 경우 크기0 내용 삭제
/dev/zero 할 경우 zero는 현재 크기를 유지한 채 0으로 덮어 내용이 사라짐
=> shared 명령어와 동일
파일과 디렉터리 삭제
rm: 빈 디렉터리와 파일 삭제 시 rm 파일, rmdir 디렉터리
내용이 있는 디렉터리는 rm r(하위 디렉터리) 디렉터리
=> rm -rf 파일/디렉터리 삭제
shared
파일을 완전 삭제하고자 할때 실행
shared -u -v /파일명
- -v: 과정확인
- -u: 삭제 (해당 옵션 없을 경우 내용이 깨져서 저장됨)
디렉터리 이동
- cd : 디렉터리 이동
- pushed: 현재 디렉터리를 잠시 메모리에 이동해두고 다른 디렉터리에서 작업
- popd: pushed로 작업이 끝나면 현재 디렉터리로 이동하기 위해 사용
![](https://velog.velcdn.com/images/dawon22/post/6a40d5a6-c4a8-4057-b412-c49acf786049/image.png)
디렉터리 생성 mkdir
파일 디렉터리 이동 mv
같은 디렉터리 내에서는 이름 변경, 다른 디렉터리로 갈 때에는 이동 및 이름 변경
확장자 변경 rename
![](https://velog.velcdn.com/images/dawon22/post/fc26f742-1d48-4502-9ec7-7a8e2d79620a/image.png)
sort
정렬 명령어
- -r: 역정렬
![](https://velog.velcdn.com/images/dawon22/post/1e783173-c223-42d7-adaa-e6bf08693f40/image.png)
cat
-n: 번호를 붙여 출력
cat > 파일: 입력하는 내용을 파일에 작성
cat >> 파일:
file
해당 파일의 종류를 보여줌
which
명령어의 저장 위치
리다이렉션
표준 출력, >> 추가의 의미 기존 출력 파일에 대해서 적용하면 겹쳐씀
![](https://velog.velcdn.com/images/dawon22/post/f25c56b0-d662-4ab7-90aa-3ed144bb5ab8/image.png)
- < 표준 입력: 우측의 파일이 좌측으로 입력 << 추가 입력의 의미
.bash
- .bash_history: 입력했었던 명령어 저장
- .bash_profile: 시스템에# 로그인할 경우 보이는 환경 저장
- .bashrc:새 터미널이 실행될 때 마다 보이는 환경 저장, alias 정보도 보유 source 명령어로 실행
- .bash_logout: 로그아웃 정보를 저장
![](https://velog.velcdn.com/images/dawon22/post/6436b6a1-9eae-4ecc-9bf8-ad523e9c3c62/image.png)
inode
파일 시스템에서 사용하는 자료 구조
파일/디렉터리에 대해서 내부적으로 시스템이 인식하고 있는 번호
- uuid: device 구별 식별자, inode: software 구별 식별자
절대경로와 상대경로
절대경로: /로부터 경로 (반드시 /로 시작)
![](https://velog.velcdn.com/images/dawon22/post/ecc9489f-fc86-4cb4-a373-9eafffa636f0/image.png)
상대경로: 현재 위치로부터의 경로
![](https://velog.velcdn.com/images/dawon22/post/c31fdc24-e025-48a7-b9cc-79cc99593ccf/image.png)
- 디렉터리 만들때에는 어떠한 방식을 사용하더라도 상관없음
- 같은 디렉터리 위치일 경우 수평이동을 할 수 없음(트리구조방식때문)
시스템 환경변수
'$대문자' 구성으로
환경변수 내용은 echo $변수명 확인
숨김 파일과 디렉터리
touch 파일의 경우 빈 파일 생성
숨김파일은 .파일명
ls -a 명령어로 모든 파일을 확인해야 숨김 파일을 확인할 수 있음
링크
원본 파일을 복제하는데 어느 곳에서라도 변경이 있으면 모두 변경이 반영됨
여러 곳에 분산되는 중요한 파일에 링크를 걸어서 분산시켜두면, 한 곳에서의 변경이 모든 파일에 반영되어 변경됨
심볼릭 링크(소프트링크)
: ln -s 원본 복사본
일종의 단축키, 원본을 삭제할 경우 (보안상 취약)
하드링크
원본 복사본, 복사와 유사하지만 변경이 반영되는 점에서 복사와 다름, 경로 지정할 때에는 절대 경로 방식으로 해주어야함
![](https://velog.velcdn.com/images/dawon22/post/89fb2aff-4070-4192-81a9-2a10bf39e029/image.png)
원본 파일을 변경할 경우
![](https://velog.velcdn.com/images/dawon22/post/fb999896-7e6a-4b27-9934-7c5abb15fb37/image.png)
소프트 링크 파일 변경할 경우
![](https://velog.velcdn.com/images/dawon22/post/d678edee-c6cb-44d1-97ac-1bf121f69a74/image.png)
원본파일을 삭제할 경우
![](https://velog.velcdn.com/images/dawon22/post/8dfb6133-0ae2-4247-b9cf-64bf83922870/image.png)
소프트링크된 파일도 삭제됨을 알 수 있음
![](https://velog.velcdn.com/images/dawon22/post/7b525438-c78b-492d-b311-4329753e8653/image.png)
원본파일명만 동일한 파일 생성
![](https://velog.velcdn.com/images/dawon22/post/3e068244-f38d-409c-8778-99f3599ec889/image.png)
소프트링크는 원본파일명만 같은 파일에 링크됨
![](https://velog.velcdn.com/images/dawon22/post/c2e20001-e961-4b0f-9b51-1a2970369db4/image.png)
소프트링크 내용을보면 동일하게 문제가 됨
![](https://velog.velcdn.com/images/dawon22/post/3ce7bc7c-421c-462b-89bf-ef48da43bfc9/image.png)