'Shell'에 해당되는 글 2건

반응형

셸 스크립트 작성 방법


첫 번째 줄에 사용할 셸을 명시한다. 기본적인 bash를 사용하는 경우
#!/bin/bash
두 번째 줄부터는 셸 스크립트 명령등 구문을 시작한다.
작성후 755 권한 등 실행 파일로 만들어 줘야한다.
실행하기 위해서는 디렉터리 위치에서 ./파일명.sh 로 실행한다. 현재 위치를 정하지 않으면 PATH 에 등록된 디렉터리에서 검색한다.

실행 권한을 주지 않을 경우 sh 파일이름.sh으로 명령하거나 source 파일이름.sh 혹은 . 파일이름.sh로 실행 할 수 있다.

셸 프로그래밍 문법


주석

'#'을 앞에 붙여 주석문을 작성 할 수 있다.
사용법

#!/bash/sh

# Auth : shyun

# Work : NULL

# TODO : add work 코드 작성

변수

셸에서 변수형은 문자열만 가지며 자료형 선언이 필요없다
변수명=값

연산자,피연산자 사이에는 공백이 있어선 안되며 변수명의 경우에 -을 제외한 특수문자나 숫자로 시작할 수 없다.
변수 사용의 응용

${변수명} : 변수의 값으로 치환한다.

${변수명:=값} : 변수가 null이면 값을 할당하여 저장하고, 값이 있으면 그 값을 사용한다.

${변수명:?값} : 변수가 null이 아니면 그 값을 사용하고, 없으면 error를 내면서 값을 보여준다.

${#변수명} : 변수의 문자열 길이를 반환한다.

${변수명:offset} : 변수에서 ofset만큼 삭제 후 리턴

${변수명:offset:length} : 변수에서 offset만큼 삭제 후 length만큼 리턴

 

Argument 호출변수
함수 foo(x,y) 에서 x,y를 파라미터라고 한다. 여기서 foo(3,4)호출시 3,4가 아규먼트가 된다. 셸에서 여러 호출법을 알아보자

$0 : 실행된 셸 스크립트 명

$1 : 첫 번째 아규먼트

$2 : 두 번째 아규먼트

$# : 아규먼트의 개수

$$ : 셸 스크립트의 PID

$? : 실행 뒤 return 값. 참 0 거짓 1

$- : 현재 셸 호출 시 사용한 옵션

 

셸 변수 확인과 설정

set : 셀 변수를 모두 출력하는 명령어

env : 셸 환경변수만 출력하는 명령어

export : 변수의 범위를 환경 데이터 공간으로하여 자식프로세스에서도 사용할 수 있게 저장 (마치 전역변수 처럼 가능)

unset : 선언된 변수 제거

 

echo 문
-e 옵션으로 escape 문자를 사용할 수 있다.

\f : Formfeed. 앞 문자열만큼 열을 밀어 이동시킴

\n : 라인 개행

\r : 캐리지 리턴. 개행후 뒷 문자만큼 앞문자를 대체하여 작성

\t : 탭 만큼 띄움

조건식

두 개체를 비교하는 조건식으로 '[' 와 ']' 사이에 공백이 필수이다.
[ 표현식 ]


문자열 비교

[ 문자열 ] : null이 아니라면 참

[ 문자열1 = 문자열2 ] : 두 문자열이 같다면 참

[ 문자열1 != 문자열2 ] : 두 문자열이 다르면 참

[ -n 문자열 ] : 문자열이 null 이 아니라면 참

[ -z string ] : 문자열이 null 이면 참

 

산술 비교

[ expr -eq expr1 ] : 두 표현식 값이 같다면 참

[ expr -ne expr1 ] : 두 표현식 값이 같지 않다면 참

[ expr -gt expr1 ] : > 이면 참

[ expr -ge expr1 ] : >= 이면 참

[ expr -lt expr1 ] : < 이면 참

[ expr -le expr1 ] : <= 이면 참

[ expr -a expr1 ] : and 의 결과 둘 다 참이면 참

[ expr -o expr1 ] : or 의 결과, 둘 중 하나가 참이면 참조건문

 

조건문

if 

타언어의 if문과 같은 조건문으로 참이라면 then 부분을 실행하고 그렇지 않으면 else 부분을 실행한다. if로 시작하여 fi로 끝난다.
if [ 조건 ]
then
   코드
else
   코드1
fi

 

case문

문자열과 일치하는 정규식을 찾아 해당하는 정규식 다음 명령어를 실행시킨다. 

오른쪽 괄호와 세미콜론은 반드시 필요하며, esac로 끝난다.

case 마지막은 *)로 해당하지 않는 모든 경우를 처리한다.

case 문자열

in

    정규식) 명령어;;

    정규식1) 명령어;;

    정규식2) 명령어;;

    *) 명령어;; 혹은 처리문

esac

 

select문

콘셸이나 Bash에만 존재하는 구문으로 나열시 사용

in의 값들이 항목으로 된 메뉴를 자동으로 생성한다. 변수에 사용자가 선택한 값을 저장한다.

select 변수 in 값, 값1...

    do

       처리문

    done

 

반복문

for 문

지정된 값 안에서 루프 수행 각 값이 변수에 담기며 마지막 값까지 실행된다.

for 변수 in 값, 값1...

    do

       처리문

    done

while 문

조건이 참일 동안 do 이하의 문장 실행

while 조건문

    do

      처리문

    done

until 문

조건이 거짓일 동안만 루프 수행 while 과 반대

until 조건문

    do

      처리문

    done

함수

함수 이름()

{

      처리문

}

 

또는

 

function 함수이름

{

    처리문

}


 

반응형
블로그 이미지

Runer

IT / 일상 / 먹방 / 꿀팁 / 유틸

,
반응형

셸이란?


커널과 사용자간 다리 역할을 하는것. 사용자로부터 명령을 받아 해석하고 실행하는 역할.
리눅스는 본셸(sh)을 기본으로 ksh와 csh 장점을 결합한 bash를 표준으로 한다.

  • sh : 본셸(Bourne Shell) 1977년 AT&T 벨 연구소에 근무하는 스티븐 본이 개발한 유닉스 버전 7의 기본 셸
  • bash : 1989년 브라이언 폭스가 GNU 프로젝트를 위해 개발한 배시셸. 본셸을 기반으로 만들어졌다.
  • csh : C 셸 1978년 버클리 대학의 빌 조이가 개발. C 언어를 기반으로 만들어졌다. 히스토리 기능, Alias 기능, 작업 제어 등 유용한 기능들을 포함하였다.
  • tcsh : 1975년 켄 그리어가 티넥스 운영체제에 명령행 완성 기능을 반영하고 csh와 통합해서 탄생
  • ksh : 콘셸(Korn Shell) 198년 AT&T 벨 연구소에 근무하는 데이비드 콘이 개발. sh를 확장해서 만들어졌다. 작업 제어, Alias, 히스토리 기능 및 vi와 같은 명령행 편집 기능, 명령행 완성 기능 등을 제공한다.

셸 확인
echo $SHELL
셸 변경
chsh 입력 후 변경하려는 셸의 절대 경로
변경 가능한 셸 확인 chsh -l
사용자 셸 정보 확인
/etc/passwd 의 7번째 필드 내용

셸에선 0 : 참 1 : 거짓

셸 환경 설정


  • 셸 변수 : 특정한 셸에서만 적용되는 변수 '변수명=값' 으로 선언 'echo $변수명' 으로 확인
  • 환경 변수 : 약속으로 정해진 변수명을 사용하고 bash에서는 PATH, SHELL 등과 같이 대문자로 지정되어있다. env 환경변수리스트확인

환경 변수


미리 정해진 환경 변수 목록

  • HOME : 사용자 홈 디렉터리
  • PATH : 실행 파일을 찾는 디렉터리 경로
  • LANG : 셸 사용 시 기본으로 지원되는 언어
  • PWD : 현재 작업 디렉터리
  • SHELL : 사용자 로그인 셸
  • USER : 사용자 이름
  • PS1 : 프롬프트 변수
  • PS2 : 2차 프롬프트 변수
  • HISTFILE : 히스토리 파일의 절대 경로
  • HISTSIZE : 히스토리 파일에 저장되는 개수
  • HISTFILESIZE : 히스토리 파일 크기
  • HOSTNAME : 시스템 호스트명
  • TMOUT : 미사용시 로그아웃 타임
  • UID : 사용자 UID

명령어 History


history 명령어 입력시 히스토리 리스트를 출력하며 기록 리스트는 .bash_history 라는 파일에 기록된다. 명령어 '!'로 대체할 수 있다.
명령문

  • !! : 마지막에 사용한 명령어 실행
  • !n : n번째 사용한 명령 실행
  • !-n : 사용한 명령 목록에서 역으로 n번째
  • !문자열 : 최근에 사용한 명령 중 '문자열'로 시작하는 명령 실행
  • !?문자열? : 최근에 사용한 명령 중 '문자열'을 포함하고 있는 명령 실행
  • ^문자열1^문자열2 : 마지막 명령문의 '문자열1'을 '문자열2'로 대체하여 실행

그룹 명령 실행


  • : : 한 줄에 여러 명령 나열 실행, 입력 순서대로 순차 처리
  • || : 논리적 OR, 앞 명령이 성공이면 결과 출력, 실패시 뒤 명령을 실행하여 출력
  • && : 논리적 AND, 앞 명령이 성공해야 뒤 명령 실행

tee


파이프 연결 출력을 두 갈래로 나눌 때 사용되는 명령. 이것도하고 다음것도 하고
tee [option] [파일]

  • i : 인터럽트 무시
  • a : 덮어쓰지 않고 내용 뒤에 추가

ex) ll | tee test.txt |more
ll 결과를 text.txt에 쓰고 more로 화면에도 출력

산술 연산


expr 명령으로 산술 연산 가능

expr 값 연산자 값
연산자 목록 : +, -, *, /, %

* 사용시 이스케이프 문자를 사용해야한다. $[ ]를 사용하면 가독성이 좋다.
echo $[ 값 연산자 값 ]

셸 설정 파일, 디렉터리


  • /etc/profile : 모든 사용자에 적용되는 환경 변수와 시작 관련 프로그램 설정
  • ~/.bash_profile : 개인 사용자에 적용되는
  • /etc/bashrc : 모든 사용자에 적용되는 alias와 함수 설정
  • ~/.bashrc : 개인 사용자에 적용되는
  • ~/.bash_logout : 개인 사용자가 로그아웃 할 때 수행되는것 설정
  • /etc/profile.d/ : 응용 프로그램에서 시작할때 설정을 위한 스크립트가 위치하는 디렉터리

 

반응형
블로그 이미지

Runer

IT / 일상 / 먹방 / 꿀팁 / 유틸

,