Unix Shell Script 2003 03 24 For SPARCS ’03 김군훈 airlover sparcs kaist Index • What is shell • Shell configuration Environment variable • Standard input output er by pck41883

VIEWS: 129 PAGES: 20

									    Unix Shell Script

 2003/03/24 For SPARCS ’03
김군훈 <airlover@sparcs.kaist>
                    Index
• What is shell?
• Shell configuration & Environment variable.
• Standard input/output/error,
  Redirection, Pipelining.
• Shell script examples.
• Shell script syntax.
• Special parameter
• Making shell.
• Homework.
            What is shell?
• Command / Interpreter            Program
  – Bourn Shell
                   User
  – C Shell               Shell
  – Korn Shell
  – Bash
  – Tcsh                  Kernel

              Program
                                    Program
          Bash Configuration
• .bash_login: Login initialization like .login
• .bash_logout: Logout actions
• .bashrc: Shell configuration
• .bash_profile: Login shell configuration
• .inputrc: Individual readline initialization file

• .bash_history: Command history file
        Environment Variable.
• PWD
  – Current working directory.    Shell Var. - set
• PATH
  – The search path.
                                        export
• PS1
  – The primary prompt string.
• MAIL                           Environ. Var.   - env
  – Filename to check mail.
Standard input, output, error

  0 - STDIN
  1 - STDOUT
  2 – STDERR      Program2 FD

                  0 - STDIN
    :   : :
                  1 - STDOUT
  Program1 FD
                  2 – STDERR

                    :   : :
        Redirection & Pipelining

         <                       >
 File                                File
                       |


             Program       Program

Etc..
  >> << <<< 2>&1 2> &> …
Script Examples - Start
              #!/bin/sh
              mutt
              telnet ara
              telnet ska
              telnet pie
Script Examples(2) – Color Table

            #!/usr/local/bin/bash
            esc="\033["
            echo -e "     40   41      42   43   44   45   46   47"
            for fore in 30 31 32 33 34 35 36 37; do
            line1="$fore "
            line2="   "
            for back in 40 41 42 43 44 45 46 47; do
            line1="${line1}${esc}${back};${fore}m 보통 ${esc}0m "
            line2="${line2}${esc}${back};${fore};1m 밝은 ${esc}0m
            "
            done
            echo -e "$line1\n$line2"
            done
        Script Examples(3) – Dictionary
$ sh eng_dic shell


shell   [LINK] 발음듣기
 [INLINE] shell [ [INLINE] 雩] n.
 1 a 조가비(seashell); (굴의) 껍질
 b (거북 [INLINE] 새우 [INLINE] 게 등의) 등딱지, 껍데기
 c (콩의) 깍지, 꼬투리
                               #!/bin/sh
 d 시초(翅?), 딱지 날개
 e (번데기의) 외피                   WORD=$*
                         WORD=$(echo ${WORD} |od
 f (과일 [INLINE] 종자 등의) 껍질; [ pl. ] 카카오 껍질(cacao shells) -tx1 -w1000 |head -1 \

                               |sed -e 's/^[0-9]\+ //' -e 's/ 0a$//' -e 's/20/+/g' -e 's/ /%/g' -e
                               's/^/%/' \
                               |tr '[a-z]' '[A-Z]')
                               lynx -nolist -verbose -dump
                               http://kr.engdic.yahoo.com/result.html?p=${WORD} \
                               |grep -v "bu2.gif" |tail +14 |tac |tail +11 |tac \
                               |sed -e 's/[phon[0-9]\+\.gif] //g' -e 's/[phon[0-9]\+\.gif]//g' \
                               |less -r
   Script Examples(4) – Etc.
• Automatic install program.
• Homework submit program.
  – Homework num., source file
  – Delay due
• Homework marking program.
  – Compare optimized solution
  – Check execution time.
• Check empty IP address.
         Shell script syntax - for
• for name [ in word ] ; do list ; done
                                  #!/usr/local/bin/bash
  102 Name: sparcs.kaist.ac.kr
                                  for ((i=102;i<151;i++));
  103 Name: ara.kaist.ac.kr
                                  do data=`nslookup 143.248.234.$i 2> /dev/null| tail
  104 Name: baram.kaist.ac.kr     +4|head -1`;
  105 Name: gurum.kaist.ac.kr     echo $i $data;
  106 Name: sparcs6.kaist.ac.kr done;
  107 Name: sparcs7.kaist.ac.kr
  108 Name: sparcs8.kaist.ac.kr
  109 Name: sparcs9.kaist.ac.kr
  110 Name: ftp.kaist.ac.kr
      ................
     Shell script syntax(2) - if
• if list; then list; [ elif list; then list; ] ...
  [ else list; ] fi
                            #!/bin/sh
                            echo $1;
       $ ./diff abc abc     echo $2;
       abc                  if [ "$1" = "$2" ]; then
       abc                       echo "It's same";

       It’s same            else
                                 echo "It's different";
       $ ./diff abcc abcd
                            fi
       abcc
       Abcd
       It’s different
Shell script syntax(3) – select
• select name [ in word ] ; do list ; done
                      #!/usr/local/bin/bash
                      OPTIONS="Hello Quit"
                      select opt in $OPTIONS; do
     1) Hello         if [ "$opt" = "Quit" ]; then
     2) Quit          echo done
                      exit
     #? 1
                      elif [ "$opt" = "Hello" ]; then
     Hello World      echo Hello World
     #? 2             else
                      clear
     done
                      echo bad option
                      fi
                      done
  Shell script syntax(4) - case
• case word in [ [(] pattern [ | pattern ] ... )
  list ;; ] ... esac
                         #!/bin/sh
                         case $1 in
                           all)
                                telnet ara; telnet ska; telnet noah;;
                           a)
                                telnet aka;;
                           s)
                                telnet ska;;
                           n)
                                telnet noah;;
                         esac
  Shell script syntax(5) – Etc.
• while list; do list; done
• until list; do list; done
• [ function ] name () { list; }
        Special Parameters
• 0 : Name of the shell or shell script
• $ : Process ID of the this shell
• ! : Process ID of last background
  command
• # : Number of arguments
• @ : Positional parameter
• 1, 2, 3, .. 9 : n-th argument
            Making Shell
• 2003 SP Seminar on summer vacation
  – For studying system programming.
  – For being a SPARCS man.
  – A flower of circle activation.


• SP + ARCS = SPARCS
             Homework
• airlover라는 폴더를 만든다.
• 위에서 만든 폴더에 이름이 SPARCS 03학번
  회원들의 아이디인 파일을 만들고 그 회원이
  마지막으로 접속한 시각을 기록한다.
• 하나의 파일로 묶은 후 압축해서
  airlover.tar.bz2라는 파일로 만든다.
• airlover폴더를 지운다.
• 실행하면 자동으로 압축이 풀리게 만든다.
• c.f) /SPARCS/mail/aliases.d/sparcs2003
            Reference
• http://kldp.org/HOWTO/html/Adv-Bash-
  Scr-HOWTO/index.html
• Sh/Bash/Csh/Tcsh man pages

								
To top