Microsoft PowerPoint - 05_(Linux)_(Fundamental)_Shell_Programming

Similar documents
Linux SHELL

Linux SHELL

<4D F736F F F696E74202D20BFEEBFB5C3BCC1A6BDC7BDC D31C7D0B1E229202D20BDA92E BC8A3C8AF20B8F0B5E55D>

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

Microsoft PowerPoint - 02-Shell-Programming

Microsoft PowerPoint UNIX Shell.pptx

Microsoft PowerPoint UNIX Shell.ppt

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Microsoft PowerPoint - u5.pptx

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

C++ Programming

Microsoft PowerPoint - u5.pptx

C++ Programming

PowerPoint 프레젠테이션

Microsoft PowerPoint - comp_prac_081223_2.pptx

Microsoft Word - Lab_080104A.docx

Unix & Linux 개요 Company 서울대학교통계학과 2010년 2학기컴퓨터의개념및실습 ( Thanks to: cancho & facewhite from SPARC/KAIST, Bruce La Plante fro

ksh프로그램문법.ppt

Microsoft PowerPoint - 04_UsingShell

PowerPoint 프레젠테이션

사용자계정관리 1. 사용자계정관리 사용자 (user), 그룹 (group) u 다중사용자시스템 (Multi-User System) - 1 대의시스템을동시에여러사람이접속하여쓸수있게하는시스템 u 사용자 (user) - 시스템관리자 : root (=Super user) -

1 Shell script What the shell?

Content Shell 이란? Redirection & Pipes Shell Programming 변수 조건 프로그램제어 리스트 함수 Shell 에내장된명령 Here documents Page 2

Microsoft PowerPoint - 00_(C_Programming)_(Korean)_Computer_Systems

2힉년미술

Microsoft PowerPoint - 게시물2 - unix07.ppt [호환 모드]

/chroot/lib/ /chroot/etc/

제1장 Unix란 무엇인가?

PowerPoint 프레젠테이션

lecture01

Microsoft PowerPoint - 01_Overview

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

PowerPoint 프레젠테이션

Microsoft PowerPoint - 07-EDU-LinuxUser-3.ppt

PowerPoint 프레젠테이션

02-출판과-완성

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap06-2pointer.ppt

Visual Basic 반복문

歯 조선일보.PDF

Microsoft PowerPoint - 5. 사용자 계정관리-1(2016-1학기).ppt [호환 모드]

단계

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

歯J PDF

Microsoft Word ARM_ver2_0a.docx

Multi-pass Sieve를 이용한 한국어 상호참조해결 반-자동 태깅 도구

Adobe Flash 취약점 분석 (CVE )

chap2

Microsoft PowerPoint - chap01-C언어개요.pptx

제8장 프로세스

PowerPoint 프레젠테이션

Sena Technologies, Inc. HelloDevice Super 1.1.0

슬라이드 1

슬라이드 1

01Àå

로거 자료실

Microsoft PowerPoint - 03_(Linux)_(Fundamental)_File_Directory

단위: 환경정책 형산강살리기 수중정화활동 지원 10,000,000원*90%<절감> 형산강살리기 환경정화 및 감시활동 5,000,000원*90%<절감> 9,000 4, 민간행사보조 9,000 10,000 1,000 자연보호기념식 및 백일장(사생,서예)대회 10

[ 컴퓨터시스템 ] 3 주차 1 차시. 디렉토리사이의이동 3 주차 1 차시디렉토리사이의이동 학습목표 1. pwd 명령을사용하여현재디렉토리를확인할수있다. 2. cd 명령을사용하여다른디렉토리로이동할수있다. 3. ls 명령을사용하여디렉토리내의파일목록을옵션에따라다양하게확인할수

긴급송부 보안경고 코드인젝션 취약점관련금융회사자체점검및패치적용권고 보안서비스본부민상식팀장, 조병열인턴 / 개요 코드인젝션취약점이발견됨 에따라조속한 조치가요구되므로이를전파함 위험도및긴급도 구분 위험도 긴급도 등급 상 상 취약점내용 명령인젝션취약점 일

제8장 프로세스

Microsoft Word - 青野論文_李_.doc

슬라이드 1

JDK이클립스

내지4월최종

Java ...

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Contributors: Myung Su Seok and SeokJae Yoo Last Update: 09/25/ Introduction 2015년 8월현재전자기학분야에서가장많이쓰이고있는 simulation software는다음과같은알고리즘을사용하고있다.

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

본문서는 초급자들을 대상으로 최대한 쉽게 작성하였습니다. 본문서에서는 설치방법만 기술했으며 자세한 설정방법은 검색을 통하시기 바랍니다. 1. 설치개요 워드프레스는 블로그 형태의 홈페이지를 빠르게 만들수 있게 해 주는 프로그램입니다. 다양한 기능을 하는 플러그인과 디자인

PowerPoint 프레젠테이션

ABC 7장

伐)이라고 하였는데, 라자(羅字)는 나자(那字)로 쓰기도 하고 야자(耶字)로 쓰기도 한다. 또 서벌(徐伐)이라고도 한다. 세속에서 경자(京字)를 새겨 서벌(徐伐)이라고 한다. 이 때문에 또 사라(斯羅)라고 하기도 하고, 또 사로(斯盧)라고 하기도 한다. 재위 기간은 6

0429bodo.hwp

時 習 說 ) 5), 원호설( 元 昊 說 ) 6) 등이 있다. 7) 이 가운데 임제설에 동의하는바, 상세한 논의는 황패강의 논의로 미루나 그의 논의에 논거로서 빠져 있는 부분을 보강하여 임제설에 대한 변증( 辨 證 )을 덧붙이고자 한다. 우선, 다음의 인용문을 보도록

cls46-06(심우영).hwp

최우석.hwp

교사용지도서_쓰기.hwp

E1-정답및풀이(1~24)ok

< BDC3BAB8C1A4B1D4C6C75BC8A3BFDC D2E687770>

<C1B6BCB1B4EBBCBCBDC3B1E2342DC3D6C1BE2E687770>


<C0CEBCE2BABB2D33C2F7BCF6C1A420B1B9BFAAC3D1BCAD203130B1C72E687770>

untitled

민주장정-노동운동(분권).indd

과 위 가 오는 경우에는 앞말 받침을 대표음으로 바꾼 [다가페]와 [흐귀 에]가 올바른 발음이 [안자서], [할튼], [업쓰므로], [절믐] 풀이 자음으로 끝나는 말인 앉- 과 핥-, 없-, 젊- 에 각각 모음으로 시작하는 형식형태소인 -아서, -은, -으므로, -음

6±Ç¸ñÂ÷

<C3D6C1BE5FBBF5B1B9BEEEBBFDC8B0B0DCBFEFC8A C3D6C1BEBABB292E687770>

초등국어에서 관용표현 지도 방안 연구

177

제주어 교육자료(중등)-작업.hwp

¸é¸ñ¼Ò½ÄÁö 63È£_³»Áö ÃÖÁ¾

01Report_210-4.hwp

<C3D1BCB15FC0CCC8C45FBFECB8AE5FB1B3C0B0C0C75FB9E6C7E D352D32315FC5E4292E687770>



Transcription:

GNU/Linux 쉘프로그래밍 (Shell Programming) Seo, Doo-Ok Clickseo.com clickseo@gmail.com

목 차 유닉스쉘 GNU Bash 2

유닉스쉘 (1/10) 쉘 (Shell) 운영체제기능과서비스구현을위해인터페이스제공하는프로그램 명령어를실행시키는명령어해석기 사용자의명령어를입력받아기계어의형태로변환하여커널에전달하는인터페이스역할 쉘의종류 텍스트기반 CLI 쉘 유닉스쉘 윈도우명령프롬프트 그래픽기반 GUI 쉘 윈도우 PowerShell 윈도우탐색기 맥 OS 파인더 (Finder) 3

유닉스쉘 (UNIX Shell) Bourne Shell 계열 C Shell 계열 유닉스쉘 (2/10) 4

Bourne Shell 계열 : sh Bourne Shell : sh 유닉스쉘 (3/10) 1977년, AT&T Bell 연구소의개발자스티븐본 (Steven Bourne) UNIX Version 7 의기본쉘로톰슨쉘 (Thompson Shell) 을대체 대화형인터프리터로사용 제어흐름과변수를포함한프로그래밍이가능한스크립트언어로도사용 기본로긴쉘 : SunOS-5.x, FreeBSD 라이선스 : CDDL * 톰슨쉘 (Thompson Shell) 1971년, 켄톰슨 (Kenneth Thompson) 이개발하여최초유닉스버전에도입된최초의유닉스쉘 [ 출처 : Bourne shell", WIKIPEDIA ] 5

유닉스쉘 (4/10) Bourne Shell 계열 : ksh, bash Korn Shell : ksh -- kornshell.org 1983년, AT&T Bell 연구소의데이비드콘 (David Korn) 개발 Bourne Shell과하위호환되며, C Shell 의수많은기능을포함한다. 명령어완성기능, 히스토리기능 기본로긴쉘 : AIX, HP-UX 라이선스 : Eclipse Public License(EPL) GNU Bash(Bourne Again Shell) : bash 1989년, 브라이언폭스 (Brian Fox) 개발 Bourne Shell 을기반으로 GNU 프로젝트에의해개발 최종목적 : IEEE POSIX Shell과도구명세에호환되도록하는것 Bourne Shell의기능을추가발전시키면서, Korn Shell과 C Shell의유용한특징들도지원 쉘프로그래밍언어에있어서는 Bourne Shell 과호환 기본로긴쉘 : GNU/Linux, macos X 라이선스 : GNU GPL 6

유닉스쉘 (5/10) Bourne Shell 계열 : zsh Z Shell : zsh -- zsh.org 1990년, 폴팔스타드 (Paul Falstad) 가개발한확장형 Bourne Shell 강력한히스토리기능, 향상된명령행편집기능 파일명중간에서부터자동완성기능가능, 탭이나화살표키를이용해선택가능 라이선스 : MIT License 유형 프로그래밍언어 : C zsh : sourceforge.net https://sourceforge.net/projects/zsh/ [ 출처 : Z shell", WIKIPEDIA ] 7

유닉스쉘 (6/10) Bourne Shell 계열 : ash, dash A Shell(Almquist shell) : ash 1989년, 경량유닉스쉘 1990 년대초반릴리스된 BSD 버전유닉스에서기존 Bourne 쉘을대체 ash 파생판은 FreeBSD, NetBSD, DragonFly BSD, Minix, Android, 일부리눅스배포판에기본쉘 (/bin/sh) 로설치된다. 라이선스 : BSD License 유형 Debian A Shell(Debian Almquist Shell) : dash 1997 년, 최초버전발표이후 2002 년에 dash 로이름변경 Linux 배포판의 Ubuntu, Debian 및 POSIX 준수 8

유닉스쉘 (7/10) Bourne Shell 계열 : ash 파생판 다양한 A Shell(Almquist shell) 변형판 [ 출처 : "Ash (Almquist Shell) Variants", https://www.in-ulm.de/~mascheck/ ] 9

C Shell 계열 : csh, tcsh C Shell : csh 유닉스쉘 (8/10) 1978년, 빌조이 (Bill Joy) 가버클리버전유닉스의쉘로개발 C 언어와유사하며, 강력한프로그램작성기능, 대화식방식사용자환경 라이선스 : BSD License 프로그래밍언어 : C csh Repository : OpenGrok http://bxr.su/netbsd/bin/csh/ TC Shell : tcsh -- tcsh.org 1982 년, C Shell 기반의호환가능한유닉스쉘 프로그래밍가능한명령줄완성, 명령줄편집및기타몇가지기능을갖춘 C Shell 기본로긴쉘 : 초기버전의 macos X 라이선스 : BSD License 프로그래밍언어 : C tcsh Git : github.com https://github.com/tcsh-org/tcsh 10

다양한쉘정보 유닉스쉘 (9/10) 시스템에서사용가능한쉘확인 : /etc/shells [clickseo@localhost ~]$ cat > /etc/shells 현재쉘확인 [clickseo@localhost ~]$ echo $SHELL 11

유닉스쉘 (10/10) 다양한쉘정보 : 기본쉘변경 우분투리눅스기본쉘변경 [clickseo@localhost ~]$ sudo dpkg-reconfigure dash dpkg-reconfigure : 설치된패키지설정변경 리눅스쉘변경 : chsh 12

GNU Bash UNIX 쉘 GNU Bash 쉘프로그래밍 13

GNU Bash (1/11) GNU Bash : gnu.org/software/bash/ 1989 년 06 월, 브라이언폭스 (Brian Fox) 개발 최종목적 : IEEE POSIX Shell과도구명세에호환되도록하는것 Bourne Shell의기능을추가발전시키면서, Korn Shell과 C Shell의유용한특징들도지원 쉘프로그래밍언어에있어서는 Bourne Shell 과호환 Linux 배포판과 macos 에서기본쉘 윈도우 10 에서개발자들을위한도구로써 Bash 지원 GNU Bash 릴리즈 2016 년 09 월, Bash-4.4 2018 년 02 월, Bash-4.4.19 라이선스 : GNU GPL License 프로그래밍언어 : C Bash Git : savannah.gnu.org https://git.savannah.gnu.org/cgit/bash.git/ 14

GNU Bash (2/11) 리눅스를위한윈도우서브시스템 WSL(Windows Subsystem for Linux) 윈도우 10 및윈도우서버 2019 에서기본적으로리눅스바이너리실행파일을실행하기위한계층으로호환커널인터페이스를제공한다. Windows Services for UNIX 를대체 개발자모드및윈도우기능사용설정 1단계 : Windows 설정 > 업데이트및보안 > 개발자용 > 개발자모드 2단계 : 제어판 > 프로그램 > Windows 기능켜기 / 끄기 > Windows Subsystem for Linux 15

GNU Bash (3/11) 리눅스를위한윈도우서브시스템 : WSL 리눅스실행 WSL 를사용하여윈도우에서리눅스실행 [ 출처 : " 윈도우 10 에서 Bash shell 지원 ", developer.microsoft.com ] 16

환경설정파일 로긴쉘 (login shell) GNU Bash (4/11) /etc/profile ~/.bash_profile > ~/.bash_login > ~/.profile 로그인할때읽어들이는설정파일로사용자별환경설정 주요설정내용 : 검색경로, 터미널종류, 환경변수등 ~/.bashrc 새로운쉘이실행될때마다실행되며, 쉘을위한쉘스크립트로서브쉘 각종설정파일들은새로운사용자를등록하면, /etc/skel 디렉터리에기본값으로저장되어있는파일들을홈디렉터리에복사하여생겨나는것이다. 로그아웃 (logout) ~/.bash_logout 로그인쉘이종료되면서실행된다. 17

기타환경설정파일 /etc/profile.d 디렉터리 GNU Bash (5/11) 터미널을사용할때파일및디렉터리에대한색상설정 사용자언어설정 /etc/skel 디렉터리 슈퍼유저인 root 가새로운사용자생성시, 사용자별홈디렉터리에기본값으로복사될파일이존재하는디렉터리 18

GNU Bash (6/11) 내부명령어 (Built-in Command) 쉘프로그램자체적으로처리하는명령어 내부명령어 내용 cd pwd history exit echo 디렉터리변경현재작업디렉터리의절대경로출력이전에작업한명령어리스트출력종료문자열출력 read 사용자로부터값을읽어들인다. alias export set unset 명령어에대한별칭 (alias) 지정환경변수설정변수설정변수초기화 19

내부명령어 : enable 쉘내부명령어 GNU Bash (7/11) [clickseo@localhost ~]$ enable 20

내부명령어 : read read GNU Bash (8/11) C 쉘에서는 $< 을사용해사용자의입력을받았다. Bourne Shell 에서는 read 명령어를사용한다. #!/bin/bash echo n 당신의이름은? read name echo echo 당신의이름은 $name 입니다. 21

GNU Bash (9/11) 쉘활용 : 메타문자와역따옴표 명령어에메타문자사용 * : 길이에관계없이모든문자를가리킨다.? : 정하지않은하나의문자만을가리킨다. 명령어에역따옴표 (backquote) : [clickseo@localhost ~]$ date [clickseo@localhost ~]$ echo today is date [clickseo@localhost ~]$ echo today is`date` 22

GNU Bash (10/11) 쉘활용 : 리다이렉션과파이프라인 출력리다이렉션 (Redirection) : >, >> [clickseo@localhost ~]$ cat > test.text 파일에새로운내용을저장한다. [clickseo@localhost ~]$ cat >> test.text 이미작성되어있는파일내용뒤에첨부하는형식으로저장된다. 파이프라인 (Pipeline) : [ 명령 1] [ 명령 2] --> 명령 1 의결과가명령 2 의입력으로보내져처리된다. 23

GNU Bash (11/11) 쉘활용 : 무조건부와조건부실행 무조건부실행 : 쌍반점 (Semicolon) -- ; 앞명령의성공여부와상관없이무조건적으로실행된다. [ 명령 1]; [ 명령 2] --> 명령 1이실행된후에명령 2가실행된다. [clickseo@localhost ~]$ date > datae.txt; ls; cat date.txt 조건부실행 && : 이전명령에성공하면다음명령을실행 : 이전명령에실패할경우에다음명령을실행 24

GNU Bash 쉘프로그래밍 : 쉘변수 25

쉘변수 (1/7) 쉘변수 쉘변수는자료유형이없다 ( 즉, 아무값이나다넣을수있다 ). 쉘변수는기본적으로데이터를문자열로저장한다. 수치를대입해도실제수치가아닌문자열이저장된다. 계산이필요할경우는자동으로수치로변환하여계산후다시문자열로저장된다. 쉘변수는처음사용될때만들어진다 ( 즉, 미리선언할필요가없다 ). 쉘변수는유닉스명령과마찬가지로대소문자에구별이있다. 쉘변수의값을사용할때는변수명앞에 "$" 를붙여서사용한다. 쉘변수에값을대입할때는 "$" 를사용하지않는다. 26

쉘변수 (2/7) 환경변수 환경변수 $HOME $PATH $SHELL $BASH $BASH_VERSION $MAIL 사용자의홈디렉토리를설정실행프로그램의탐색경로현재쉘의경로와이름사용하고있는 Bash의쉘경로사용하고있는 Bash의버전전자우편보관파일의경로와이름 설명 $MAIL_CHECK 메일확인시간 ( 단위 : 초 ) $HOSTNAME $LS_COLORS $COLUMNS $ENV $HISTFILE $HISTSIZE 현재컴퓨터의이름 ls 명령을사용할때파일의종류마다나타나는색의결정터미널의행수환경지정파일의위치히스토리파일의경로히스토리의개수 27

쉘변수 (3/7) 환경변수 환경변수 설명 $LINES $MANPATH 터미널의라인수 도움말이있는경로 $PWD 현재위치 ( 절대경로 ) $UID $USER $USERNAME $PS1 사용자 UID 사용자 사용자이름 검색경로, 터미널종류, 환경변수등을설정하고, 그외로그인시점에실행시키고싶은명령, 시스템에대한정보를보여주는명령등을수행 28

환경변수 : 설정값 쉘변수 (4/7) 개별적으로환경변수설정값을확인 [clickseo@localhost ~]$ echo $ 변수명 29

환경변수 : 설정값 쉘변수 (5/7) 현재설정된환경변수값을모두확인 [clickseo@localhost ~]$ env 30

환경변수 : 설정값변경 쉘변수 (6/7) $ export [ 환경변수명 ]=[ 변수값 ] ~/.bash_profile 내의변수값설정 / 변경 사용예 [clickseo@localhost ~]$ export HISTSIZE=500 HISTSIZE 환경변수 1000 --> 500 으로변경 31

쉘변수 (7/7) 쉘의지역변수 이름 내용 $$ 쉘의 PID $0 쉘스크립트이름 $1 $n 명령어의 n번째인수 $* 명령어의모든인수목록 32

GNU Bash 쉘프로그래밍 : 제어흐름 33

쉘프로그래밍 (1/9) 조건문 산술비교연산자 비교연산자 설명 A eq B A ne B A gt B A lt B A ge B A le B 양변이같은지검사양변이다른지검사 A가 B보다큰지검사 A가 B보다작은지검사 A가 B보다크거나같은지검사 A가 B보다작거나같은지검사 34

조건문 : 선택문 쉘프로그래밍 (2/9) if ~ then if 조건 then fi 명령문 #!/bin/bash man=10 woman=20 if [ $man -lt $woman ] then echo woman fi 35

조건문 : 다중선택 if ~ then ~ elif ~ else 쉘프로그래밍 (3/9) #!/bin/bash man=10 woman=20 if [ $man -lt $woman ] then echo woman elif [ $man -eq $woman ] then echo same else echo man fi 36

조건문 : 다중선택 case 쉘프로그래밍 (4/9) ;; <-- C 에서의 break 와의미가같다. case $ 변수 in 패턴1: 명령문1;; esac 패턴 n: 명령문 n;; 37

쉘프로그래밍 (5/9) 반복문 : for for 문 지정된변수는 in 뒤에나오는문자를순서대로한단어씩받고, do 이후에나오는명령문을입력받은문자가없을때까지반복수행한다. for 변수 in list1 list2 list3 do 명령문 done #!/bin/bash for i in n e n i o n do echo $i done 38

반목문 : while while 문 쉘프로그래밍 (6/9) 해당조건을만족하는동안 do 이후에나오는명령문을반복수행한다. while 조건문 do 명령문 done #!/bin/bash loop=1 while [ $loop -lt 5 ] do echo This is a while test $loop let loop=loop+1 done 39

반복문 : until until 문 쉘프로그래밍 (7/9) 해당조건을만족할때까지 do 이후에나오는명령문을반복수행한다. until 조건문 do 명령문 done #!/bin/bash loop=10 until [ $loop -lt 5 ] do echo This is a until test $loop let loop=loop-1 done 40

함수 (Function) 쉘프로그래밍 (8/9) 함수 : 서브루틴으로, 어떤동작들이구현된코드블록 function 함수명 { 명령문 } #!/bin/bash function exam1 { exit } function exam2 { echo Excute Function!! } exam2 exam1 echo Final 41

쉘프로그래밍 (9/9) 디버깅 디버깅이란? 컴퓨터프로그램이나하드웨어장치에서잘못된부분, 즉버그를찾아서수정하거나또는에러를피해나가는처리과정 #!/bin/bash -x 42

참고문헌 [1] 이종원, IT CookBook, 우분투리눅스 ( 개정판 ) : 시스템 & 네트워크, 한빛아카데미, 2018. [2] 백창우, 유닉스리눅스프로그래밍필수유틸리티, 한빛미디어. 2010. [3] "GNU Operating System", Free Software Foundation(FSF), 2018 of viewing the site, https://www.gnu.org/. 이강의자료는저작권법에따라보호받는저작물이므로무단전제와무단복제를금지하며, 내용의전부또는일부를이용하려면반드시저작권자의서면동의를받아야합니다. Copyright Clickseo.com. All rights reserved. 43