Linux Shell Script

wooni·2023년 5월 3일
0

Linux

목록 보기
6/6

Shell Script

  • 쉘에서 실행되는 스크립트 언어로, 터미널에서 작성하거나 실행할 수 있습니다.
  • 쉘 스크립트는 일련의 명령어를 담고 있으며, 일반적으로 반복적인 작업이나 복잡한 프로세스를 자동화하고 시스템 관리에 사용됩니다
  • 다양한 종류의 쉘이 있지만, 가장 일반적인 것은 Bash 쉘입니다.
  • script 실행시 alias, hisory는 확장 job control은 disable됩니다.
  • single quote 문자는 그대로 출력합니다.
  • 대입연산은 공백 X / 비교연산은 공백 O
  • script 종료시 exit
  • 함수종료시 return
  • double quote에서 escape되는 문자들 " , $, ', \, newLine
  • (()) - 수학기호, [[]] - 문자열, [는 명령어, []-키워드

Shell Script 다른특징

  • 확장성: 쉘 스크립트는 여러 가지 리눅스 명령어, 제어문, 변수, 함수 등을 사용할 수 있습니다. 이로 인해 다양한 용도로 사용할 수 있으며, 다른 프로그래밍 언어와 유사한 기능을 제공합니다.

  • 이식성: 쉘 스크립트는 거의 모든 리눅스 배포판에서 실행할 수 있으며, 다른 운영 체제에서도 실행할 수 있습니다. 따라서 플랫폼 간 호환성을 보장합니다.

  • 유연성: 쉘 스크립트는 다른 스크립트와 함께 사용할 수 있습니다. 이는 여러 작업을 동시에 처리하거나, 다른 스크립트에서 사용되는 함수를 호출하는 등의 기능을 제공합니다.

  • 자동화: 쉘 스크립트는 자동화된 프로세스와 작업을 실행하는 데 사용됩니다. 이는 작업의 수행 시간을 단축하고, 반복적인 작업을 자동화하여 인적 오류를 최소화하는 데 도움이 됩니다.

  • 디버깅: 쉘 스크립트는 스크립트에서 오류가 발생할 경우 디버그하기 쉽습니다. 이는 스크립트가 매우 복잡한 경우 오류를 찾는 데 도움이 됩니다.

  • 보안: 쉘 스크립트는 적절하게 보호되지 않은 경우 보안 위험을 초래할 수 있습니다. 따라서 쉘 스크립트를 작성할 때 보안을 고려하는 것이 중요합니다.

bash shell 간단예제

  1. 함수예제
#!/bin/bash

# 두 수를 더하는 함수
add() {
  sum=$(( $1 + $2 ))
  echo "The sum of $1 and $2 is $sum"
}

# 두 수를 곱하는 함수
multiply() {
  product=$(( $1 * $2 ))
  echo "The product of $1 and $2 is $product"
}

# 두 수를 입력받고 더하기, 곱하기 함수 호출
echo "Enter two numbers: "
read num1 num2
add $num1 $num2
multiply $num1 $num2
  1. 조건문 예제
#!/bin/bash

# 사용자 입력 받기
echo "Enter a number: "
read num

# 조건문
if [ $num -eq 0 ]
then
    echo "The number is zero."
elif [ $num -gt 0 ]
then
    echo "The number is positive."
else
    echo "The number is negative."
fi
  1. 반복문 예제
#!/bin/bash

# 반복문 - for 문
for i in {1..5}
do
    echo "The value of i is: $i"
done

# 반복문 - while 문
j=1
while [ $j -le 5 ]
do
    echo "The value of j is: $j"
    j=$((j+1))
done

# 반복문 - until 문
k=1
until [ $k -gt 5 ]
do
    echo "The value of k is: $k"
    k=$((k+1))
done
  1. case문
#!/bin/bash

# 사용자 입력 받기
echo "Enter a number between 1 and 3: "
read num

# case문
case $num in
    1)
        echo "You entered one."
        ;;
    2)
        echo "You entered two."
        ;;
    3)
        echo "You entered three."
        ;;
    *)
        echo "Invalid input. Please enter a number between 1 and 3."
        ;;
esac
  1. continue, break 예제
#!/bin/bash

# continue 예제
for i in {1..5}
do
    if [ $i -eq 3 ]
    then
        continue
    fi
    echo "The value of i is: $i"
done

# break 예제
j=1
while [ $j -le 5 ]
do
    if [ $j -eq 3 ]
    then
        break
    fi
    echo "The value of j is: $j"
    j=$((j+1))
done
  1. select문 예제
#!/bin/bash

# select문
echo "Select a color: "
select color in red green blue
do
    case $color in
        red)
            echo "You selected red."
            ;;
        green)
            echo "You selected green."
            ;;
        blue)
            echo "You selected blue."
            ;;
        *)
            echo "Invalid selection. Please try again."
            ;;
    esac
    break
done
  1. shift문 예제
#!/bin/bash

# shift 예제
echo "The arguments are: $1 $2 $3"
shift
echo "The arguments are now: $1 $2 $3"

Stream editor - sed

  • 텍스트 스트림을 조작하여 특정 문자열의 검색 및 치환, 텍스트 파일에서 특정 패턴을 검색하여 처리하는 등의 작업을 수행
  • sed는 일반적으로 쉘 스크립트나 다른 유틸리티 프로그램에서 호출되어 사용

sed의 주요 특징

  • 빠른 처리: sed는 대용량의 텍스트 파일도 빠르게 처리할 수 있습니다.

  • 편리한 검색 기능: 정규 표현식을 사용하여 검색 기능을 제공합니다.

  • 치환 기능: 텍스트 스트림에서 문자열을 치환하는 기능을 제공합니다.

  • 다른 유틸리티와 호환성: 다른 유틸리티와 함께 사용하여 텍스트 처리 작업을 자동화할 수 있습니다.

  • 자동화: sed는 스크립트를 작성하여 자동화된 처리 작업을 수행할 수 있습니다.

  • 이식성: sed는 유닉스 계열의 운영 체제에서 사용할 수 있으며, 이식성이 높습니다.

간단예제

  • test.txt
apple banana
cherry banana
kiwi orange
  • 위 파일에서 "banana"를 "grape"로 바꾸고 싶다면, sed 명령어를 사용하여 다음과 같이 처리할 수 있다.
sed 's/banana/grape/g' test.txt > output.txt
  • 해당 명령어는 test.txt 파일에서 "banana"를 "grape"로 바꾸는 작업을 수행합니다. 이때, 's/'는 치환(substitute) 명령어를 의미하며, 'g'는 전역(global) 옵션으로, 해당 라인에서 모든 패턴을 대상으로 처리하도록 지시합니다. 결과적으로 output.txt 파일에는 다음과 같은 내용이 출력됩니다.
apple grape
cherry grape
kiwi orange

awk

  • 텍스트 파일을 레코드(줄)로 처리하고, 필드(열)로 구분하여 각각의 필드에 대해 조작을 수행합니다
  • 명령줄에서 실행되며, 일반적으로 다른 유틸리티와 함께 사용하여 텍스트 처리 작업을 자동화합니다.

awk 특징

  • 빠른 처리: awk는 대용량의 텍스트 파일도 빠르게 처리할 수 있습니다.

  • 편리한 검색 기능: 정규 표현식을 사용하여 검색 기능을 제공합니다.

  • 강력한 필드 처리 기능: 텍스트 파일의 각 필드를 독립적으로 처리할 수 있습니다.

  • 다른 유틸리티와 호환성: 다른 유틸리티와 함께 사용하여 텍스트 처리 작업을 자동화할 수 있습니다.

  • 자동화: awk는 스크립트를 작성하여 자동화된 처리 작업을 수행할 수 있습니다.

  • 이식성: awk는 유닉스 계열의 운영 체제에서 사용할 수 있으며, 이식성이 높습니다.

자주 사용되는 작업

  • 파일 내의 특정 패턴을 검색하고 해당 패턴을 가지고 있는 라인을 출력합니다.
  • 파일 내의 필드 값을 추출하거나, 필드 값을 조작하여 새로운 필드 값을 생성합니다.
  • 파일 내의 통계를 계산하고, 통계 결과를 출력합니다.

간단예제

  • test.txt
apple,100
banana,200
cherry,300
  • 이 파일에서 각 라인의 첫 번째 필드와 두 번째 필드 값을 출력하고 싶다면, awk 명령어를 사용하여 다음과 같이 처리할 수 있습니다.
awk -F ',' '{print $1, $2}' test.txt
  • 위 명령어는 ','(쉼표)를 구분자로 사용하여 각 라인의 필드 값을 구분하고, 첫 번째 필드와 두 번째 필드 값을 출력합니다. 결과적으로 다음과 같은 내용이 출력됩니다.
apple 100
banana 200
cherry 300
profile
Backend

0개의 댓글