Unix / Linux - Shell은 무엇인가요?

안녕하세요, 열정적인 프로그래머 되고자 하는 여러분! Unix와 Linux 셸의 fascineting 세계로 인도해드리는 여정에 환영합니다. 여러분의 친절한 이웃 컴퓨터 과학 교사로서, 이 기본 개념을 안내해드리는 것을 기쁜 마음으로 생각합니다. 시작해보겠습니다!

Unix / Linux - What is Shell?

셸은 무엇인가요?

다른 언어를 사용하는 친구와 소통하려고 할 때, 통역사가 필요하죠? 셸은 여러분과 컴퓨터의 운영 체제 간의 통역사입니다. 셸은 명령어 라인 인터프리터로, 여러분의 인간이 읽을 수 있는 명령어를 컴퓨터가 이해하고 실행할 수 있는 것으로 변환합니다.

제가 교육의 초창기에 있을 때는 학생들에게 셸을 마법의 소리 나는 조개로 생각하도록 가르쳤습니다. 여러분이 귀소리로 명령어를 전달하면, 컴퓨터가 여러분의 명령을 따르는 것입니다. 이 설명은 완전히 정확하지는 않지만, 개념을 기억에 오래 남게 하기에 충분했습니다!

셸 프롬프트

Unix나 Linux 시스템에서 터미널을 열면 다음과 같은 것을 보게 됩니다:

username@hostname:~$

이것이 여러분의 셸 프롬프트입니다. 컴퓨터가 "지혜로운 사용자님, 명령을 기다립니다!"라고 말하는 것과 같습니다. 이를 해부해보겠습니다:

  • username: 여러분입니다!
  • @: "에서"를 의미합니다
  • hostname: 여러분의 컴퓨터 이름
  • ~: 현재 디렉토리 (~는 홈 디렉토리를 의미합니다)
  • $: 일반 사용자이신 것을 나타냅니다 (루트 사용자라면 #이 됩니다)

셸 종류

Unix/Linux 시스템에는 여러 종류의 셸이 사용 가능합니다. 이는 다양한 맛의 아이스크림을 가지고 있는 것과 같아요 - 모두 맛있지만, 각각 고유한 맛을 가지고 있습니다! 다음은 몇 가지 일반적인 셸입니다:

셸 이름 설명
Bourne Shell (sh) 원래 Unix 셸
Bourne Again Shell (bash) sh의 향상된 버전, Linux에서 가장 일반적
C Shell (csh) C 프로그래밍 언어와 유사한 문법
Korn Shell (ksh) sh와 csh의 기능을 결합한 셸
Z Shell (zsh) bash의 확장된 버전으로 많은 개선 사항 포함

Bash는 가장 흔하게 만나게 되는 셸이므로, 예제에서는 이 셸을 중심으로 다루겠습니다.

셸 스크립트

이제 마법이 일어나는 부분입니다! 셸 스크립트는 여러분의 컴퓨터를 위한 레시피 책과 같습니다. 명령어를 하나씩 입력하는 대신, 파일에 일련의 명령어를 작성하고 한 번에 실행할 수 있습니다. 컴퓨터에게 새로운 기술을 가르치는 것과 같습니다!

예제 스크립트

우리의 첫 번째 셸 스크립트를 만들어보겠습니다. hello_world.sh라고 부르겠습니다:

#!/bin/bash

echo "Hello, World!"
echo "셸 스크립팅의 fascineting 세계에 환영합니다!"
echo "오늘의 날짜는 $(date)"
echo "현재 디렉토리는 $(pwd)"

이를 해부해보겠습니다:

  1. #!/bin/bash: 이는 shebang입니다. 시스템에 어떤 인터프리터를 사용할 것인지 알립니다 (이 경우 bash).
  2. echo: 이 명령어는 텍스트를 화면에 출력합니다.
  3. $(date)$(pwd): 이는 명령어 치환입니다. 괄호 안의 명령어를 실행하고 그 출력을 echo 문장에 삽입합니다.

이 스크립트를 실행하려면:

  1. hello_world.sh로 저장합니다.
  2. 실행 가능하게 만듭니다: chmod +x hello_world.sh
  3. 실행합니다: ./hello_world.sh

다음과 같은 출력을 보게 될 것입니다:

Hello, World!
셸 스크립팅의 fascineting 세계에 환영합니다!
오늘의 날짜는 Mon May 15 10:30:45 PDT 2023
현재 디렉토리는 /home/username

이게 멋진 것 아닌가요? 여러분은 첫 번째 셸 스크립트를 만들었습니다!

셸 주석

주석은 코드에 남기는 작은 메모와 같습니다. 셸 스크립트에서 주석은 #로 시작합니다:

# 이는 주석입니다
echo "이 문장은 출력됩니다"
# echo "이 문장은 출력되지 않습니다"

제가 학생들에게 항상 말하는 것은, 코드를 작성할 때 주석을 달아야 한다고 합니다. 코드를 읽는 사람이 마음이 불편한 사람이라면, 명확한 주석이 생명을 구할 수 있습니다! (혹은 적어도 짜증을 덜 수 있습니다.)

확장된 셸 스크립트

셸 스크립팅에 익숙해지면 더 복잡한 스크립트를 작성할 수 있습니다. 다음은 변수, 사용자 입력, 조건문을 사용한 예제입니다:

#!/bin/bash

# 사용자의 이름을 묻습니다
echo "당신의 이름은 무엇인가요?"
read name

# 사용자를 환영합니다
echo "안녕하세요, $name! 만나서 반갑습니다."

# 사용자의 나이를 묻습니다
echo "당신의 나이는 무엇인가요?"
read age

# 사용자가 투표할 수 있는 연령인지 확인합니다
if [ $age -ge 18 ]
then
echo "당신은 투표할 수 있는 연령입니다!"
else
echo "당신은 아직 투표할 수 없는 연령입니다."
let years_left=18-$age
echo "당신은 $years_left년 후에 투표할 수 있을 것입니다."
fi

이 스크립트는 다음을 수행합니다:

  1. 사용자의 이름과 나이를 묻습니다
  2. 변수를 사용하여 이 정보를 저장하고 사용합니다
  3. 조건문을 사용하여 나이를 확인합니다
  4. 투표 연령에 도달하기까지 남은 연수를 계산합니다

코드를 배우는 것은 자전거 타는 것과 같습니다.처음에는 몇 번이고 넘어질 수 있지만, 연습을 하면 곧 달릴 수 있을 것입니다!

이 셸 소개가 여러분의 관심을 끌기를 바랍니다. 계속 탐구하고, 질문을 하고, 가장 중요한 것은 계속 코딩을 하세요! 누가 알겠는가? 어쩌면 여러분이 다음 세대의 프로그래머들에게 셸의 마법적인 세계를 가르치는 사람이 될지도 모릅니다!

Credits: Image by storyset