210 likes | 418 Views
SHELL Script ? 04 Spring SPARCS. Yiseul Cho (idewi@sparcs.kaist.ac.kr). INDEX. SHELL SHELL& SHELL Script SHELL Script EX SYNTAX 복습 HW ★ REFERENCE. user. Shell. user. 커널. user. 1. Shell. Interface between user and kernel Command Interpreter Bourn Shell C Shell Korn Shell
E N D
SHELLScript ?04 Spring SPARCS Yiseul Cho (idewi@sparcs.kaist.ac.kr)
INDEX • SHELL • SHELL& SHELL Script • SHELL Script EX • SYNTAX • 복습 • HW ★ • REFERENCE
user Shell user 커널 user 1.Shell • Interface between user and kernel • Command Interpreter • Bourn Shell • C Shell • Korn Shell • Bash • Tcsh
1.5 Shell & Shell Script • Shell Script란? 명령어들의 모음 ( +간단한 구조화 프로그래밍) Shell 프로그램 시스템 콜, 여러 프로그래밍 도구들, 유틸리티, 실행파일, 쉘 내부명령어 등
2.1 Shell Script EX- Korea Herald 오늘 날짜의 영자 신문 을 보여준다
2.2 Shell Script EX– Process Control #!/bin/bash Process=$* Num=`pidof $Process` kill –s 9 $Num exit 0
# comments… list; list; list; … list | list | list … list && list || list … list < input > output list & (list) `list` “list”‘list’ { list;} name=value name () { list;} 3. Basic Syntax
유닉스툴에서 배웠을 내용 복습 • Pipelining • Redirection • Job control • 그밖에 shell commands
if list; then list; [elif list; then list; ] ... [ else list; ] fi 3.1 Syntax(1) - if #주인을 알아보는 프로그램 ^^;; #!/usr/bin/bash me=$1; If [“$me”=“idewi”]; then echo “Hi~”; else echo “$1, who are u -_-?”; fi
3.2 Syntax(2)- for • forarg in [list] do command... done
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 3.3 Syntax(3)- case
#!/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; 4. 복습 Example
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? • 사용자에게 컴퓨터를 편리하게 사용할 수 있는 환경을 제공하는 설계 내용. • 사용자가 컴퓨터나 프로그램과 의사소통을 하고 쉽고 편리하게 사용할 수 있도록 하는 것이 목적이다.
File File Program Program Redirection & pipe < > | Etc.. >> << <<< 2>&1 2> &>…
커널 • kernel(알멩이)이라는 이름에서 보듯이, 커널이란, 유닉스 시스템이 시작될 때 - 이것을 흔히 부팅 작업 이라고 하지요 -, 가장 먼저 읽혀지는 핵심 부분입니다. 커널은 그 시스템의 모든 자원을 관리하고, 당신이 어떤한 자원을 요청할 때, 그것을 준비해서 당신의 타당한 작업을 할 수 있도록 해 줍니다. 굳이 당신이 그 커널 자체에 대해서 모두 알아야 할 필요는 없습니다. 중요한 것은 커널이 이런 것이고, 이러한 작업을 한다는 것 정도만 알아도 충분할 것입니다. • File Management System, Memory Management System, Process Management System
대문자 소문자 바꾸기 • 주석지우기 (#!은 제외) • 로긴과 동시에 새메일의 도착여부를 알림 &지난번 로긴후의 흐른 시간도 함께 ^^;
오늘의 영자 신문 긁어오기 한방에 프로세스 kill 하기 >_< (pidof & kill) 메일을 읽은 시간 학번별로 정리해서 보여주는 스크립트 (finger에서 메일 수신을 알려줄때 procmail을 실행하는 사람은 안됨! && /var/mail 은 퍼미션 권한이 없음 -0-)