Infra/OS

쉘에 대한 개념

baek-dev 2025. 2. 22. 13:26

Linux에서 **“쉘(Shell)”**은 사용자와 운영체제 커널(Kernel) 사이에서 명령을 해석하고 실행하는 인터페이스입니다.

쉘을 통해 파일 관리, 프로세스 실행, 시스템 설정 변경, 자동화 스크립트 실행 등이 가능합니다.

 

🔹 1. 쉘(Shell)이란?

✅ (1) 쉘(Shell)의 역할

사용자가 입력한 명령어를 커널(Kernel)에 전달하여 실행하는 인터페이스.

CLI(Command Line Interface, 명령줄 인터페이스) 기반으로 동작.

스크립트를 작성하여 자동화(Auto-Scripting) 가능.

 

📌 쉘을 쉽게 이해하면?

운영체제의 “명령어 해석기”

사용자 ↔ 쉘(Shell) ↔ 커널(Kernel) ↔ 하드웨어

 

✅ (2) 쉘(Shell)의 동작 과정

1. 사용자가 명령 입력 (`ls -l`)
2. 쉘(Shell)이 명령을 해석
3. 커널(Kernel)이 해당 명령을 실행
4. 실행 결과를 쉘을 통해 출력

 

🔹 2. 주요 리눅스 쉘 종류

Linux에는 다양한 쉘이 존재하며, 대표적인 쉘은 다음과 같습니다.

쉘 종류 설명
Bash (Bourne Again Shell) ✅ 가장 많이 사용되는 기본 쉘 (Linux 기본 탑재)
sh (Bourne Shell) UNIX 시스템에서 사용되던 기본 쉘 (Bash의 원조)
zsh (Z Shell) ✅ Bash보다 강력한 기능 제공 (자동완성, 테마 지원)
fish (Friendly Interactive Shell) 사용하기 쉬운 쉘 (자동완성 기능 강력)
csh (C Shell) C 언어 스타일의 문법 제공
ksh (Korn Shell) sh과 csh의 장점 결합 (성능 최적화됨)

📌 대부분의 Linux 배포판에서는 기본 쉘로 Bash를 사용하며,

👉 고급 사용자는 zsh(Oh My Zsh 플러그인) 또는 fish를 선호합니다.

 

🔹 3. 쉘 기본 명령어

✅ (1) 파일 & 디렉토리 관리

ls           # 현재 디렉토리 목록 표시
cd /home     # 디렉토리 이동
pwd          # 현재 디렉토리 확인
mkdir test   # 새 디렉토리 생성
rm file.txt  # 파일 삭제
rmdir test   # 빈 디렉토리 삭제
rm -r test   # 디렉토리 삭제 (강제)

 

✅ (2) 파일 내용 보기

cat file.txt      # 파일 내용 출력
less file.txt     # 페이지 단위로 출력 (이전/다음 페이지 이동 가능)
head -5 file.txt  # 파일의 처음 5줄 출력
tail -5 file.txt  # 파일의 마지막 5줄 출력

 

✅ (3) 프로세스 및 시스템 관리

ps aux        # 실행 중인 프로세스 목록 보기
top           # 실시간 프로세스 모니터링
kill 1234     # 특정 PID(프로세스 ID) 종료
df -h         # 디스크 사용량 확인
free -m       # 메모리 사용량 확인

 

✅ (4) 사용자 & 권한 관리

whoami        # 현재 사용자 확인
id            # 사용자 ID 확인
chmod 755 file.sh  # 파일 권한 변경
chown user file.sh # 파일 소유권 변경

 

🔹 4. 쉘 스크립트 기본 개념

✅ (1) 쉘 스크립트란?

.sh 확장자를 가지며, 여러 개의 명령어를 하나의 파일에 작성하여 실행하는 방식.

반복되는 작업을 자동화하거나, 서버 관리 작업을 효율적으로 수행하는 데 사용됨.

 

✅ (2) 쉘 스크립트 기본 구조

#!/bin/bash  # 스크립트의 첫 줄 (Bash 쉘에서 실행하도록 지정)

echo "Hello, Linux Shell!"  # 출력

# 변수 사용
name="Alice"
echo "My name is $name"

# 조건문
if [ "$name" == "Alice" ]; then
    echo "Hello, Alice!"
else
    echo "Who are you?"
fi

# 반복문
for i in {1..5}; do
    echo "Number: $i"
done

 

📌 쉘 스크립트 실행 방법

chmod +x script.sh  # 실행 권한 부여
./script.sh         # 실행

 

🔹 5. 리다이렉션 & 파이프라인 (I/O 리디렉션)

✅ (1) 리다이렉션 (> >> <)

echo "Hello" > file.txt   # 파일에 쓰기 (덮어쓰기)
echo "World" >> file.txt  # 파일에 추가하기
cat < file.txt            # 파일 읽기

 

✅ (2) 파이프 (|)

ls -l | grep "log"  # `ls -l`의 결과에서 "log"가 포함된 줄만 출력
ps aux | sort -k4   # 실행 중인 프로세스를 CPU 사용량 기준으로 정렬

📌 리다이렉션(> <)은 입력/출력을 파일로 연결, 파이프(|)는 명령어의 출력을 다른 명령어의 입력으로 전달.

 

🔹 6. 환경 변수 & 쉘 설정

✅ (1) 환경 변수 사용

echo $HOME   # 현재 사용자 홈 디렉토리
echo $PATH   # 실행 가능한 파일이 저장된 경로 목록
export MY_VAR="Hello"  # 환경 변수 설정

 

✅ (2) .bashrc / .bash_profile 수정 (셸 설정 파일)

nano ~/.bashrc    # bash 설정 파일 편집
source ~/.bashrc  # 변경 사항 적용

📌 쉘 시작 시 실행되는 스크립트 설정을 변경하면 편리하게 커스터마이징 가능.

 

🔹 7. 쉘 프로그래밍 활용 예제

✅ (1) 자동 백업 스크립트

#!/bin/bash
tar -czvf backup.tar.gz /home/user/documents
echo "Backup completed!"

 

✅ (2) 시스템 모니터링 스크립트

#!/bin/bash
echo "CPU & Memory Usage:"
top -b -n1 | head -10

 

✅ (3) 특정 문자열이 포함된 로그 찾기

#!/bin/bash
grep "ERROR" /var/log/syslog > error_logs.txt

 

🔥 결론

쉘(Shell)은 사용자가 운영체제와 상호작용하는 인터페이스로, 명령어 실행 및 스크립팅을 지원.

Bash가 가장 많이 사용되며, zsh, fish 등의 고급 쉘도 존재.

쉘 스크립트를 사용하면 반복 작업을 자동화할 수 있으며, 시스템 관리 및 서버 운영에 필수적.

I/O 리디렉션(>, <)과 파이프라인(|)을 활용하면 명령어를 조합하여 강력한 작업 수행 가능.

환경 변수와 쉘 설정을 조정하여 개발 환경을 최적화할 수 있음.

 

쉘 변수는 현재 프로세스에서만 사용 가능

영구적으로 변수를 쓰려면 환경변수에 저장해야함

📌 Linux 쉘을 잘 다루면, 서버 관리 및 자동화 작업이 훨씬 쉬워짐! 🚀

 

 

 

 

출처 : ChatGPT

'Infra > OS' 카테고리의 다른 글

리눅스 명령어  (0) 2025.02.23