4. Shell script & make SPARCS 13 KAIST CS 12 argon.

Slides:



Advertisements
Similar presentations
파이썬 (Python). 1 일 : 파이썬 프로그래밍 기초 2 일 : 객체, 문자열 3 일 : 문자인코딩, 정규표현식, 옛한글 4 일 : 파일 입출력 5 일 : 함수와 모듈 6 일 : 원시 말뭉치 다루기 실습 7 일 : 주석 말뭉치 다루기 실습 8 일 : 웹 데이터로.
Advertisements

프로그램이란 프로그램 생성 과정 프로젝트 생성 프로그램 실행 컴퓨터를 사용하는 이유는 무엇인가 ? – 주어진 문제를 쉽고, 빠르게 해결하기 위해서 사용한다. 컴퓨터를 사용한다는 것은 ? – 컴퓨터에 설치 혹은 저장된 프로그램을 사용하는 것이다. 문제를 해결하기 위한.
1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
쉘 스크립트와 cron coearth, george.
2016 유성환 Hybrid MOBILE.
Format String Attack! 포맷 스트링 공격 경일대학교 사이버보안학과 학년 남주호.
컴퓨터와 인터넷.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
1. 신뢰할 수 있는 싸이트 등록 인터넷 익스플로러 실행 후 실행
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 프로그래밍 언어 1-1 C 언어의 개론적 이야기 한글, 엑셀, 게임 등의 프로그램을 만들 때 사용하는 언어 ‘컴퓨터 프로그래머’라는 사람들이 제작 C 언어(C++ 포함)를 가장 많이 사용함.
컴퓨터 프로그래밍 기초 [Final] 기말고사
Linux/UNIX Programming
ANSYS17.2 Student 제품 무료 다운로드
Homework #6 (1/3) 다음을 수행한 후, 화면(혹은 파일)을 출력하여 제출한다.
양방향 파이프의 활용 양방향 통신 파이프는 기본적으로 단방향이므로 양방향 통신을 위해서는 파이프를 2개 생성한다.
7장. 셸 스크립트 프로그래밍.
Root Filesystem Porting
C / C++ Programming in multi platform
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
정보검색 환경세팅 및 쉘스크립트 맛보기 IS lab. 김건영.
Root Filesystem Porting
컴퓨터정보공학부 서버 안내 [ IBM x3500 ] it.sangji.ac.kr ict.sangji.ac.kr 혹은
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
11장. 1차원 배열.
Cross Compiler를이용한 커널 컴파일 및 포팅
프로그래밍 개요
어서와 C언어는 처음이지 제14장.
인터넷응용프로그래밍 JavaScript(Intro).
27장. 모듈화 프로그래밍.
Homework #6 (1/3) 다음을 수행한 후, 화면(혹은 파일)을 출력하여 제출한다.
Device Driver 임베디드 시스템 I.
SAS Statistical Analysis System 통계패키지 실습 (2011년 1학기)
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
Homework #6 (1/3) 다음을 수행한 후, 화면(혹은 파일)을 출력하여 제출한다.
에어 조건문.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
자바 5.0 프로그래밍.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
문자열 컴퓨터시뮬레이션학과 2015년 봄학기 담당교수 : 이형원 E304호,
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
뇌를 자극하는 Solaris bible.
DK-128 개발환경 설정 아이티즌 기술연구소
에어 PHP 입문.
수동 설치시는 설치 방법 1. 두번에 설치 CD 속에 fscommand 폴더 밑에 Osstem 이라는 폴더를
시스템 인터페이스 Lab#5 쉡 실습.
Homework #5 (1/3) 다음을 수행한 후, 결과 파일들을 출력하여 제출한다.
Linux 기본 사용법.
기초C언어 제2주 실습 프로그래밍의 개념, 프로그램 작성 과정 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
시스템 인터페이스 Lab1 X-window 및 명령어 사용.
Homework #3 (1/3) 다음을 수행한 후, 결과 파일들을 출력하여 제출한다.
함수, 모듈.
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
16장. 변수, 연산자, 사용자 정의 함수 변수 배열과 객체 연산자 함수.
9 브라우저 객체 모델.
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
제 29 강 스트링(string) 다루기 s a i s . s T i h t g r i n.
 6장. SQL 쿼리.
Homework #7 (1/3) 1. 다음 순서에 따라 수행하고, 그 과정의 화면을 캡쳐한다.
Docker Study 6~7.
7 생성자 함수.
Intelligent software Lab. 전재원
1. 실습 시간에 수행한 avd 생성 및 실행, adb shell 접속 및 명령어 수행 결과를 제출한다.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

4. Shell script & make SPARCS 13 KAIST CS 12 argon

Contents – Shell script Shebang PATH 명령어 변수 인수전달 조건문 반복문 함수 배열 [실습] Cron 만들기

Shell Script? Shell(Unix shell)을 위해 쓰인 스크립트

Shell? User와 System간의 대화를 중계 명령어를 해석, Kernel에 전달 Bash, sh, csh, ksh, zsh, tc Shell 등 다양한 shell이 존재

Script? 스크립트 언어(Scripting language)! 응용소프트웨어를 제어 최종사용자가 응용프로그램의 동작을 사 용자의 요구에 맞게 수행할 수 있도록 함

Shell script! Shell(Unix shell)을 위해 쓰인 스크립트! 더 확장된 의미로는 이들 명령어들을 한 파 일에 모아놓아 단일 명령으로 사용할 수 있 게 만들어놓은 파일 스크립트 언어(scripting language)란 컴퓨터 프로그래밍 언어로서 응용 소프트웨어를 제어한다. 스크립트 프로그래밍 언어라고도 한다. 스크립트 언어는 응용프로그램과 독립하여 사용되고 일반적으로 응용프로그램의 언어와 다른 언어로 사용되어 최종사용자가 응용프로그램의 동작을 사용자의 요구에 맞게 수행할 수 있도록 해준다. 스크립트(scripts)는 연극 용어인 스크립트에서 유래되었으며 초창기 스크립트 언어는 배치언어(batch languages) 또는 작업 제어 언어(job control language)라고도 불리었다.(http://ko.wikipedia.org/wiki/%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8_%EC%96%B8%EC%96%B4)

Why Shell script? In wiki – 컴파일 단계가 없으므로 실행이 다른 언어에 비해 빠른 경우가 많다 동일한 작업의 반복 / 여러 명령어들의 입력을 통한 복잡한 작업을 한 파일에 모 아 단일 명령으로 사용!

About shell script(1) - Shebang 모든 Shell script는 Shebang line으로 시 작한다. Shebang line 이후의 명령들을 어떻게 해 석할 것인지 지정

About shell script(2) - Shebang Shebang line의 구문(Syntax) #!interpreter [optional-arg] Ex) #!/bin/sh #!/bin/csh –f #!/usr/bin/perl -T

About shell script(3) - $PATH(환경변수) /usr/bin/env는 사용자의 $PATH(환경변 수)상에서 첫 번째로 찾은 해당 명령을 실 행 ex) #!/usr/bin/env python 환경변수 상에 기재된 파이선 PATH 중 가 장 먼저 오는 것을 실행

About shell script(4) – 명령어 Bash shell 기준, 자주 쓰이는 명령어 $ echo [str]: 뒤에 전달되는 str을 출력 $ grep [str] [file]: file안에서 str을 찾는다. $ file [filename]: filename의 filetype을 출력 $ read var: 입력값을 변수 var에 대입 $ tee [filename]: 표준출력을 file에 쓰기 $ basename [file]: 디렉토리명을 제외한 파일명 $ dirname [file]: 파일이름 제외한 디렉토리명 $ pwd: 현재 경로  Portable Operating System Interface 유닉스 운영체제에 기반을 두고 있는 일련의 표준 운영체제 인터페이스이다. 표준화에 관한 필요성은, 컴퓨터를 사용하고 있는 기업들이 다시 코딩하지 않고서도 다른 컴퓨터 회사가 만든 컴퓨터 시스템에도 운영할 수 있도록, 호환성이 있는 프로그램의 개발을 원하는 데에서 기인했다.

About shell script(5) – Hello world! $vi hello #!/bin/sh echo “hello world!”

About shell script(6) – Hello world! 실행해봅시다 ./hello 안 되죠?

About shell script(7) – Hello world! Linux에서 기본적으로 파일은 실행권한이 없음 실행권한 부여 // $chmod +x hello $./hello 혹은 sh hello로 실행

About shell script(8) – 변수선언 변수 선언 name=argon age=19 =양쪽으로 공백이 있으면 안 된다. 변수 호출 변수를 호출할 때는 $를 사용

About shell script(9) – 변수입력 변수 입력 받기 read [변수명]

About shell script(10) – 특수 변수 특수한 변수 $$ : Shell 자신의 PID $! : Shell이 마지막에 실행한 background process PID $* : 인수 전체의 list 하나의 달라붙어있는 형태 $@ : 인수 전체의 list, 각각 “”로 묶여서 전개 # : Shell에 부여된 인수의 개수 $0 : Shell 자신의 file명 $1 ~ $n : Shell에 부여된 인수의 값(순서대로) $? : 이전에 수행한 명령이 성공했는가? (성공 0)

About shell script(11) – 인수 전달

About shell script(12) – 연산자 + - / \* %

About shell script(13) – 조건문 if if [condition1] then commands elif [condition2] else fi //if문의 끝

About shell script(14) – 조건문 if if [condition1]; then commands elif [condition2]; then else fi //if문의 끝

About shell script(15) – case case $변수 in 0) commands;; 1) commands;; esac //case문의 종결

About shell script(16) – 제어문 &&: 앞의 조건식이 참일 때 실행 ||: 앞의 조건식이 거짓일 때 실행

About shell script(17) – 조건식 조건식은 [ ]로 묶임 파일식: 파일의 속성 검사 [ -f ”file” ]: file 이 파일인지를 테스트 [ -x “/usr/games/sl” ]: /usr/games/sl이 실행파일인지 아닌지 테스트 문자열식: 문자열을 검사 [ -z “$var” ]: $var의 문자열의 길이기 0인지 테스트 [ -n “$var” ]: $var의 문자열 길이가 0인지 아닌지 테스트 [ “$a” = “$b” ]: $a와 $b가 같은가 테스트 숫자 비교 연산자: -eq: == -ne: != -ge: >= -gt: > -le: <= -lt: <

About shell script(18) – 반복문 while [Condition] do commands done until [Condition] do commands done 리스트의 값들이 차례로 변수에 넣어지고 리스트에 있는 값의 개수만큼 반복 for 변수 in [list] do commands done for ((i=0; I < 10; i++)) do commands done

About shell script(19) – 함수 functionname() { commands } 호출은 functionname

About shell script(20) – 배열 declare –a array (크기 지정 없이 배열을 선언) array[1]=k 와 같이 접근, 호출은 변수와 마찬가지로 ${array[1]}

실전! – Cron 만들기 Cron? 정해진 시간마다 정해진 작업을 하는 Unix의 background process의 명칭 http://cafe.naver.com/daousw/489

실전! – Cron 만들기 바로 이렇게!

실전! – Cron 만들기 일단, 아래와 같이 시작합니다. date +%Y 는 원래 연도를 가르쳐주는 명령어

실전! – Cron 만들기 전달받은 인수의 개수가 올바른지 확인 올바르지 않은 경우 Usage를 출력한 뒤 exit

실전! – Cron 만들기 서버로부터 시간 정보 가져오기

실전! – Cron 만들기 이제부터 시작! Hint: 서버로부터 가져온 시간과 현재 시간 이 일치하는가 확인 아직 시간이 남았다면 sleep을 사용합시다. 실행에는 . ${변수명} 을 사용 ?

Contents – make make? Makefile syntax Example Parallel build Clock skew dependency

make? linux에서 제공하는 하나의 유틸리티 현재 디렉토리에 있는 Makefile 또는 makefile 이란 일정 규칙하에 만들어진 file의 내용을 읽 어 목표 file을 생성

Makefile Syntax Makefile도 결국 Shell Script와 유사한 syntax Command 전에는 항상 TAB #으로 시작하는 행은 주석 이외의 자세한 문법은 http://www.gnu.org/software/make/manual/make.html

make & Makefile make의 목표 가장 적은 단계를 거쳐 파일 생성 Makefile에 파일 생성을 위해 필요한 파일들에 대해 기록해둔다. 파일 생성을 위해 필요한 파일들 중 변경된 파일이 있는지 Timestamp를 가지고 추적.

Makefile Example GcdLcm: main: main함수를 포함 GcdLcm.c: GCD, LCM 함수 정의 GcdLcm.h: GCD, LCM 함수 선언

Makefile Example GcdLcm.h GcdLcm.c

Makefile Example main.c

Makefile Example Makefile

Makefile Example make 한 번 더?

Parallel build 일반적으로 make는 한 번에 한 file을 생성 -j 혹은 –jobs 옵션을 통해 동시에 여러 파일 을 생성하도록 할 수 있음. Ex) –j4 : 4개의 프로세스를 생성하여 make (즉 동시에 4개의 작업을 수행)

Clock skew 시스템의 시간과 컴파일 하고자 하는 소스 파일의 시간이 맞지 않음 해결방법 Make: warning: Clock skew detected. Your build may be incomlete 시스템의 시간과 컴파일 하고자 하는 소스 파일의 시간이 맞지 않음 Ex) 시스템의 시간보다 미래에 저장된 소스파일 해결방법 소스 파일들의 access와 modification 시간을 현재시간으로 업데이트

dependency 어떠한 차례로 컴파 일 해야 할 것인가? 병렬 컴파일이 가능 한 파일들은 무엇인 가? main.c GcdLcm.c GcdLcm.h main.o GcdLcm.o GCDLCM 어떠한 차례로 컴파 일 해야 할 것인가? 병렬 컴파일이 가능 한 파일들은 무엇인 가? 어떤 파일이 변경된 다면 얼마만큼의 재 컴파일이 필요한가? 순환참조가 있는가? http://jacking75.cafe24.com/Boost/graph/file_dependency_example.html

References http://ingorae.tistory.com http://smeffect.tistory.com http://www.gnu.org/software/make/manual/make.html http://ko.wikipedia.org/wiki/%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8_%EC%96%B8%EC%96%B4 http://kukuta.tistory.com http://kyagami.blog.me http://cafe.naver.com/daousw/489 http://www.gnu.org/software/make/manual/html_node/Parallel.html http://blog.naver.com/juner84?Redirect=Log&logNo=100129369041 http://jacking75.cafe24.com/Boost/graph/file_dependency_example.html

Citation 2011 Wheel Seminar - 08. GCC and Shell Script 정창제 선배님

수고하셨습니다.