본문 바로가기

CS Study/Linux

리눅스 강의 정리 #2

UNIX Command

Command completion

: 명령행 자동 완성 기능

il8n

국제화 (internationalization)

il8n에서는 UTF-8이 기본문자세트로 사용된다.

현재 Linux/UNIX command는 il8n에 맞춰서 만들어져 있다.

→ 따라서 LANG 환경변수 설정의 영향을 받는다.

File Command

path

pwd

print working directory

cd [경로] : 경로 생략시 홈 디렉토리로

  • ~ : 홈 디렉토리
    • : 이전 경로

ls - list file

file type 과 9bit로 이뤄진 mode.file mode bit는 숨겨진 3비트를 포함하여 12비트. 3비트는 SetUID, SetGID, Sticky bit를 의미한다. 보안과 관련된 허가 권한으로 나머지 9비트는 파일의 owner, group, others의 접근 권한을 의미한다.

  • ls [-altriRr] [파일명 ...]
  • file type : [-dpclps]
    • - : regular file
    • d : directory
    • l : symbolic link

UNIX file mode

octal mode

: 8진수로 표기되는 UNIX file mode

  • rwxrwxrwx : owner(4) + group(2) + others(1)
  • 파일 생성시 기본값 = mode - umask
    (대부분 umask 022 로 잡혀있다.)

    directory

  • mkdir [-p] <directory name> : p옵션은 중간 디렉토리를 자동으로 안전하게 생성해준다.
  • r권한은 dir의 목록을 읽을수있지만 그 안의 내용에 접근하기 위해선 access 권한인 x가 필요하다. r과 x권한의 차이점을 숙지해야 한다.

file 관련 명령어

stat

: 파일의 메타 정보 출력

  • mtime : file의 data가 변경된 시간

  • ctime : file의 meta-data가 변경된 시간 (e.g. 파일이름이 변경된경우 ctime이 변경된다)

    find

  • find directory [option]

  • -exec는 조건에 만족한 결과에 대한 후속조치를 할수있다.

  • ls 명령어 결과

  • find . -name "*.tmp" -exec rm {} +

  • 위의 작업 후 ls 결과 .tmp 파일이 모두 삭제된것을 알수있다.

    여기서 \+는 find명령어를 모두 수행하고 한꺼번에 작업을 처리한다는 뜻이다.
    이에 반해 \;는 매번 find가 수행될때마다 실행한다는 뜻이다.

stdio(표준 입출력)

stdio(Standard Input/Output)

파일 채널들에 입출력을 하기 위해서 하드웨어를 접근하지 않고, 표준화된 입출력 방식을 사용하도록 하는 가상화 레이어의 일종

UNIX이전에는 하드웨어의 드라이버에 직접 접근해서 입출력을 처리했음. 기기가 변경되면 코드를 다시 짜야하는 문제점. 추상화된 레이어를 생성하여 표준입출력 방식을 사용하게됨.

파일 서술자 (file descriptor)

파일 채널들에게 붙여진 유일한 식별자, 숫자로 명명된다.
양수 0부터 시작하여 증가한다.
[예약된 파일서술자]

  • 0 : stdin
  • 1 : stdout
  • 2 : stderr

fd 는 해당 프로세스안에서만 유효함. 해당 프로세스를 벗어나면 의미가 없다.

PIPE

** 단방향 통신으로, 프로세스 사이에 통신으로 사용**

IPC의 일종 (IPC에는 메세지 큐, 소켓 등등)

기본 아이디어는 a라는 프로세스가 저장하고 b라는 프로세스가 읽어간다. a가 언제 다쓰고 닫는지 이 타이밍을 알려준다는게 실시간성이 떨어짐.

  • anonymous pipe : 임시적
  • named pipe : persistency. 프로세스가 종료되도 살아있음.

anonymous pipe

A | B | C : A의 stdout이 B의 stdin이랑 연결이된다

named pipe

  • 파일명으로 구현이 됨.
  • mkfifo 명령어로 named pipe가 생성이됨. 이건 항상 단방향통신만된다.

    redirection

  • 채널의 방향을 다른곳으로 연결한다.*

방향재지정은 예약된 file descriptor 숫자를 사용해서 할수있음. 기본값은 1번

archive & compress 명령어

유닉스계열은 여러 파일을 묶는 작업과 압축이 분리되어있음.

아카이브 유틸 : tar, cpio

  • tar가 BSD계열 cpio가 SysV계열. (명령어 앞에 - 가 붙는계열이 SysV계열)

    압축 유틸

  • 압축률은 xz > bzip2 , zstd > gzip > lz4

    아카이빙 : tar

  • tar [ctxv] [f archive-file] files...*
  • c: 생성
  • t : test
  • x : 풀어냄
  • v : (verbose는 디버깅 용도)상세한 정보 출력 → 실무에서는 쓰지 않는다!!

저장을 위한 리다이렉션을 정해준다.

$ tar c *.c > result.tar

$ tar cf result.tar *.c

'CS Study > Linux' 카테고리의 다른 글

리눅스 강의 정리 #4  (0) 2021.02.07
리눅스 강의 정리 #3  (0) 2021.01.31