SHELLScript ? 04 Spring SPARCS Yiseul Cho (idewi@sparcs.kaist.ac.kr)
INDEX SHELL SHELL& SHELL Script SHELL Script EX SYNTAX 복습 HW ★ REFERENCE
1.Shell Interface between user and kernel Command Interpreter Bourn Shell C Shell Korn Shell Bash Tcsh 커널 user Shell
1.5 Shell & Shell Script Shell Script란? 명령어들의 모음 ( +간단한 구조화 프로그래밍) 시스템 콜, 여러 프로그래밍 도구들, 유틸리티, 실행파일, 쉘 내부명령어 등
2.Shell Script EX - =_=; #!/bin/bash mutt telnet ara telnet ska telnet loco exit 0
2.1 Shell Script EX- Korea Herald 오늘 날짜의 영자 신문 을 보여준다 #!/bin/bash YEAR=`date +%Y` M=`date +%m` d=`date +%d` sec=$RANDOM let "sec %=40" ((sec+=10)) lynx -nolist -verbose –dump www.kor eaherald.co.kr/SITE/data/html_dir/$YEA R/$M/$d/${YEAR}${M}${d}00${sec}.a sp|tail +4|sed -e 's/\[LINK\]//g' -e's/ \[INLINE\]//g' |less -r exit 0
2.2 Shell Script EX– Process Control #!/bin/bash Process=$* Num=`pidof $Process` kill –s 9 $Num exit 0
3. Basic Syntax # comments… list; list; list; … list | list | list … list < input > output list & (list) `list` “list” ‘list’ { list;} name=value name () { list;}
유닉스툴에서 배웠을 내용 복습 Pipelining Redirection Job control 그밖에 shell commands
3.1 Syntax(1) - if if list; then list; [elif list; then list; ] ... [ else list; ] fi #주인을 알아보는 프로그램 ^^;; #!/usr/bin/bash me=$1; If [“$me”=“idewi”]; then echo “Hi~”; else echo “$1, who are u -_-?”; fi
3.2 Syntax(2)- for for arg in [list] do command... done #!/bin/bash #현재 디렉토리의 파일 #대문자->소문자 #!/bin/bash for f in *; do mv $f `echo $f | tr '[A-Z]' '[a-z]'` done exit 0
3.3 Syntax(3)- case case "$variable" in "$condition1" ) command...;; "$condition2" ) command...;; esac #!/bin/bash echo "아무키나 누른 다음 리턴을 치세요." read Keypress case "$Keypress" in [a-z] ) echo "소문자";; [A-Z] ) echo "대문자";; [0-9] ) echo "숫자";; * ) echo "구두점이나, 공백 문자 등등";; esac # [대괄호]속 범위의 문자들을 받아 들입니다. exit 0
4. 복습 Example #!/usr/local/bin/bash for i in`cat /SPARCS/mail/aliases.d /sparcs2003`; do finger $i | egrep -h 'Last login' >/home/idewi/homework/$i; done; tar cvzf airlover.tar.gz /home/idewi/homework; ls /home/idewi/homework ; exit 0; #!/usr/local/bin/bash lynx -dump keyterms.html | cat > imsi; a=$((`wc -l < imsi`/2)); cat imsi | tail -$a | cut -c52- > imsi2 ; rm -f imsi; for i in `cat imsi2`; do echo $i | cut -c60-; lynx -dump "../$i"; done; exit 1;
5. HW 지금까지 본 Shell Script 무슨 일을 하는가? 왜 쓸까? 편리하다 많이 쓰자 ^^
그렇다면 숙제는? 모두 nugu의 개인 정보중 생일 정보를 입력한다. nugu를 이용해서 04학번 회원들의 이름 아이디 생일의 정보만을 추려낸 파일을 생성해서 idewi회원에게 메일을 보낸다 파일첨부 ^^ 힌트는 세미나시간중에…ㅎㅁㅎ/~
6. Reference http://doc.kldp.org/HOWTO/html/Adv-Bash-Scr-HOWTO/index.html http://doc.kldp.org/Translations/html/Sed-KLDP/introduction.html UNIX IN A NUTSHELL
INTERFACE? 사용자에게 컴퓨터를 편리하게 사용할 수 있는 환경을 제공하는 설계 내용. 사용자가 컴퓨터나 프로그램과 의사소통을 하고 쉽고 편리하게 사용할 수 있도록 하는 것이 목적이다.
Redirection & pipe File File < > Program Program | Etc.. >> << <<< 2>&1 2> &> …
커널 kernel(알멩이)이라는 이름에서 보듯이, 커널이란, 유닉스 시스템이 시작될 때 - 이것을 흔히 부팅 작업 이라고 하지요 -, 가장 먼저 읽혀지는 핵심 부분입니다. 커널은 그 시스템의 모든 자원을 관리하고, 당신이 어떤한 자원을 요청할 때, 그것을 준비해서 당신의 타당한 작업을 할 수 있도록 해 줍니다. 굳이 당신이 그 커널 자체에 대해서 모두 알아야 할 필요는 없습니다. 중요한 것은 커널이 이런 것이고, 이러한 작업을 한다는 것 정도만 알아도 충분할 것입니다. File Management System, Memory Management System, Process Management System
대문자 소문자 바꾸기 주석지우기 (#!은 제외) 로긴과 동시에 새메일의 도착여부를 알림 &지난번 로긴후의 흐른 시간도 함께 ^^;
오늘의 영자 신문 긁어오기 한방에 프로세스 kill 하기 >_< (pidof & kill) 메일을 읽은 시간 학번별로 정리해서 보여주는 스크립트 (finger에서 메일 수신을 알려줄때 procmail을 실행하는 사람은 안됨! && /var/mail 은 퍼미션 권한이 없음 -0-)