반응형

Make Utility

  • 소프트웨어 개발을 위해 유닉스 계열 운영 체제에서 주로 사용되는 프로그램
  • 여러 파일들의 의존성과 필요한 명령을 정의할 수 있음.
  • 컴파일 & 실행파일을 생성할 수 있는 표준문법이 있음. 
  • Makefile을 실행함.

장점 

  • 파일에 대한 반복적 명령 자동화로 시간 절약
  • 프로그램의 종속 구조를 빠르게 파악하고 관리가 용이
  • 단순 반복 작업 및 재작성을 최소화

Compiling libraries

gcc -c menu.c -o menu.o

gcc -c guest.c -o guest.o

Build(main)

gcc -o pizzashop main.c menu.o guest.o

Run 

./pizzashop

Makefile

make utility를 실행하면 Makefile을 읽어들임

구조

Target : 명령어가 수행된 결과 파일명 

- target(결과 파일이 있는 경우)/dummy target(결과 파일이 없는 경우)

Dependency : 대상 파일 생성을 위해 필요한 파일

(실행파일을 만들기 위해 사용되는 목적파일이나 소스파일들)

- 파일 수정 날짜 체크 

Command : 실행할 명령 문장

Macro : 코드 단순화

 

target2 : dependency1 dependency2

<tap>command1

<tap>command2

 

Macro 작성방법

  • NAME = 문자열 (관습적으로 NAME은 대문자 사용)
  • #주석문
  • \ 여러 행에 걸쳐서 문자열을 사용할 때 
  • $(NAME) 매크로를 참조 
  • 정의되지 않은 매크로를 사용하는 경우 NULL로 치환됨
  • 문자열의 따옴표도 문자열로 인식함.

Suffix rule

파일 확장자를 보고 그에 따라 적절한 명렬을 실행함.

C소스파일(*.c), 목적파일(*.o)을 인식

목적파일이 없는 경우 같은 이름의 C 소스 파일을 컴파일 하여 생성

Special Macros

$@ : 현재 Target 이름

$* : (확장자가 있는 경우에) 확장자가 없는 현재 Target

$< : 첫번째 dependency 이름

$^ : dependency 전체

$? : dependency중 현재 target보다 최근에 갱신된 파일 

반응형

'2021~2022 > 리눅스' 카테고리의 다른 글

vim 정리  (0) 2022.04.10
Linux 기본정리  (0) 2022.04.10
반응형

vim 실행 

Normal mode (Esc 키를 누르면 Normal mode로 이동)

Insert mode(i, a), Visual mode(v, ctrl+v : 행이나 블럭 단위로 선택), Command mode (/, : ) : 명령어 모드

Vim - cursor

[Esc] 클릭 후 일반모드로 전환하여 사용

h(←)j(↓)k(↑)l(→)

 

Insert mode

- 원하는 위치에 커서를 두고 편집을 시작 

  • i : 현재 커서 앞에서 편집 시작
  • a : 현재 커서 다음부터 편집 시작 
  • A : 현재 커서 줄의 맨 끝으로 이동하고 편집
  • o : 현재 커서 아래 새로운 줄 추가하여 편집
  • O : 현재 커서 위 새로운 줄을 추가하고 편집

[Esc] 클릭 후 일반모드로 전환하여 사용(밑에 모든 기능을 하기 전에)

Vim - 저장

  • :wq! - 저장하고 종료 
  • ZZ - 저장하고 종료 
  • :q! -종료 
  • :w newfile - 새로운 이름으로 저장

Vim - 열기

여러 파일 열기 

  • :vs filename - 수직 창 나누고 읽어옴 
  • :split filename - 수평 창 나누고 읽어옴
  • Ctrl + ww - 다른 창으로 이동

외부 명령어 실행 

  • : ! command(enter) 쉘 명령어 실행 후 Vim 복귀

Vim - 복사/붙여넣기

  • yy : 현재 라인 복사
  • 3yy : 현재 커서에서 3라인 복사
  • p : 현재 커서 아래 붙여넣기
  • P : 현재 커서 위에 붙여넣기

Vim - 삭제, undo, redo

  • x : 한글자 지우기 
  • dw : 현재 커서에 있는 한 단어 지우기
  • dd : 현재 라인 지우기 
  • 3dd :현재 커서부터 3라인 지우기
  • u : 마지막 명령 취소
  • U : 해당 줄 전체의 수정사항 취소
  • Ctrl + r : redo 기능 

 

Vim-replace, move

  • r : 한 글자 수정하기
  • cw : 단어를 변경할 때 사용(삭제 후 입력)
  • c& : 해당 줄 전체를 변경할 때 사용
  • E : 현재 라인의 끝으로 이동
  • G : 파일의 끝으로 이동
  • gg : 파일의 처음으로 이동
  • 3G : 3번째 라인으로 이동

Vim - find/search/replace

  • /keyword : 원하는 keyword 검색 
  • ?keyword : 원하는 keyword를 역방향으로 검색
  • n : 검색 결과에서 다음 문자열 찾기 
  • N : 검색 결과에서 이전 문자열 찾기
  • :%s/old/new/g - 차는 단어를 새 단어로 파일 전체 변경
  • :%s/old/new/gc - 사용자에게 물으며 변경
  • :%s/old/new/i - 대소문자 구분 없이 검색
  • :#,#s/old/new/g -줄 번호(#) 사이의 찾는 단어를 새 단어로 모두 변경

Vim visual mode

[Esc] 클릭 후 일반모드로 전환하여 사용

  • v : 현재 커서위치부터 문자 단위로 선택가능
  • V : 현재 커서위치부터 라인 단위로 선택가능
  • Ctrl + v : 현재 커서를 기준으로 블록 선택가능
  • p : 복사된 데이터를 현재 위치에 붙여넣기
  • P : 복사된 데이터를 마지막 라인에 붙여넣기
반응형

'2021~2022 > 리눅스' 카테고리의 다른 글

Make  (0) 2022.04.11
Linux 기본정리  (0) 2022.04.10
반응형

OS(Operating System)

  • 컴퓨터의 성능을 높이고, 사용자에게 편의성을 제공을 목적으로 컴퓨터 하드웨어를 관리하는 프로그램
  • 사용자와 컴퓨터 간의 인터페이스 역할을 하는 시스템 소프트웨어
  • 어플리케이션과 하드웨어 사이에서 하드웨어와 어플리케이션을 관리하는 인터페이스적인 역할을 함. 

종류 

- window

- maxOS

- Linux

- RreeBSD

- SOLARIS

- SunCobalt

- redhat

 

Linux System

  • 1991년 핀란드 헬싱키 대학의 리누스 토르발스가 취미로 만든 운영체제
  • 리눅스 커널을 사용하는 운영체제
  • Linux : Linus' *nix(리누스의 유닉스)
  • 소스코드가 공개된 대표적인 오픈 소스 소프트웨어
  • 모바일 운영체제 안드로이드의 기반으로 사용
  • 수많은 개발자들이 오픈소스를 가지고 활동중 

특징

  • Multi-User, Multi-Tasking
  • 다양하고 뛰어난 네트워크 환경 및 파일씨스템 지원
  • 유연성과 확장성, 안정성, 보안성
  • 우수한 가격대 성능비 : PC급 서버에서 Enterprise급 성능
  • 다양한 응용프로그램 제공
  • - 셀(Shell)과 기본 명령어 지원, X Window 시스템, 편집기 등등
  • 다양한 배포판이 있음 (도움을 받을 수 있는 - 유료)

Architecture

위로 올라갈수록 밑을 제어, 관리한다고 생각

Shell

  • 명령어나 유틸리티, 프로그램을 실행할 때 사용하는 인터페이스를 제공하는 프로그램
  • 커널과 사용자 사이에서 명령어를 해석하여 전달
  • 쉘 자체 프로그래밍 기능이 있음
  • 사용자 환경 설정 기능을 제공
  • sh, bash, csh 등등 (사용하는 문법도 다 다름)
  • CLI(Command line interface)
  • 쉘 확인 echo shell -> echo : 확인한다는 명령어

Linux Directory Structure

/(root)

/bin : Essential User Binaries

/dev : Device Files

/etc : Configuration Files

/home : User's Home Directories

/lib : Essential Shared Libraries

/usr : User Binaries

/var : Variable Cache/lock/lib/spool/mail

 

Client, Server

  • 서버에 클라이언트가 접속하여 필요한 작업을 수행 (서버는 24시간 수행)
  • 서버에 로그인하여 명령을 실행하기 위해서는 응용프로그램 필요 
  • 프로토콜

- ssh/telnet

- http/https

-ftp/sftp

-smtp

-pop3/imap

-nntp

 

Shell Commands

ls : 현재 디렉터리에 있는 파일과 디렉터리 목록확인

ls -a : 현재 디렉터리에서 숨겨진 파일과 디렉터리 목록 확인(all)

ls -l : 현재 디렉터리에서 파일과 디렉터리 목록을 자세히 확인(long)

ls -al: ls -a와 ls -l를 합친 명령어

ls -R : 자세히 출력

pwd : 현재 작업중인 경로 출력(절대경로)

cd : 원하는 디렉터리로 이동

mkdir :  새로운 디렉터리 생성

rmdir : 디렉터리 삭제

 

Path 

절대경로 

  • 루트 디렉터리로 시작하여 원하는 디렉터리까지 경로를 기술
  • 현재 위치와는 상관없음.

상대경로 

  • 현재 위치를 기준으로 원하는 디렉터리를 기술하는 방식
  • ./ : 현재 디렉터리를 의미
  • ../ : 상위 디렉터리를 의미

Command

cat

  cat [옵션] [파일명]
      옵션
        -n        : 모든 라인 앞에 라인 번호 출력. (빈 라인도 번호 출력)
        -b        : 비어 있지 않은 라인에만 번호 출력
        -E        : 라인의 마지막에 $ 기호 출력. (빈 라인도 $ 기호 출력)
        -T        : 탭 문자를 ^I로 바꿔서 출력
        -s        : 두 번 이상 연속된 빈 라인(empty line) 출력 안함
        -v        : 탭(TAB)과 줄바꿈(LFD)을 제외한 nonprinting 문자를 ^, M-를 사용하여 표시
        -e        : -vE와 결과 같음. 줄바꿈(LFD)을 포함한 nonprinting 문자 표시
        -t        : -vT와 결과 같음. 탭(TAB)을 포함한 nonprinting 문자 표시
        -A        : -vET와 같음. 탭(TAB), 줄바꿈(LFD)을 포함한 nonprinting 문자 표시

 

rm

  • 파일이나 디렉터리를 삭제하는 명령어
  • 삭제 후 취소하는 명령어가 없음.
  • rmdir 디렉터리에 하위폴더나 파일이 없을 때 삭제하는 명령어
  • 디렉터리내에 하위폴더나 파일을 모두 삭제 : rm -rf

ln

  • 리눅스 파일 시스템에서 파일 링크를 만드는 명령어
  • Hard link : 파일의 I-node를 공유해서 사용 - ln [원본] [링크이름]
  • Symbolic link : window의 바로가기와 같은 링크 - ln -s [원본] [링크이름]

IO Redirection

표준스트림을 다른 경로로 재지정

> : 파일에 작성

>> : 파일에 추가

2>&1 : stderr를 stdout으로 재지정할 때 사용

cat > 파일이름 : 파일에 작성하고 나서 ctrl + d 누르면 저장

 

Pipe | 

프로세스나 프로그램의 결과를 다른 프로그램으로 넘겨줄 때 사용

cat -n (앞에 번호 출력)

앞에서 사용한 결과물을 뒤에 명령어의 입력값으로 넘겨줌. 

ex) 

cat -n data.txt | grep Hello 

|가 cat-n data.txt를 grep 명령어에 입력값으로 넘겨줌. 

 

 

Ownership, Permission

리눅스에서는 파일과 디렉터리에 대해 소유권가 허가권을 설정할 수 있음

소유권 - 소유자와 소유그룹 설정

허가권 - read/write/execute

- rwxrw-r--

rwx : 소유자의 권한

rw- : 소유그룹의 권한

r-- : 사용자의 권한

 

chmod 

파일이나 디렉터리의 permission 변경

-rw-rw-r-- -> rwxr-xrw-

Absolute mode : 숫자로 설정

chmod 756 list.txt

 

Symbolic mode : u/g/o/a, +/-/=

chmod u+x list.txt

chmod g-w+x list.txt

chmod o+w list.txt

 

umask 

새로 만들어진 파일 또는 디렉터리의 권한을 어떻게 설정할 지 제어하는 마스크 설정

파일의 기본허가권 : 666, rw-rw-rw-

디렉터리의 기본 허가권 : 777, rwxrwxrwx

뒤에 3자리가 umask

touch : 빈 파일 생성 touch [파일명]

chown, chgrp 

시스템 관리자를 위한 명령어

chown : 파일이나 디렉터리 소유자 및 소유그룹 변경

- chown user:group filename(or directory) : 파일에 대하여 소유자와 소유그룹을 변경

- chown -R user:group directory

chgrp : 파일이나 디렉터리 소유그룹 변경

 

su, sudo 

시스템 관리자를 위한 명령어 

su : 현재 계정에서 다른 사용자로 로그인

  • 로그인하려는 계정의 암호 필요 
  • su : su root
  • su - : 다른 계정 로그인 + 로그인 계정의 쉘 환경 사용

sudo : 슈퍼유저의 보안 권한으로 프로그램을 실행할 수 있게 해주는 명령어

  • sudoers에 등록된 사용자만 사용가능 
  • root의 암호가 아니라 현재 로그인된 암호를 사용하면 됨.
반응형

'2021~2022 > 리눅스' 카테고리의 다른 글

Make  (0) 2022.04.11
vim 정리  (0) 2022.04.10

+ Recent posts