첫 번째 스크립트 만들기

LinuxBeginner
지금 연습하기

소개

자동화의 세계에 오신 것을 환영합니다!

요리사라고 생각해 보세요. 매번 모든 요리를 기억에 의존해 직접 만드는 대신 레시피를 적어 둡니다. 그러면 주방 직원이 이 레시피를 따라 요리를 완벽하게 반복해서 만들 수 있으므로, 모든 과정을 직접 감독할 필요가 없습니다.

Linux 에서 스크립트는 레시피와 같습니다. 셸이 읽고 순서대로 실행할 수 있는 명령이 들어 있는 일반 텍스트 파일입니다. 이는 Unix 와 Linux 시스템에서 가장 오래되고 중요한 자동화 방식 중 하나입니다.

현대적인 구성 관리 도구가 등장하기 훨씬 전부터 관리자들은 반복 작업을 자동화할 수 있는 가벼운 방법이 필요했기 때문에 셸 스크립팅이 널리 사용되었습니다. 오늘날에도 많은 운영 환경에서 설정, 유지 관리, 문제 해결을 위해 작은 셸 스크립트를 사용합니다.

이 입문 실습에서는 첫 번째 레시피를 직접 작성합니다. 다음 작업을 수행합니다.

  1. 초안 작성: 스크립트 파일을 만듭니다.
  2. 작성: 지침 (명령) 을 추가합니다.
  3. 권한 부여: 파일이 실행되도록 권한을 부여합니다.
  4. 실행: 새 프로그램을 실행합니다.

스크립트 파일 만들기

먼저 레시피를 작성할 빈 종이가 필요합니다. Linux 에서 스크립트는 일반 텍스트 파일일 뿐입니다.

Linux 는 파일 확장자 사용을 강제하지 않지만, 셸 스크립트의 이름에 .sh를 붙이는 것은 유용한 습관입니다. Linux 자체는 파일 확장자보다 파일 내용과 권한을 더 중요하게 판단하지만, .sh를 사용하면 사람이 파일의 용도를 빠르게 알아볼 수 있습니다.

이것은 중요한 Unix 의 개념입니다. 파일은 보통 이름보다 파일에 무엇이 들어 있고 어떤 권한이 설정되어 있는지로 식별됩니다. 스크립트는 그래픽 마법사가 만든 특별한 파일 형식이 아닙니다. Bash 와 같은 프로그램이 한 줄씩 읽을 수 있는 일반 텍스트일 뿐입니다.

프로젝트 디렉터리에 hello.sh라는 빈 파일을 만들어 보겠습니다.

현재 올바른 위치에 있는지 확인합니다.

pwd

이제 touch 명령을 사용합니다. 이 명령은 빈 종이를 꺼내는 것과 같습니다.

touch hello.sh

파일이 제대로 생성되었는지 확인합니다.

ls

출력에 hello.sh가 표시되면 다음 지시를 기다리는 파일이 생성된 것입니다.

스크립트 내용 작성하기

이제 실제 레시피를 작성합니다. 먼저 특별한 헤더를 추가해야 합니다.

스크립트를 편지라고 생각해 보세요. 편지를 올바른 사람에게 보내려면 수신인을 지정해야 합니다. Linux 에서는 스크립트의 첫 번째 줄이 누가 이 파일을 읽어야 하는지 시스템에 알려 줍니다. 이 줄을 Shebang(#!) 이라고 합니다.

스크립트를 Bash 셸이 읽도록 /bin/bash를 지정합니다. 그리고 간단한 지침인 echo도 추가합니다. 이 명령은 컴퓨터에 내용을 화면에 출력하도록 지시합니다.

shebang 은 가장 오래되고 실용적인 Unix 규칙 중 하나입니다. 스크립트를 프로그램으로 실행하면 운영 체제가 첫 번째 줄을 읽고 어떤 인터프리터가 파일을 처리할지 결정합니다. 인터프리터는 미리 컴파일된 바이너리를 직접 실행하는 대신 지침을 읽고 실행하는 프로그램입니다.

nano 편집기로 빈 파일을 엽니다.

nano hello.sh

이제 다음 두 줄을 표시된 그대로 입력합니다.

#!/bin/bash
echo "Hello LabEx"

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

  • #!/bin/bash: "주소 라벨"입니다. Linux 에 "이 지침을 Bash 프로그램으로 보내 주세요."라고 알려 줍니다.
  • echo "Hello LabEx": "지침"입니다. Bash 에 화면에 Hello LabEx를 출력하라고 지시합니다.

shebang 이 없어도 bash hello.sh처럼 bash로 명시적으로 실행하면 스크립트가 작동하는 경우가 있습니다. 이때는 사용자가 인터프리터를 직접 선택하기 때문입니다. 하지만 ./hello.sh처럼 파일을 직접 실행할 때는 shebang 이 파일을 어떤 프로그램이 처리해야 하는지 시스템에 알려 주는 표준 방법입니다.

저장하고 종료하기:

  1. 저장하려면 Ctrl + O를 누릅니다.
  2. 확인하려면 Enter를 누릅니다.
  3. 종료하려면 Ctrl + X를 누릅니다.

cat으로 파일을 읽어 입력한 내용이 올바른지 다시 확인합니다.

cat hello.sh

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

레시피를 작성했지만 지금은 종이에 적힌 내용일 뿐입니다. Linux 에는 엄격한 보안 정책이 있어서, 텍스트 파일에 명시적으로 권한을 부여하지 않으면 프로그램으로 실행할 수 없습니다. 덕분에 장보기 목록을 실수로 코드처럼 실행하는 일을 막을 수 있습니다.

실행할 수 있도록 잠금을 해제하는 "열쇠"가 필요합니다. 권한 (모드) 을 변경하는 명령은 chmod입니다. 추가할 권한은 +x(execute, 실행 권한 추가) 입니다.

이 명령은 파일의 내용을 전혀 변경하지 않습니다. Linux 가 각 파일에 대해 저장하는 메타데이터의 일부인 모드 비트를 변경합니다. 즉, chmod +x는 스크립트를 더 "스크립트답게" 만드는 것이 아니라, 이 파일을 프로그램으로 실행할 수 있다고 시스템에 알리는 명령입니다.

스크립트에 실행 권한을 부여합니다.

chmod +x hello.sh

권한이 제대로 변경되었는지 파일 정보를 다시 확인합니다.

ls -l hello.sh

왼쪽의 권한을 확인합니다. x가 표시되어야 합니다 (예: -rwxr-xr-x). 터미널 설정에 따라 파일 이름이 녹색으로 표시될 수도 있습니다. 이는 해당 파일을 실행할 수 있음을 나타냅니다.

스크립트 실행하기

이제 결과를 확인할 차례입니다. 레시피를 실행해 보겠습니다!

현재 디렉터리에 있는 스크립트를 실행하려면 경로를 정확히 지정해야 합니다. hello.sh만 입력해서는 안 됩니다. 반드시 ./hello.sh를 입력해야 합니다.

  • .은 "현재 디렉터리"를 의미합니다.
  • /는 경로 구분자입니다.

따라서 ./hello.sh는 문자 그대로 "현재 폴더 안에 있는 hello.sh라는 파일을 실행하라"는 뜻입니다.

이 부분은 많은 초보자를 놀라게 합니다. 셸은 보통 명령 이름만 입력했을 때 PATH 변수에 등록된 디렉터리만 검색합니다. 보안을 위해 현재 디렉터리는 일반적으로 자동으로 검색하지 않습니다. 그래서 ./가 중요합니다. 셸에 다른 위치에서 명령을 찾으라고 하는 대신, 실행할 파일의 경로를 명시하는 것입니다.

스크립트를 실행합니다.

./hello.sh

모든 작업이 올바르게 진행되었다면 컴퓨터에 다음과 같이 출력됩니다.

Hello LabEx

축하합니다! 이제 단순한 Linux 사용자를 넘어 Linux 프로그래머가 되었습니다. 첫 번째 자동화 스크립트를 만들고, 실행 권한을 부여하고, 실행하는 데 성공했습니다.

요약

잘했습니다! 이제 중요한 능력 하나를 갖추었습니다.

이번에 배운 "스크립팅 작업 흐름"을 정리해 보겠습니다.

  1. 초안 작성: touch 또는 편집기를 사용해 파일을 만듭니다.
  2. 코드 작성: #!/bin/bash 헤더와 명령을 추가합니다.
  3. 잠금 해제: chmod +x를 사용해 Linux 가 파일을 실행하도록 허용합니다.
  4. 실행: ./scriptname.sh로 실행합니다.

작은 작업처럼 보이지만, 웹 서버부터 슈퍼컴퓨터까지 모든 대규모 자동화 시스템 설정도 이와 같은 간단한 스크립트에서 시작합니다.