1 / 24

Shell Script Seminar 1999 Spring, SPARCS

Shell Script Seminar 1999 Spring, SPARCS. by 유제성 (ari@sparcs.kaist.ac.kr). - Contents -. 1. What's a Shell ? 2. What's a Shell Script ? 3. Why we use a shell script ? 4. Bash and Shell script 5. Tcsh and Shell script 6. Environment variables. 1. What's a Shell ?. - 커널과 유저 사이의 인터페이스

tyson
Download Presentation

Shell Script Seminar 1999 Spring, SPARCS

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Shell Script Seminar 1999 Spring, SPARCS by 유제성(ari@sparcs.kaist.ac.kr)

  2. - Contents - 1. What's a Shell ? 2. What's a Shell Script ? 3. Why we use a shell script ? 4. Bash and Shell script 5. Tcsh and Shell script 6. Environment variables

  3. 1. What's a Shell ? - 커널과 유저 사이의 인터페이스 - GUI - 그래픽 유저 인터페이스 - 커널 - 하드웨어와의 인터페이스 - 커널보다 쉘의 종류가 다양하다 - Windows도 기본으로 제공되는 explorer외의 쉘로 바꿀 수 있으며, 커널이 동일하기 때문에 쉘이 바뀌더라도 인터페이스 외의 변화는 없다.

  4. 2. What's a Shell script ? - MS-DOS 의 배치파일(Batch File)과 비슷하다. - 명령어들의 모음 ( + 간단한 구조화 프로그래밍) - 쉘 스크립트는 쉘에서 제공하는 것이기 때문에, 쉘에 따라 문법과 제공되는 기능이 많이 다르다. - #으로 시작되는 줄은 주석이다 (첫째줄의 #!/bin/bash 등 제외)

  5. 3. Why we use a shell script ? - 반복되는 작업을 쉽게 하기 위해서 - 각자 고유한 쉘 환경을 꾸미기 위해서 - 환경파일 - .tcshrc .bashrc .muttrc .vimrc .xsession - 쉘 스크립트의 기능은 상당히 강력하다.

  6. 4. Bash and Shell script - 배쉬는 FSF(GNU)에서 유닉스의 Bourne Shell을 본따서 만든 쉘로서 Bourne Again Shell의 약자이다. - 배쉬는 본쉘을 모두 포함하며, C 쉘의 기능도 많이 포함한다. - 대부분의 리눅스 머신의 표준 명령어 라인 인터페 이스이다. - .bashrc 파일 내에 bash의 설정이 들어 있으며, 프롬 프트 상에서 set과 env로 자신의 현재 환경을 확인 할 수 있다.

  7. 4.1 How to make and run Shell script ? - #!/bin/bash를 VI등을 이용해서 스크립트의 첫째줄에 넣는다. - sparcs> bash filename - 계정에서 위와 같은 형식으로 실행시킨다. - 실행 퍼미션 (rwx에서 x)이 있을 필요가 없다. 쉘 스크립트는 스크립트 자체가 실행 파일이 아니고, 쉘을 통해서 실행되는 것이다. - 실행 퍼미션이 있을 경우 sparcs>filename 만으로도 실행된다. - 쉘 스크립트 내의 명령어들은 쉘 프롬프트 상에서도 실행된다. (for, if 같은 것들은 제외..) - sparcs> source test 와 같은 형식으로도 실행시킬 수 있다.

  8. 4.2 Variable - sparcs> var1=ABCDE sparcs> echo $var1 ( = echo "$var1") ABCDE - sparcs> var1=* (현재 디렉토리의 모든 파일들..) sparcs> echo $var1 Mail News documents public_html test1 test2 test3 sparcs> echo "$var1" * - sparcs> var1=t* (t로 시작되는 모든 파일들..) sparcs> echo $var1 test1 test2 test3

  9. 4.3 If-then - if [ 조건 ] then 참일 때 할 일 fi - if [ 조건 ] then 참일 때 할 일 else 거짓일 때 할 일 fi - if [ 조건1 ] then 조건1이 참일 때 할 일 elif [ 조건2 ] then 조건2가 참일 때 할 일 fi

  10. 4.4 For, while - for I in 1 2 3 4 5 6 7 8 9 10 do echo $I done - while [ 조건 ] do 할 일 done

  11. 5. Tcsh and Shell script - Tcsh는 Berkeley UNIX C Shell(csh)과 완벽하게 호환되며, 커맨드 라인 편집과 completion이 추가된 쉘이다. - 본쉘 스크립트를 C쉘에서 실행할 수는 있지만, C쉘 스크립트를 본쉘에서 실행할 수는 없다. (본쉘이 표준적) - #!/bin/tcsh롤 파일의 첫째줄에 추가하고, 프롬프트 상에서 tcsh filename으로 실행한다.

  12. 5.1 Variable - sparcs> set var1=ABCDE (set을 붙이는 것에 주의 !) sparcs> echo $var1 12345 - sparcs> set var1=(ABC, DEF, GHI) sparcs> echo $var[3] GHI sparcs> echo $var[2-3] DEF GHI - sparcs> @ a = 12345 (숫자변수는 앞에 @를 붙인다. sparcs> echo $a @와 변수명 사이에 한칸을 띈다) 12345

  13. 5.2 Operator & Calculation - c와 같은 문법으로 연산을 할 수 있다. - sparcs> @ a = 5 sparcs> @ b = 3 sparcs> @ c=$a % $b (%는 c에서 나머지 연산이다) 2 - 이 외에도 +, -, *, /, >>, <<, +=, ++, -=, --, *=, /=, %= 등도 C 문법으로 쓸 수 있다.

  14. 5.3 Foreach, while - test파일 #!/bin/tcsh foreach X ( ABC DEF GHI JKL MNO ) echo $X end - sparcs> tcsh test - while ( 조건 ) 할 일 end

  15. 5.4 If-then - if 구문도 C와 동일하게 쓰인다. - if ( case ) do something - ex) if ( $?a==1 || $?b==1 ) echo ABCDE

  16. 6. Environment Variables - 환경변수에는 path, prompt, alias, complete 등등이 있다 - 환경의 셋팅에 따라서 쉘 사용의 편리함에 많은 차이가 나게 된다. 6.1 History - 본쉘에는 없는 C쉘만의 기능이다. 그러나, 배쉬에는 포함되어 있다.

  17. 6.1.1 History of bash - sparcs> set HISTFILE=/home98/ari/.bash_history HISTFILESIZE=500 HISTSIZE=500 - 히스토리 파일이 .bash_history이고 파일 사이즈가 500, 메모리의 히스토리 사이즈도 500으로 셋팅되어 있음을 나타낸다. 6.1.2 History of tcsh - sparcs> set history 100 - 히스토리 사이즈가 100임을 나타낸다

  18. 6.1.3 Usage of History - sparcs> !! 라고 하면, 바로 전에 실행했던 명령을 다시 실행 - sparcs> !10 이라고 하면, history에 기억된 명령어들 중에서 10번째 명령을 실행한다. - sparcs> !-10이라고 하면, 10번째 전에 입력했던 명령을 실행 - sparcs> !a 라고 하면 a로 시작하는 가장 최근의 명령을 실행

  19. 6.2 Alias - alias ls 'ls -p --color=tty $1 -F' - sparcs> ls 라고 치면 이것이 ls -p --color=tty -F로 치환된다. - sparcs> ls -la 는 ls -p --color=tty -la -F로 치환된다. - 현재의 alias 상태는 프롬프트에서 alias를 입력함으로써 알 수 있다.

  20. 6.3 Complete - Completence란 프롬프트 상에서 tab을 눌렀을 때, 현재 입력된 문자열로 시작되는 것들을 완성해주는 기능이다. (tab외에 ^D 도 가능하다) - List 기능은 조건에 맞는 것들이 여러개일 때, 출력해주는 것이 다. 이 기능은 set autolist가 되어 있을 때만 쓸 수 있다. - sparcs> cd [tab] Mail/ News/ digital/ documents/ public_html/ sparcs> cd - sparcs> cd d[tab] digital/ documents/ sparcs> cd d - sparcs> talk [tab] ari bxxxxxx gxxxxxxx ixxxx vxxx sparcs> talk

  21. - sparcs> talk ar[tab] (줄이 바뀌지 않는다) sparcs> talk ari - 맞는 것이 하나일 때는 리스트되지 않고 Complete 된다. - sparcs> a[tab]을 하면 현재 지정된 path내의 a로 시작되는 모든 파일들이 출력된다. - sparcs> man [tab]을 하면 명령어들의 목록이 나온다. - sparcs> finger [tab]을 하면 사용자들의 목록이 나온다. - 현재 설정된 complete들을 보려면 프롬프트에서 complete를 입력한다. - set fignore=(.bak .xxx)와 같이 되어 있을 경우, .bak 이나 .xxx로 끝나는 파일들은 complete list에서 나타나지 않는다. - .tcshrc파일 내에 complete들이 설정되어 있다. 예) complete cd p/1/d/ complete man p/1/c/

  22. - complete 의 형식은 complete 명령어 옵션1/패턴/옵션2/문자열 - 옵션1은 c, C, n, N, p가 올 수 있으며 옵션1은 패턴을 이용하는 경우를 나타낸다. - 옵션2는 a, c, d, f, s, u 등이 있으며, a는 alias, c는 command, d는 directory, f는 파일, s는 set, u는 user를 의미한다. - 문자열은 없어도 되며, 패턴에 맞는 단어가 1개일 때, 즉 complete 가 될 때 뒤에 추가할 문자열을 의미한다. - complete set 'c/*=/f/' 'p/1/s/=' 'n/=/f' 등과 같이 한 명령에 대해서도 패턴에 따라 다르게 complete 시킬수 있다. - 옵션 1의 c와 n의 차이는 c는 커서와 붙어있는 단어, n은 공백을 사이로 떨어진 앞의 단어를 의미한다.

  23. - 옵션 1의 p는 position을 의미하는 것으로, 1은 [tab]을 누른 위치가 공백을 기준으로 첫번째여야함을 말한다. p/*/... 과 같이 쓰일 경우는, 위치에 관계없이 쓰인다는 의미이다. 특별한 패턴 조건이 필요없을 때 이렇게 쓴다. - sparcs> set [tab]을 하면 p/1/s/=에 해당하는 complete가 실행 - sparcs> set arg[tab]을 해도 역시 p/1/s/=이 실행되며, set중에서 arg로 시작되는 것은 argv 하나 뿐이다. 따라서 뒤에 =이 추가. sparcs> set argv= - sparcs> set a=[tab]을 하면, c/*=/f/에 해당하는 complete가 실행 - sparcs> set a= i[tab]을 하면, n/=/f/에 해당하는 complete가 실행

  24. 6.4 Prompt - set prompt = "%m %#" 과 같은 형식으로 쓰인다. - prompt의 ""안에 들어올 수 있는 변수들은 다음과 같다. - %/, %~ : 현재 디렉토리. %~는 home98/ari를 ~로 치환한다. - %h, %! : History 번호 - %M, %m : 호스트 이름 %m은 맨 앞의 . 까지만을 나타낸다. - %% : % 기호 - %t, %T, %@, %p, %P : 현재 시간 (각각 차이가 있다) - %n : 사용자 이름 - %d, %D, %y, %Y, %w, %W : 요일, 년, 월, - %# : >기호

More Related