본문으로 바로가기

post by WHITEHATS

웹기반 정보보안 엔지니어 과정 160220 13번째 강의 - 3


15.SHELL

이거부터 하자!

밑줄 뜨면 맞는거임 !!

컨트롤 c종료!



15.shell

•shell(명령어 해석기)
     - 커널과 직접적으로 연결되어 사용자가 프로그램으로 실행시킨 명령어를 해석하여그 결과를 커널에 전달하는 역할을 수행 함
     - 다양한 종류가 있으며 사용자의 목적에 따라 선택하여 사용 함
     - Linux의 기본 shell → bash shell

•지원되는 shell 확인
     - [root@localhost~]# cat /etc/shells

•현재 사용중인 shell 확인
     - [root@localhost ~]# echo $SHELL
     




15.shell의 종류

•Bourne Shell
     - bell 연구소에서 개발한 최초의 대중화된 Unix
     - 오랜 기간 동안 Unix의 표준 shell이었으나 차후 개발된 shell에 비해 기능이 부족 함

•C Shell(csh)
     - 버클리 대학에서 개발
     - Bourne shell과 호환은 되지만 기본적인 구조가 다르며 C언어와 비슷한 면이 있음
     - 명령어 모드에서 다양한 기능을 제공하기 때문에 Unix의 기본 shell로 많이 사용 됨

•Korn Shell(ksh)
     - AT&T 사에서 개발
     - Bourne Shell과 C Shell의 기능을 포함하며 더욱 강력한 기능을 제공하는 Shell
     - Unix에서 많이 사용 됨

•TC Shell(tcsh)
     - Ken greer가 C shell의 기능을 확장하여 개발
     - C shell의 기본 기능을 제공하며 명령 행 편집 기능을 제공 함

•Bourne Again Shell(bash)
     - 현재 Linux의 기본 shell이며 가장 범용적으로 사용 됨
     - Bourne shell의 기능 추가, 발전 시킴
     - C shell, Korn shell에서 제공하는 기능들도 상당수 지원 됨



15.shell 변경

•일시적 변경
     - 명령어를 이용하여 사용자가 직접 실행
     - [root@localhost ~]# /bin/[shell 이름]
     - 일시적인 변경이므로 취소가 가능 함 → exit

•고정 변경
     - /etc/passwd 파일의 계정의 기본 shell 정보 수정
     - usermod –s 명령을 이용하여 수정
     - chsh 명령어로 수정



15.shell에서 지원하는 기능

•기본기능
     - 명령어 완성 기능 → tab키 사용
     - 명령어 history 기능
     - 메타문자 지원
          -- 특정 프로그램에서 위해 문자가 가진 원래의 의미 외 다른 의미로 정의해서 사용하는 문자
          


          





15.shell에서 지원하는 기능 - redirection

•redirection
     - 표준 입력 또는 출력의 방향을 변경 함
     


•사용법
     


     


     


     

     
     


     

     에러의 방향을 1번으로 따라가겠다!!

     

     
     

     
15.shell의 변수

•변수
     - 가변적인 데이터를 저장하는 메모리 공간
     - 변수의 이름은 일반적으로 대문자를 사용 함
     - 첫 글자는 알파벳 또는 _(언더바) 만 사용 가능 함
     - 문자열은 “” , ‘’ 로 지정해야 함

•지역 변수
     - 하나의 shell에서만 사용 가능한 공간
     - [root@localhost~]# 변수명=값

•환경 변수
     - 모든 shell에서 사용 가능한 공간
     - [root@localhost ~]# export 변수명=값
     - [root@localhost ~]# set 변수명=값


15.shell의 변수 관리 명령어

•변수 값 확인
     - 모든 변수 값 확인
          -- [root@localhost ~]# declare
     - 환경변수 확인
          -- [root@localhost ~]# env


          -- [root@localhost ~]# printenv
     - 지정한 변수 값 확인
          -- [root@localhost ~]# echo $[변수 이름]
     

     




15.shell의 프롬프트 변경

•프롬프트 기본 형식
      - [사용자@호스트명 현재디렉터리]#($)

•PS1 환경변수 변경
     - [root@localhost ~]# export PS1=“프롬프트 형식”
     

     

     
     

     
     

     지금 이 설정은 일시적인 설정이다. 재부팅하면 원래대로 돌아옴!

     


15.shell의 변수 관리 명령어

•환경변수를 지역변수로 변경
     - [root@localhost ~]# export –n [환경변수 이름]
     - [root@localhost ~]# declare –n [환경변수 이름]

•변수 삭제
     - [root@localhost ~]# unset [변수명]




15.shell의 환경설정 파일

•/etc/profile
     -시스템의 환경 설정과 시작 프로그램 설정
     -Linux 시스템 전반에 적용되는 환경변수 설정
     -$PATH, $USER, $LOGNAME, $MAIL, $HOSTNAME, $HISTSIZE 등    
     -bash shell을 시작할 때 읽어 옴

•/etc/bashrc
     -사용자의 alias, umask, 프롬프트 형식 설정

•~/.bash_profile
     -사용자의 환경설정

•~/.bashrc
     -사용자의 alias 및 함수 설정

•~/.bash_histroty
     -입력된 명령어 저장, HISTFILESIZE 환경 변수를 통해 크기 설정 가능

•파일 실행 순서
     -/etc/profile → ~/.bash_profile → ~/.bashrc




16.shell script (자동실행명령파일)

•script language
     - 배치언어(자동실행언어) = 작업 제어언어 = 다이나믹 언어
     - 프로그램 코드를 별도의 처리과정(컴파일) 없이 특정 프로그램이 명령을 실시간으로 한 줄씩 실행시켜주는 프로그램
     - 처리과정이 필요 없으므로 빨리 결과를 확인할 수 있는 장점이 있음
     - 실시간성이 강조되는 웹 응용 프로그램 개발에 많이 사용 됨

•script language 종류
     - shell script, 배치 파일, JavaScript, actionsciprt, python, Rubi, Perl, ASP, PHP, JSP, node.js 등

•shell script
     - shell에 의해 명령이 처리되는 프로그램




16.shell script 기본예제 - 1

•파일 이름 → test1.sh
     - [root@localhost ~]# vim test1.sh

     

     샵에 느낌표 이어서 오면 그 옆에 나오는 프로그램으로 아래 명령어를 처리해야 한다.

•확인
     - [root@localhost ~]# ./test1.sh

     


     vim으로 볼때 하늘색은 지역변수이다!
     

     read는 표준입력을 요구하는 것임.

     

     
     





16.shell script 기본 예제 - 2

•파일 이름 → test2.sh
     - [root@localhost ~]# vim test2.sh
     


•연산
     - `expr $[변수명] [연산자] $[변수명]`
     - ` 문자 → tab 키 위쪽 문자

•확인
     - [root@localhost ~]# ./test2.sh
     
     

          
     


     


     





16.shell script 제어문

•제어문
     - 프로그램의 실행 흐름을 제어하는 문법
     - 명령의 실행순서를 제어 함

•조건문
     - 특정 조건에 명령을 실행 시키고 싶지 않을 때 사용
     - 조건의 결과가 참 또는 거짓으로만 구분됨(참 → 실행, 거짓 → 생략)
     - 문법 → if [조건식] then 실행명령 fi

     


•반복문
     - 특정 조건에 만족할 때(참) 명령을 원하는 횟수만큼 반복
     - 조건의 결과가 참 또는 거짓으로만 구분됨(참 → 실행, 거짓 → 생략)
     - 문법 → while [조건식] do 실행명령 done
     



16.shell script 제어문 예제

•파일 이름 → test3.sh
     - [root@localhost ~]# vim test3.sh
          
     


•확인
     -[root@localhost ~]# ./test3.sh




16.shell script 실습(해보자 주말숙제!!)

•파일 이름 → test4.sh
     - [root@localhost ~]# vim test4.sh

     •사용자 계정 생성 프로그램 제작
     •사용자 명, UID 입력 받아 사용자 계정 생성
     •잘 생성되었는지 passwd에서 사용자 확인
     •사용자가 사용자 명에 0를 입력하면 프로그램 종료(그 전까지는 반복)

•문자열 비교
     - 조건에 [ 조건 ] 대신 [[ 조건 ]] 사용
     - -gt, -lt ... 대신 기호 사용 (>, <, = , != ...)




하얀모자 whitehat



}