School/리눅스 시스템
파일과 디렉토리
코딩천재홍
2021. 4. 7. 01:42
디렉토리 구조 - 계층적 구조
일반적으로 사용하는 정보시스템에서도 사용
계층적 구조인 디렉토리 구조에서 정보를 찾아가기 위한 빨간색 선을 경로라고 한다.
파일
- 바이트의 집합
- 바이너리 8개 → 바이트 - 문자, 정보 표현 (여러개)→ 파일
- 대소문자 구별
- ' - ' , ' _ ' , ' . ' 문자 허용
- 리눅스 시스템에서 ls command를 이용해 존재하는 파일 확인 가능
ls command
- -a : 숨김 파일까지 ( 파일이 .으로 시작하는)
- -l : 좀 더 자세한 정보
- -i : 시스템 내부에서 사용하는 인덱스 넘버 확인
- -F : 파일 타입 나타냄
- * : execution, /:D a: symbolic link
- -R : 하위까지 출력
cat command
- 키보드를 입력하면 입력한 것이 바로 출력
- '>' (redirection 기호) 입력하면 파일이 없을 경우 파일 생성하고 입력하는데로 모두 파일에 추가
- ctrl + D를 눌러 끝을 표시
- cat 파일명 을 입력하면 파일 내용 출력
touch command
- 지정된 파일 이름으로 빈 파일을 작성한다.
more command
- 화면 단위로 화면 출력, 텍스트 파일을 읽는데 있어 한페이지씩 차례로 확인
- 명령키
- enter : 다음 라인 출력
- space : 다음 페이지 출력
- q : more 명령어 종료
less command
- more 명령의 변형. less 명령어는 방향키도 사용이 가능하고 파일의 특정 위치에 표식을 해두고 나중에 다시 그곳으로 이동시켜 주는 기능도 있다.
- 명령키
- j : 다음 라인
- k : 이전 라인
- space or ctrl +f : 다음 페이지 출력
- ctrl + b : 이전 페이지
- G : 텍스트 파일의 맨 마지막으로 이동
- 1G, g : 텍스트 파일의 맨 처음으로 이동
head and tail
- head는 파일 첫번째부터 체크
- tail은 파일 마지막부터 체크
- tail -4 : 끝에서 4번 까지
- -n 언급이 없으면 10줄 프린트
- -f : 내용이 변경될 때마다 실시간으로 출력 (로그파일 모니터링 등에 활용), tail 만 활용
rm command
- 파일이나 디렉토리 삭제
- 명령어
- -i : 지울때마다 사용자에게 질문을 함
- -f : 강제로 지우기
- -r : 하위파일이나 디렉토리도 모두 삭제 (이 옵션 없이는 삭제 불가)
cp command
- 현재 파일을 새로운 파일로 복사
- cp abc.txt def.txt
- abc.txt 파일을 def.txt로 이름을 바꾸어 복사함 (둘다 존재)
- cp abc.txt xyz
- xyz가 directory라면 xyz안에 abc.txt 파일 복사
- xyz directory 아니라면 abc.txt를 xyz 파일로 복사 (둘다 존재)
- cp abc.txt xyz/def.txt
- abc.txt 파일을 xyz directory안에 def.txt.라는 이름으로 복사
- cp -r abc xyz
- abc 가 directory이면 xyz안에 abc 디렉토리 전부 복사 → xyz/abc
- xyz 가 directory가 아니라면 abc를 xyz로 이름을 바꾸어 복사 (둘다 존재)
- cp -r abc xyz/zzz :
- xyz/zzz가 directory라면 xyz/zzz/abc 로 복사
- xyz/zzz가 directory 아니라면 xyz안에 zzz라는 이름을 바꾸어 복사
- cp abc.txt def.txt
mv command
- 파일을 새로운 파일로 이동
- mv abc.txt def.txt
- abc 파일이 없어지고 내용 그대로 이면서 이름이 def.txt로 바뀜
- mv abc.txt xyz
- xyz가 directory가 아니라면 abc.txt이름이 xyz로 바뀌고 abc.txt 사라짐
- xyz가 directory 라면 xyz directory안에 abc.txt 들어감
- mv abc.txt xyz/def.txt
- abc.txt 파일 사라지고, def.txt로 들어감
- mv abc xyz
- xyz가 directory라면 zbc가 사라지고 xyz/abc가 됨
- xyz가 존재하지 않으면 abc가 xyz로 이름을 바꿈
- mv abc xyz/zzz
- xyz/zzz가 directory라면 xyz/zzz/abc가 됨
- xyz/zzz가 directory가 아니라면 abc가 zzz로 이름 바꿔서 이동함
- mv abc.txt def.txt
* 와일드카드 사용
파일 이름에 공백이나 셀로 해석되는 문자(예 : *)가 포함된 경우 작은 따옴표를 붙인다.
ex) cat '* important notes.txt *'
디렉 토리
- 디렉 토리는 파일과 다른 디렉토리들의 집합체
- 계층 구조의 가장 높은 레벨은 root directory라고 한다. " / " 로 표현
mkdir command
- 빈 디렉토리를 생성한다.
- 명령어
- -p : 하위 디렉토리를 바로 생성한다. ex) mkdir -p a/b/c → a a/b a/b/c 생성
rmdir command
- 빈 디렉토리를 삭제한다.
- 명령어
- --ignore-fail-on-non-empty : 디렉토리가 비어있지 않을 때에는 삭제할 수 없으며 에러 메세지가 표시된다. 이 옵션을 사용해도 디렉토리를 삭제할 수 없다는 사실은 변함없으며 단지 에러 메세지만 표시되지 않을 뿐이다.
- -p : 상위 디렉토리까지 삭제 ex) rmdir -p a/b/c → a/b/c a/b a 삭제
current working directory - 일반적으로 사용자들의 명령어를 입력할 때 기준이 되는점, 이 기준 통해 디렉토리 위치 정하고 파일 경로 수행
pwd command (print working directory)
- 현재 어느 디렉토리에 있는지 확인
cd command
- 디렉토리 위치 변경할 때 명령어
- cd 자체만 쓰면 home directory(~)로 가게된다.
- cd .. : 상위 폴더
- cd . : 현재 폴더
path
- 파일과 디렉토리가 가리켜질 수 있는 방식
- Absolute Path (절대 경로)
- 절대 경로는 디렉토리 계층의 루트(/)에서부터 시작
- Relative Path (상대 경로)
- 루트부터 시작하지 않는다.
- 현재 디렉토리를 항상 기준으로, 경로 이름 정한다.
paths to home directory
- ~ : 홈 디렉토리 (사용자의 working directory)
- cd ~계정이름 : 해당하는 계정의 홈 디렉토리로 이동
- cd ~/test
- 절대 경로이다.
- 어떤 디렉토리 내에서나 이 명령을 넣어도 항상 똑같은 곳으로 이동하기 때문
locate command
- 다양한 패턴의 파일들을 찾고자 할 때 매우 유용하게 사용되는 명령어
- updatedb 명령어를 반드시 해줘야 함 (최신 db 유지하기 위해)
which command
- 특정 명령어의 위치를 찾아주는 명령어 ex) which cat
whereis command
- 특정 명령어의 실행파일위치, 소스 위치, man 페이지 파일의 위치를 찾아주는 명령어
- 명령어
- -b : binary files
- -m : manual files
- -s : source files
find command
- 원하는 조건의 파일, 디렉토리를 검색할 수 있다.
- find 명령만 입력하면 현재 디렉토리에 있는 파일을 찾는다. (하위 디렉토리, 숨겨진 파일도 표시)
- 명령어
- -name filename : 찾을 파일 이름 지정
- -type filetype : 파일 타입으로 찾기 ex) find -type d (디렉토리만 찾기)
- -user useID : 지정한 사용자의 파일이나 디렉토리 찾기
- operation
- -print : 파일의 절대 경로 출력
- -ls : 파일의 세부사항 출력
Linux Directories
Compressing
- 파일, 디렉토리 압축
- 파일, 디렉토리 압축하고 압축푸는 tools
- gzip (gunzip)
- bzip2 (bunzip2)
- zip (unzip)
- tar
gzip and gunzip
- gzip [옵션] [압축파일명] - 압축할 때
- gzip -pv test_zip.txt : 압축하기
- gzip -d test_zip.txt.gz : 압축 해제
- 옵션
- -n : n은 1~9까지 숫자, 1이 가장 빠르지만 압축률은 가장 낮음
- -c : 압축 결과를 출력. 원본파일은 그대로 놔둠
- -d : 압축 해제
- -f : 강제 압축
- -l : 압축 파일의 정보 출력
- -r : 디렉토리를 지정시 디렉토리에 포함된 모든 파일 압축
- -t : 압축 파일 테스트
- -v : 압축 혹은 해제나 압축시 자세한 정보 출력. 진행 과정을 이름 및 퍼센트와 함께
- -h : 도움말 출력
- -V : 버전 정보 출력
- gunzip [옵션] [압축파일명] - 압축해제 할 때
- gunzip -v test_gunzip.txt.gz : 압축풀기
- 옵션
- -l : 압축 파일 정보 출력
- -r : 디렉토리를 지정 시 디렉토리 내의 모든 파일의 압축 해제
- -t : 압축 파일 테스트
- -v : 압축 해제나 압축 시 자세한 정보 출력
- -h : 도움말 출력
- -V :버전 정보 출력
bzip2 and bunzip2
- gzip, zip 보다 압축률이 좋지만 약간 느림
- bzip2 [옵션] [파일명] : 압축할 때
- bzip2 test.txt : 압축하기
- bunzip2 [옵션] [파일명] : 압축풀 때
- bunzip2 test.txt.bz2
- 옵션
- -d : 압축을 풀 때 사용하는 옵션
- -n : n은 1~9까지 숫자, 1이 가장 빠르지만 압축률은 가장 낮음
- -c : 결과를 표준 출력으로 보낼 때 사용. tar와 병행해서 작업할 때 사용
- -t : 압축 파일을 검사
- bzip2, bunzip2 명령어도 압축, 압축 효율지정, 압축 결과를 표준 출력으로 보낼때의 방법이 gzip, gunzip과 똑같다. 단 생성되는 확장자만 다를 뿐이다.
zip and unzip
- 리눅스에서 백업 등의 목적으로 여러 file/directory를 묶고 압축까지 하는 명령어
- zip [생성할 압축 파일명] [파일명] : zip 확장자, 압축파일이 생겨도 원본이 유지됨
- zip test.zip grub4.cfg
- 옵션
- -r : 디렉터리까지 압축
- -n : n은 1~9까지 숫자, 1이 가장 빠르지만 압축률은 가장 낮음
- -x : 압축시 파일 제외
- -e : zip 파일에 암호 설정
- unzip [.zip 파일명] : 압축해제, unzip은 zip 파일을 풀어줘도 zip 파일 원본은 그대로 같이 있다.
- unzip compressed.zip
- 옵션
- -d : 지정한 디렉터리에 압축 해제
- -l : 압축 파일 내 목록 보기
- zip을 제외한 위의 압축 명령어들은 단일압축만 되는 것이 기본적이다.
tar command
- 파일들을 하나로 묶기만 하는 용도로 사용된다.
- tar 파일을 생성한 이후 실제로 압축하면 tar.gz와 같은 확장자가 된다.
- 압축을 하는 방식에 따라 gz나 bz 등의 확장자가 추가로 붙는다.
- tar -cvf [압축파일명] [압축할 파일 혹은 폴더 경로] : tar파일 압축
- tar -cvf data.tar data/
- tar -xvf [압축파일명] : tar 파일 해제
- tar-xvf data.tar
- Listing
- tar -tf [압축파일명] : 파일 내용 확인
- 옵션
- -z : gzip 으로 압축
- -j : bzip2 로 압축
- -c : tar로 묶기
- -x : tar를 풀기
- -f : 파일을 묶도록 지정 (반드시 추가되어야 함)
- -v : 각 파일 압축 메시지 출력
- -p : 파일의 권한 저장
- gzip 파일로 압축 하고 해제하기
- tar -zcvf [.tgz-file] [files]
- tar -zxvf [.tgz-file]
- bzip2 파일로 압축 하고 해제하기
- tar -jcvf [.tbz2-file] [files]
- tar -jxvf [.tbz2-file]
- tar 파일이 압축파일이라고는 하지만 용량을 압축하지느 않습니다. 파일을 하나로 합쳐지는 방식이라고 생각하면 편하다.
- tar.gz 방식 은 용량을 압축하고 tar를 다시 압축한다는 의미다.