Linux Programming Basics

Linux : File Management Commands

Sara.H 2020. 6. 28. 15:13

현재 디렉터리의 목록 보기 : ls 

* -a : 숨겨진 파일도 모두 나열한다. (보통 . 으로 시작한다)

* -F : 끝 부분에 항목의 유형을 표시한다. 

/ Directory
= Socket
@ Symbolic link
Executable File

* -l : 파일의 상세 정보 표시

* -R : 서브 디렉토리 목록을 재귀적으로 보여준다. 

* -s : 파일의 크기를 블럭 수로 보여준다. 1블럭 = 1KB

* 인자 : 파일 또는 디렉토리 이름 

필드 의미 순서대로 

* 파일의 모드(종류와 접근 권한)

* 하드 링크의 개수 

* 파일 소유권을 갖는 사용자 ID 

* 파일에 대한 권한을 지정할 수 있는 그룹 ID 

* 파일 크기 바이트 단위로 표시 

* 파일 및 디렉토리가 최종 수정된 시간 

 

파일의 형식 

* d : 디렉토리 

* c : 문자 유형의 특수 파일 

* - : 일반 파일 

* l : 심볼릭 링크 

* b : 블록 유형의 특수 파일 

* s : 소켓 

 

접근 권한 

* owner, group, other 로 구분 

* 권한 종류 

  * r : read 

  * w : write 

  * x : execute 

  * - : no right 

 

8진수 모드 (octal-mode)

* rwxr-xr-x -> 111101101 -> 755 

* 여러 종류의 권한을 한꺼번에 표시할 때 유용함 

 

파일의 고유 번호 

* 아이노드 번호. 

* ls -i 아이노드 번호를 보여주는 옵션 

 

현재의 작업 디렉터리 확인 : pwd (print working directory)

 

디렉토리 변경 : cd (change directory)

인자 : 디렉토리 이름 

절대경로, 상대경로, 특수경로 이름 모두 사용 

 

특수 경로 

 

인자가 생략되면 자신의 home dirctory 

 

cd ~ 를 하면 홈 디렉토리로 이동한다. 

 

파일 찾기 : find 

find [path ...] [expression]

* 지정된 path 이하의 모든 디렉토리를 순환적으로 검색 

* expression 이 없으면 지정된 디렉토리 내의 모든 파일 

expression 

-name 을 사용해서 구체적인 파일을 찾을 수 있다. 

모드를 변경할 수 있다. 

 

바로 찾기 : locate 

-n 하고 개수 붙여주면 해당 개수만큼 찾아줌 

-i 는 대소문자 구분 없음. 

 


chmod : 파일 권한 바꾸기 

chmod [options] mode[, mode] ... file 

chmod [options] octal-mode file ... 

 

Mode 표현 

* 8진수 모드 

* 기호 모드 : 주체 [+-=] [권한]

  * 주체 : u(owner) g(group) o(other) a(all)

  * +-= : 권한 추가, 삭제, 지정한 것만 남기고 삭제 

  * 권한 : r(read), w(write), x(execute)

 

권한 바꾸기 예제. 

 

Link : 하나의 파일 실체에 대해 여러개의 접근 경로 가능 

링크의 종류 

* 하드 링크 : 새로운 이름(절대경로)와 파일 실체 연결 

* 소프트 (심볼릭) 링크 : 새로운 파일을 만들어 경로 정보 저장 ex. 바로가기 

 

 

하드링크는 다른 파일 시스템에 대한 링크를 만들 수 없음. 

 

링크 만들기 : ln 

ln [options] target .. [link_name]

* link_name : 새 이름으로 대상 파일 target 에 대한 링크를 생성 

* link_name 이 생략되면 target 과 같은 이름 사용 (절대 경로가 같으면 안됨)

* link_name 이 디렉터리이고 target 이 여러개일 때 각 target 에 대한 링크를 link_name 디렉터리 내에 생성 

 

옵션 

* -s : 심볼릭 링크를 만든다 

* -i : link_name 과 같은 이름의 파일이 있으면 덮어쓰기 여부를 물어본다. 

 

ln -s sfile 을 통해서 소프트 링크가 만들어 진 것을 확인할 수 있다. ln f1 hfile 만 하면 하드 링크가 만들어진다. 소프트링크는 sfile -> f1 과 같이 무엇이 무엇을 가리키는지 표시된다. 

 

ln /etc 를 하면 디렉토리에 대한 하드 링크는 만들 수 없음을 알 수 있다. 소프트링크는 가능하다. 

 

만약 원본 파일을 지우면 소프트 링크는 더이상 유효하지 않다. 하지만 하드 링크는 여전히 유요함을 확인할 수 있다. 

 

 

 

cat : concatenate 파일의 내용을 보여주거나 연결 

결과는 표준 출력으로 내보낸다. 

여러개의 파일을 연결시켜 보내줌 

cat [options] [file ... ]

 

주요 옵션 

* -n : 행 번호를 앞에 붙인다. 

* -e : 각 행의 끝에 $ 를 보여준다. 

 

파일의 시작과 끝 보기 : head, tail 

head|tail [options] [file ...]

* 시작 또는 끝의 10줄을 출력 

* 주요 옵션 

  * -# 또는 -n # : 시작(끝) #줄을 출력 

  * -c# : #바이트만큼 출력 

 

* file이 생략되면? 표준 입력 

 

head -2 를 하면 입력 1번 - 1번 반복, 입력1번 - 1번 반복 이렇게 총 두 번 루프를 돈다. 

 

 

tar : 저장 또는 이동 목적을 위해 여러 개의 파일을 하나로 묶는다. (tape archive)

* 묶는 기능만 수행하며 압축하지 않는다. 

tar [-] [function letters] [tar-file] [options] [file ... ]

 

Function letters 

* c : create, 묶음 파일 생성 

* t : table of contents, 묶여진 파일들의 목록 

* x : extract, 하나의 파일명으로 묶여진 파일들을 푼다. 

기능 문자는 옵션이 아니므로 - 를 붙이지 않아도 됨 

 

tar cvf tartest * : tartest 라는 이름으로 파일들을 묶어주겠다는 뜻 

 

Option

* f : File, 주어진 파일명으로 tarfile 을 푼다. 

* z : Zip, 압축된 tarfile 을 만든다. 

* v : Verbose, 실행 과정의 메시지를 출력.

 

 

 

 

명령어 gzip : 유닉스 환경에서 가장 많이 사용하는 압축 유틸리티 

gzip [options] [name ... ]

gunzip [options] [name ... ]

zcat [options] [name ... ]

 

* 압축을 한 후 파일 확장자는 .gz 가 붙음 

* gunzip = gzip -d 옵션과 같다. 

* .Z 가 붙은 파일도 복원할 수 있음 (compress / decompress)

* zcat : 압축된 파일을 복원해 stdout 으로 출력 

 

주요 옵션 

* -t : 파일 무결성 체크 (--test)

* -v : 이름과 압축률 표시 (--verbose)

* -h : 도움말 (--help)

* -r : 디렉터리 구조 순환 (--recursive)

 

tartest.gz 를 인식해 복원하고, stdout 으로 출력되는 결과를 tt 라는 이름의 파일로 저장 

gunzip 으로 복원시에는 같은 이름의 파일로 저장 

 

 

최근 많이 사용되는 압축 유틸리티 : bzip2, bunzip2, bzcat, bzip2recover 

* gzip 보다 압축률이 좋으나 느리다. 

* 압축 후 확장자는 .bz2 

* bunzip2 = bzip2 -d 

* bzcat : 압축된 파일을 복원하여 stdout 으로 출력 

* bzip2recover : 손상된 압축파일을 복원 

 

 

'Linux Programming Basics' 카테고리의 다른 글

Shell 사용하기  (0) 2020.07.03
[Linux Programming] Process Related API  (0) 2020.06.30
[Linux Programming ] File Related API  (0) 2020.06.28
Linux : Command Environment  (0) 2020.06.28
Linux : History and Characteristics  (0) 2020.06.28