소개

이 실습에서는 클래식한 "Hello, World!" 메시지를 출력하는 간단한 셸 스크립트를 만드는 과정을 안내합니다. 리눅스와 같은 유닉스 계열 운영체제에서 널리 사용되는 Bash 셸을 활용하여 셸 프로그래밍의 기초를 배우게 됩니다. 이 과정은 초보자를 위해 설계되었으므로, 프로그래밍이나 명령줄 인터페이스 (CLI) 사용이 처음이더라도 걱정하지 마세요.

이 실습은 단계별 안내를 통해 학습과 실습을 돕는 가이드형 랩 (Guided Lab) 입니다. 각 단계를 주의 깊게 따라가며 직접 경험을 쌓아보세요. 통계에 따르면 이 실습은 중급 난이도로 분류되며, 80%의 완료율을 기록하고 있습니다. 또한 학습자들로부터 99%의 긍정적인 평가를 받았습니다.

WebIDE (VS Code) 소개

이 셸 스크립팅 과정에서는 Visual Studio Code(VS Code) 기반의 WebIDE 를 사용합니다. 이 통합 개발 환경은 스크립트 편집과 터미널 접속을 한곳에서 편리하게 처리할 수 있게 해줍니다.

참고로 WebIDE 의 기본 셸은 Zsh 이지만, 이 실습에서는 Bash 스크립트를 작성할 것입니다. Bash(Bourne Again SHell) 는 유닉스 계열 시스템에서 가장 흔히 쓰이는 표준 셸입니다. Zsh(Z Shell) 는 Bash 의 기능을 확장하고 개선한 버전입니다. 이번 실습에서는 스크립트 상단에 셔뱅 (shebang) 라인 (#!/bin/bash) 을 명시하여 Bash 를 사용하도록 지정할 것이므로, 두 셸의 차이점이 작업에 영향을 주지는 않습니다.

WebIDE 접속하기

실습을 시작하면 브라우저에 WebIDE 인터페이스가 나타납니다. 주요 구성 요소는 다음과 같습니다:

  1. 파일 탐색기 (왼쪽 사이드바): 디렉토리 구조와 파일을 보여줍니다.
  2. 에디터 (중앙 영역): 스크립트를 작성하고 수정하는 공간입니다.
  3. 터미널 (하단 패널): 명령어를 입력하고 스크립트를 실행하는 곳입니다.

터미널 열기

WebIDE 에서 터미널을 여는 방법은 다음과 같습니다:

  1. 상단 메뉴에서 "Terminal"을 클릭합니다.
  2. 드롭다운 메뉴에서 "New Terminal"을 선택합니다.

그러면 WebIDE 하단에 새 터미널 패널이 열립니다. 다음과 같은 형태의 명령 프롬프트가 보일 것입니다:

labex:project/ $

이는 현재 labex 사용자로 로그인되어 있으며, 현재 작업 디렉토리가 ~/project(/home/labex/project의 줄임표 표현) 임을 의미합니다.

터미널 사용하기

WebIDE 터미널 인터페이스 예시

이 터미널은 일반적인 리눅스 시스템의 터미널과 동일하게 사용할 수 있습니다. 예를 들어, 현재 디렉토리에 어떤 파일들이 있는지 확인하려면 다음과 같이 입력합니다:

ls

입력 후 Enter 키를 누르면 현재 위치에 있는 모든 파일과 디렉토리 목록이 표시됩니다.

셸 스크립트 파일 생성하기

이제 셸 스크립트를 작성할 새 파일을 만들어 보겠습니다. 터미널에서 touch 명령어를 사용하겠습니다. touch 명령어는 빈 파일을 생성하거나 기존 파일의 접근 및 수정 시간을 업데이트할 때 사용합니다.

터미널에 다음 명령어를 입력하고 Enter 키를 누르세요:

touch hello.sh

이 명령어는 현재 디렉토리에 hello.sh라는 이름의 빈 파일을 생성합니다. .sh 확장자는 셸 스크립트임을 나타내기 위해 관례적으로 사용하지만, 필수 사항은 아닙니다.

터미널 touch 명령어 예시

명령어를 실행한 후 별다른 메시지가 출력되지 않을 것입니다. 유닉스 계열 시스템에서는 아무런 출력이 없는 것이 보통 명령이 성공적으로 수행되었음을 의미합니다.

또는 WebIDE 인터페이스를 사용하여 파일을 만들 수도 있습니다:

  1. 파일 탐색기의 /home/labex/project 디렉토리 영역에서 마우스 오른쪽 버튼을 클릭합니다.
  2. 컨텍스트 메뉴에서 "New File"을 선택합니다.
  3. 파일 이름으로 hello.sh를 입력하고 Enter 키를 누릅니다.

이렇게 하면 hello.sh 파일이 생성되고 에디터에서 자동으로 열립니다.

셸 스크립트 편집하기

파일을 만들었으니 이제 내용을 채워 넣을 차례입니다. WebIDE 의 내장 에디터를 사용하겠습니다.

파일이 에디터에 열려 있지 않다면 다음을 수행하세요:

  1. 파일 탐색기에서 hello.sh를 더블 클릭하여 엽니다.

에디터에 다음 두 줄을 보이는 그대로 정확하게 입력하세요:

#!/bin/bash
echo 'Hello, World!'

각 줄의 의미는 다음과 같습니다:

  1. #!/bin/bash - 이를 "셔뱅 (shebang)" 라인이라고 부릅니다. 시스템에게 이 스크립트를 실행할 때 어떤 해석기 (interpreter) 를 사용해야 하는지 알려줍니다. 여기서는 Bash 셸을 지정했습니다.
  2. echo 'Hello, World!' - 이 줄은 echo 명령어를 사용하여 화면에 "Hello, World!"라는 텍스트를 출력합니다.

내용을 모두 입력했다면 Ctrl + S를 누르거나 상단 메뉴의 File > Save 를 클릭하여 파일을 저장하세요.

스크립트에 실행 권한 부여하기

스크립트를 실행하기 전에, 해당 파일을 실행 가능한 상태로 만들어야 합니다. 유닉스 계열 시스템에서 파일은 읽기, 쓰기, 실행 권한을 가집니다. 기본적으로 새로 생성된 파일에는 실행 권한이 부여되지 않습니다.

스크립트를 실행 가능하게 만들려면 chmod("change mode"의 약자) 명령어를 사용합니다. 터미널에 다음 명령어를 입력하고 Enter 키를 누르세요:

chmod +x hello.sh

명령어의 구성 요소는 다음과 같습니다:

  • chmod: 파일 권한을 변경하는 명령어입니다.
  • +x: "실행 (execute) 권한을 추가"하라는 의미입니다.
  • hello.sh: 권한을 변경할 대상 파일의 이름입니다.

명령이 성공하면 터미널에 아무런 메시지도 나타나지 않습니다.

스크립트 실행하기

이제 스크립트가 실행 가능한 상태가 되었으므로 직접 실행해 보겠습니다. 현재 디렉토리에 있는 스크립트를 실행할 때는 파일 이름 앞에 ./를 붙입니다. ./는 시스템에게 현재 디렉토리에서 해당 파일을 찾으라고 알려주는 역할을 합니다.

터미널에 다음 명령어를 입력하고 Enter 키를 누르세요:

./hello.sh

모든 과정을 올바르게 마쳤다면 다음과 같은 결과가 출력될 것입니다:

Hello, World!
터미널 스크립트 실행 결과

축하합니다! 여러분의 첫 번째 셸 스크립트를 성공적으로 실행했습니다.

스크립트 내용 확인하기

마지막 단계로, 스크립트 파일의 내용을 다시 한번 확인해 보겠습니다. 파일의 내용을 터미널에 바로 출력해 주는 cat 명령어를 사용하겠습니다.

터미널에 다음 명령어를 입력하고 Enter 키를 누르세요:

cat hello.sh

작성했던 스크립트 내용이 화면에 나타날 것입니다:

#!/bin/bash
echo 'Hello, World!'

스크립트 작업을 할 때 자신의 작업 내용을 다시 한번 점검하는 습관을 들이는 것이 좋습니다.

요약

이 실습을 통해 간단한 Bash 셸 스크립트를 성공적으로 생성하고 실행해 보았습니다. 여러분이 배운 내용은 다음과 같습니다:

  1. WebIDE 인터페이스 탐색 및 통합 터미널 사용법
  2. touch 명령어 또는 WebIDE 인터페이스를 이용한 새 스크립트 파일 생성
  3. WebIDE 내장 에디터를 이용한 파일 편집
  4. 셸 스크립트에서 셔뱅 (shebang) 라인의 역할 이해
  5. 텍스트 출력을 위한 echo 명령어 사용법
  6. chmod 명령어를 이용한 스크립트 실행 권한 부여
  7. 명령줄에서 셸 스크립트 실행하기
  8. cat 명령어를 이용한 파일 내용 확인

이러한 기초 기술은 유닉스 계열 환경에서 더 복잡한 셸 스크립팅과 자동화 작업을 수행하기 위한 토대가 됩니다. 학습을 계속해 나가면서 셸 스크립팅이 시스템 관리와 작업 자동화에 얼마나 강력하고 유연하게 쓰이는지 깨닫게 될 것입니다.

프로그래밍에서 가장 중요한 것은 연습입니다. 스크립트를 수정하여 다른 메시지를 출력해 보거나, 간단한 다른 작업을 수행하는 새 스크립트를 만들어 보세요. 두려워하지 말고 실험해 보세요. 그것이 바로 배움의 과정입니다!