Unix / Linux - Shell은 무엇인가요?
안녕하세요, 열정적인 프로그래머 되고자 하는 여러분! Unix와 Linux 셸의 fascineting 세계로 인도해드리는 여정에 환영합니다. 여러분의 친절한 이웃 컴퓨터 과학 교사로서, 이 기본 개념을 안내해드리는 것을 기쁜 마음으로 생각합니다. 시작해보겠습니다!
셸은 무엇인가요?
다른 언어를 사용하는 친구와 소통하려고 할 때, 통역사가 필요하죠? 셸은 여러분과 컴퓨터의 운영 체제 간의 통역사입니다. 셸은 명령어 라인 인터프리터로, 여러분의 인간이 읽을 수 있는 명령어를 컴퓨터가 이해하고 실행할 수 있는 것으로 변환합니다.
제가 교육의 초창기에 있을 때는 학생들에게 셸을 마법의 소리 나는 조개로 생각하도록 가르쳤습니다. 여러분이 귀소리로 명령어를 전달하면, 컴퓨터가 여러분의 명령을 따르는 것입니다. 이 설명은 완전히 정확하지는 않지만, 개념을 기억에 오래 남게 하기에 충분했습니다!
셸 프롬프트
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)"
이를 해부해보겠습니다:
-
#!/bin/bash
: 이는 shebang입니다. 시스템에 어떤 인터프리터를 사용할 것인지 알립니다 (이 경우 bash). -
echo
: 이 명령어는 텍스트를 화면에 출력합니다. -
$(date)
과$(pwd)
: 이는 명령어 치환입니다. 괄호 안의 명령어를 실행하고 그 출력을 echo 문장에 삽입합니다.
이 스크립트를 실행하려면:
-
hello_world.sh
로 저장합니다. - 실행 가능하게 만듭니다:
chmod +x hello_world.sh
- 실행합니다:
./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
이 스크립트는 다음을 수행합니다:
- 사용자의 이름과 나이를 묻습니다
- 변수를 사용하여 이 정보를 저장하고 사용합니다
- 조건문을 사용하여 나이를 확인합니다
- 투표 연령에 도달하기까지 남은 연수를 계산합니다
코드를 배우는 것은 자전거 타는 것과 같습니다.처음에는 몇 번이고 넘어질 수 있지만, 연습을 하면 곧 달릴 수 있을 것입니다!
이 셸 소개가 여러분의 관심을 끌기를 바랍니다. 계속 탐구하고, 질문을 하고, 가장 중요한 것은 계속 코딩을 하세요! 누가 알겠는가? 어쩌면 여러분이 다음 세대의 프로그래머들에게 셸의 마법적인 세계를 가르치는 사람이 될지도 모릅니다!
Credits: Image by storyset