Taeyoung Kim

Cloud & Platform

쉘 스크립트 학습 내용 정리

쉘 스크립트 학습 내용 정리 학습 내용을 정리한 백필 노트입니다.

이 글은 2025년 학습 기록을 블로그 형식으로 정리한 백필 노트입니다.

챕터 1: 쉘 스크립트 기초 실습

  • 주요 개념:
    • 쉘(Shell): 사용자와 컴퓨터 운영체제 사이의 통역사.
    • 쉘 스크립트(Shell Script): 쉘이 실행할 명령어들을 순서대로 적어놓은 파일.
    • 쉬뱅(Shebang): 스크립트 첫 줄의 #!/bin/bash와 같은 부분으로, 스크립트를 실행할 쉘 프로그램을 지정합니다.
  • 핵심 기술:
    • .sh 확장자를 가진 쉘 스크립트 파일 생성 (touch).
    • 파일에 실행 권한 부여 (chmod +x 파일명).
    • 스크립트 실행 방법 2가지 (./스크립트명, bash 스크립트명).
  • 실습 프로젝트:
    • hello.sh 파일을 만들어 "Hello, Shell Script!" 메시지를 출력하는 스크립트 작성 및 실행.
  • 주요 명령어:
    • echo, ls, cd, pwd, touch, nano, cat, chmod

챕터 2: 변수 및 환경 변수 실습

  • 주요 개념:
    • 변수(Variable): 데이터를 저장하는 이름표 붙은 상자. 이름=값 형태로 선언하며, 사용할 때는 $이름 형식으로 사용합니다. (주의: = 기호 양쪽에 공백 없음)
    • 환경 변수(Environment Variable): 운영체제와 모든 프로그램이 공유하는 시스템 전체 설정값. (예: $HOME, $PATH, $USER)
  • 핵심 기술:
    • 변수 선언 및 사용.
    • date, whoami, pwd 같은 명령어의 실행 결과를 $(명령어) 구문을 사용해 변수에 저장.
    • 주요 환경 변수의 의미를 이해하고 값 확인.
  • 실습 프로젝트:
    • my_first_script.sh 파일을 만들어 이름, 학습 시간 등의 정보를 변수에 담고, 명령어 실행 결과를 변수에 저장하여 출력.
  • 주요 문법 및 명령어:
    • 변수명="값", echo "$변수명", 변수명=$(명령어), printenv

챕터 3: 입출력 및 명령줄 인수 실습

  • 주요 개념:
    • 입력(Input): 사용자로부터 정보를 받는 것.
    • 출력(Output): 사용자에게 정보를 보여주는 것.
    • 명령줄 인수(Command-line Arguments): 스크립트 실행 시 파일 이름 뒤에 추가로 전달하는 값.
  • 핵심 기술:
    • 화면에 글자 출력 (echo, printf).
    • 사용자로부터 키보드 입력받기 (read 변수명).
    • 스크립트 실행 시 전달된 인수를 특수 변수로 받아서 활용.
  • 실습 프로젝트:
    • interactive_script.sh 파일을 만들어 사용자에게 이름, 좋아하는 색 등을 물어보고 입력받은 값으로 메시지를 만드는 대화형 스크립트 작성. 명령줄 인수를 통해 정보를 미리 전달받는 기능도 추가.
  • 주요 변수 및 명령어:
    • read, echo -n, printf, $1 (첫 번째 인수), $2 (두 번째 인수), $@ (모든 인수), $# (인수의 총 개수)

챕터 4: 조건문 실습

  • 주요 개념:
    • 조건문(Conditional Statement): 특정 조건이 참인지 거짓인지에 따라 다른 명령을 실행하도록 코드의 흐름을 제어하는 문법.
  • 핵심 기술:
    • if, elif, else를 사용한 조건문 작성.
    • 숫자 비교 연산자 (gt, ge, lt, le, eq, ne) 사용.
    • 파일 및 디렉토리 존재 여부를 확인하는 파일 테스트 연산자 (f, d, e) 사용.
  • 실습 프로젝트:
    • my_condition_script.sh 파일을 만들어 사용자에게 숫자를 입력받아 양수, 0, 음수를 판별하고, 특정 파일과 폴더의 존재 여부를 확인하여 다른 메시지를 출력.
  • 주요 문법:
    • if [ 조건 ]; then ... elif [ 다른조건 ]; then ... else ... fi

챕터 5: 반복문 실습 (for)

  • 주요 개념:
    • 반복문(Loop): 정해진 횟수나 목록의 각 항목에 대해 특정 작업을 반복 실행하는 문법.
    • for 루프: 정해진 목록(숫자 범위, 파일 목록, 문자열 목록 등)의 각 항목에 대해 반복할 때 주로 사용.
  • 핵심 기술:
    • 숫자 범위를 반복하는 방법 ({1..5}).
    • 특정 패턴(.txt)에 해당하는 파일 목록을 반복.
    • 문자열 목록을 반복.
    • 반복문을 활용한 파일 일괄 생성, 내용 추가, 복사 등 배치 처리.
  • 실습 프로젝트:
    • loop_practice.sh 파일을 만들어 1부터 5까지의 숫자를 반복하며 파일을 생성하고, 생성된 모든 .txt 파일에 내용을 추가하는 자동화 스크립트 작성.
  • 주요 문법:
    • for 변수 in 목록; do ... done

챕터 6: 반복문 실습 (while)

  • 주요 개념:
    • while 루프: 특정 조건이 '참(True)'인 동안 계속해서 작업을 반복 실행. 조건이 '거짓(False)'이 되면 중단.
  • 핵심 기술:
    • 조건을 만족하는 동안 반복하는 while 루프 작성.
    • break: 반복문을 즉시 중단하고 탈출.
    • continue: 현재 반복을 건너뛰고 다음 반복으로 진행.
    • while read 구문을 사용하여 파일 내용을 한 줄씩 읽어 처리.
    • IFS 변수를 사용하여 CSV 파일처럼 구분자로 나뉜 데이터 처리.
  • 실습 프로젝트:
    • my_while_script.sh 파일을 만들어 숫자 카운팅, break/continue 활용, names.txt 파일 내용을 한 줄씩 읽어 출력하는 스크립트 작성.
  • 주요 문법:
    • while [ 조건 ]; do ... done, break, continue, while read 변수; do ... done < 파일명

챕터 7: 함수 및 모듈화 실습

  • 주요 개념:
    • 함수(Function): 특정 작업을 수행하는 코드 묶음에 이름을 붙인 것. 코드 재사용성, 가독성, 관리 용이성을 높여줌.
    • 인수(Argument): 함수를 호출할 때 함수에게 전달하는 입력값. 함수 내에서는 $1, $2 등으로 접근.
  • 핵심 기술:
    • function 함수이름 { ... } 형태로 함수 정의.
    • 함수 이름과 인수를 나열하여 함수 호출.
    • 함수의 실행 결과를 echo로 출력하고, 호출 부분에서 $(함수이름) 구문으로 캡처하여 변수에 저장.
  • 실습 프로젝트:
    • my_functions.sh 파일을 만들어 단순 인사, 이름을 받아 인사, 현재 시간을 알려주는 함수 등을 정의하고 호출.
  • 주요 문법:
    • function 함수이름 { ... }, 함수이름 인수1 인수2, local 변수명, 결과변수=$(함수이름)

챕터 8: 3일차 종합 실습

  • 목표: 이전에 배운 모든 개념(변수, 입출력, 조건문, 반복문 등)을 종합하여 실용적인 메뉴 기반 유틸리티 제작.
  • 핵심 기술:
    • while true 무한 루프를 사용해 프로그램이 계속 실행되도록 구성.
    • clear 명령으로 화면을 정리하여 사용자 경험 개선.
    • read로 사용자 메뉴 선택을 입력받음.
    • case 문을 사용하여 사용자의 선택에 따라 다른 기능을 실행.
    • exit 명령으로 프로그램을 정상 종료.
  • 실습 프로젝트:
    • my_utility.sh 파일을 만들어 사용자에게 메뉴(디스크 사용량, 메모리 사용량, 프로세스 확인, 종료)를 보여주고, 선택에 따라 해당 시스템 정보를 출력하는 유틸리티 완성.
  • 주요 문법:
    • while true; do ... done, case $변수 in 패턴1) ... ;; 패턴2) ... ;; *) ... ;; esac, exit