Bash shell script에 대해서...

YOBY·2024년 1월 3일
0

Bash 쉘

Bash 쉘은 다양한 기능들을 제공하며 히스토리, 별명, 작업 제어 등을 통해 쉘의 핵심을 효과적으로 활용할 수 있습니다.
현재 Bash는 유닉스, 리눅스, macOS 등에서 널리 사용되고 있습니다.

  • 보안 기능

Bash 쉘은 내장된 보안 기능을 갖추고 있어 사용자의 입력을 정확하게 기록하고 .bash_history라는 숨겨진 파일에 저장합니다.
이를 통해 사용자를 철저하게 추적할 수 있습니다.

  • 기능적인 장점

Bash 쉘은 정수 계산을 효율적으로 수행하며, 표준 출력(stdout)과 표준 오류(stderr)를 다루는 데 강력한 기능을 제공합니다.

  • Bash 쉘의 시작 과정

Bash 쉘에서는 사용자가 자신의 환경을 정의할 수 있도록 로그인 시작 파일을 수정할 수 있습니다.


시작 파일의 종류는 다음과 같습니다:

/etc/profile: 전체 사용자에게 적용되는 환경을 설정하고 시작 프로그램을 지정할 수 있습니다.

/etc/bashrc: 전체 사용자에게 적용되는 별명과 함수를 정의할 수 있습니다.

~/.bash_profile: 각 사용자를 위한 환경을 설정하고 시작 프로그램을 지정할 수 있습니다.

~/.bashrc: 각 사용자를 위한 별명과 함수를 정의할 수 있습니다.

이렇게 각 사용자는 자신의 .bash_profile 파일을 통해 개별적인 환경을 설정할 수 있습니다.
이 파일은 사용자의 환경 변수를 정의하는 데 사용되며, 전체 사용자에게 적용되는 /etc/profile과는 별도로 사용자가 원하는 환경을 설정할 수 있습니다.


별명

  • 별명(alias):

Bash 쉘에서는 alias 명령어를 사용하여 기존 명령에 새로운 이름을 부여할 수 있습니다.

alias 이름=문자열: 문자열이 나타내는 기존 명령에 대해 새로운 이름을 정의합니다.

unalias 이름: 이름으로 정의된 별명을 해제합니다.


히스토리

  • 히스토리(history)

Bash 쉘은 사용자가 입력한 명령어를 기억하는 히스토리 기능을 제공합니다.

history [-rh][번호]: 지금까지 입력된 명령어들(히스토리)을 리스트합니다.

히스토리 기능을 활용하여 이미 실행된 명령을 간편하게 재실행할 수 있습니다.

  • 재실행 형태

!!: 바로 전 명령을 재실행합니다.
!n: 이벤트 번호가 n인 명령을 재실행합니다.
!시작문자열: 시작 문자열로 시작하는 최후 명령을 재실행합니다.
!?서브문자열: 서브 문자열을 포함하는 최후 명령을 재실행합니다.

  • 변수

쉘에서는 변수를 사용할 수 있으며, 타입 선언이 필요 없습니다. 단순 변수와 리스트 변수가 있습니다.

단순 변수: 변수이름=문자열
리스트 변수: 변수이름=(문자열1 문자열2 ...)

  • 표준입력 읽기

read 명령어를 사용하여 표준 입력에서 한 줄을 읽어 변수에 저장합니다.

read 변수1 변수2 ...: 표준 입력에서 한 줄을 읽어 변수에 순서대로 저장합니다.

  • 지역변수와 환경변수

쉘 변수는 환경변수와 지역변수로 나눌 수 있습니다.

export 명령어를 사용하여 지역변수를 환경변수로 만들 수 있습니다.

export 변수이름: 지정한 지역변수를 환경변수로 만듭니다.

  • Bash 쉘 스크립트

Bash 쉘에서는 스크립트를 작성하여 실행할 수 있습니다. 기본적인 환경 변수와 몇 가지 특수 변수들이 사용됩니다.

$0: 쉘 스크립트의 이름

$1~$9: 명령줄 인수

$*: 모든 명령줄 인수 리스트

$#: 명령줄 인수의 개수

  • 수식

비교 연산자를 사용하여 조건식을 작성할 수 있습니다. 산술, 문자열, 파일 관련 등 다양한 비교 연산이 가능합니다.


조건문

  • if 문
if 조건식
then
  명령들
else
  다른 명령들
fi

반복문

  • for 문
for 변수 in 리스트
do
  명령들
done

함수

함수이름() {
  명령들
}

디버깅

bash -vx 스크립트 [명령줄 인수]

  • shift 명령어:
    리스트 변수 내의 원소들을 왼쪽으로 이동합니다.

  • shift: 명령줄 인수들을 왼쪽으로 이동합니다.

변수 타입 선언:
declare 또는 typeset 명령어를 사용하여 변수의 타입을 선언할 수 있습니다.

declare -r 변수: 읽기 전용 변수로 선언
declare -i 변수: 정수형 변수로 선언

0개의 댓글