이 문서는 Google Cloud Translation API를 사용해 자동 번역되었습니다.
어떤 문서는 원문을 읽는게 나을 수도 있습니다.
Linux 셸은 작업 자동화를 위한 강력한 도구이며 개발자의 작업을 훨씬 쉽게 해줍니다. 이 기사에서는 쉘 스크립팅의 기본 사항과 작업에 어떻게 도움이 되는지 살펴보겠습니다.
셸은 운영 체제와 상호 작용할 수 있는 명령줄 인터프리터입니다. Linux에서 기본 셸은 Bash(Bourne Again Shell)입니다.
쉘 스크립트는 단순히 텍스트 파일에 저장된 일련의 쉘 명령입니다. 명령 프롬프트에 이름을 입력하여 셸 스크립트를 실행할 수 있습니다.
셸 스크립팅은 그렇지 않으면 수동으로 수행해야 하는 작업을 자동화하는 좋은 방법입니다. 예를 들어 디렉토리에 있는 모든 파일을 나열하고 싶다고 가정해 보겠습니다. 명령 프롬프트에 ls
를 입력하여 수동으로 이 작업을 수행할 수 있지만 수천 개의 디렉토리에 대해 이 작업을 수행해야 하는 경우 쉘 스크립트를 작성하는 것이 훨씬 빠를 것입니다.
쉘 스크립트의 또 다른 일반적인 용도는 반복 작업을 자동화하는 것입니다. 예를 들어, 다른 인수를 사용하여 동일한 명령을 반복해서 실행해야 하는 경우 쉘 스크립트를 작성하여 수행할 수 있습니다.
셸 스크립트는 백업과 같이 정기적으로 실행해야 하는 작업을 자동화하는 좋은 방법이기도 합니다. cron
과 같은 도구를 사용하여 매일, 매주 또는 매월 실행되도록 쉘 스크립트를 예약할 수 있습니다.
쉘 스크립트는 일련의 쉘 명령을 포함하는 단순한 텍스트 파일입니다. nano
또는 vi
와 같은 텍스트 편집기를 사용하여 새 셸 스크립트를 만들 수 있습니다.
현재 디렉토리에 있는 모든 파일을 나열하는 간단한 셸 스크립트를 만들어 봅시다. 먼저 nano
로 새 텍스트 파일을 엽니다.
nano list-files.sh
이제 파일에 다음을 입력하십시오.
#!/bin/bash
ls
파일을 저장하고 nano
를 종료합니다.
셸 스크립트를 실행 가능하게 만들려면 chmod
명령을 사용하여 권한을 변경해야 합니다.
chmod +x list-files.sh
이제 이름을 입력하여 쉘 스크립트를 실행할 수 있습니다.
./list-files.sh
현재 디렉토리에 있는 모든 파일 목록이 표시되어야 합니다.
쉘 스크립트의 각 행이 수행하는 작업을 살펴보겠습니다.
# !/bin/bash
는 shebang이라고 합니다. 스크립트를 실행하는 데 사용할 인터프리터를 쉘에 알려줍니다.ls
명령은 현재 디렉토리에 있는 모든 파일을 나열합니다.쉘 스크립트는 변수를 사용하여 데이터를 저장하고 스크립트를 보다 유연하게 만들 수 있습니다.
변수를 만들려면 이름과 값만 지정하면 됩니다. 예를 들어 값이 bar
인 변수 foo
를 만들려면 명령 프롬프트에 다음을 입력합니다.
foo=bar
이제 $
기호를 사용하여 변수 값에 액세스할 수 있습니다. 예를 들어 foo
변수의 값을 인쇄하려면 다음을 입력합니다.
echo $foo
쉘 스크립트에서 변수를 사용할 수도 있습니다. 변수를 사용하도록 list-files.sh
스크립트를 수정해 봅시다.
먼저 나열하려는 디렉토리를 저장할 변수를 생성해 보겠습니다.
directory=/path/to/directory
이제 쉘 스크립트에서 $directory
변수를 사용할 수 있습니다.
#!/bin/bash
ls $directory
파일을 저장하고 nano
를 종료합니다.
이제 directory
변수를 사용하여 셸 스크립트를 실행할 수 있습니다.
./list-files.sh
지정된 디렉토리에 있는 모든 파일 목록이 표시되어야 합니다.
셸 스크립트는 조건을 사용하여 수행할 작업에 대한 결정을 내릴 수 있습니다.
조건부는 if
, then
및 fi
키워드를 기반으로 합니다. 예를 들어, 다음 조건문은 foo
변수가 bar
와 같은지 확인하고, 그렇다면 equal
을 출력합니다:
if [ $foo = "bar" ]; then
echo "equal"
fi
if
키워드 다음에는 대괄호([]
)로 묶인 조건이 옵니다. 조건 다음에는 then
키워드가 오고 조건이 충족되면 수행할 조치가 옵니다. 작업 다음에는 조건을 종료하는 'fi' 키워드가 옵니다.
조건문을 사용하도록 list-files.sh
스크립트를 수정해 봅시다.
먼저 나열하려는 디렉토리를 저장할 변수를 생성해 보겠습니다.
directory=/path/to/directory
이제 쉘 스크립트에서 $directory
변수를 사용할 수 있습니다.
#!/bin/bash
if [ -d $directory ]; then
ls $directory
fi
파일을 저장하고 nano
를 종료합니다.
이제 directory
변수를 사용하여 셸 스크립트를 실행할 수 있습니다.
./list-files.sh
지정된 디렉토리에 있는 모든 파일 목록이 표시되어야 합니다.
if
문에 대한 -d
옵션은 directory
변수가 디렉토리인지 확인합니다. 그렇다면 ls
명령이 실행되고 디렉토리의 내용이 나열됩니다.
쉘 스크립트는 루프를 사용하여 조건이 충족될 때까지 코드 블록을 반복할 수 있습니다.
루프는 while
및 do
키워드를 기반으로 합니다. 예를 들어 다음 루프는 1에서 10까지의 숫자를 인쇄합니다.
i=1
while [ $i -le 10 ]; do
echo $i
i=$((i+1))
done
while
키워드 뒤에는 대괄호([]
)로 묶인 조건이 옵니다. 조건 다음에는 'do' 키워드가 오고 그 뒤에 수행할 조치가 옵니다. 작업 다음에는 루프를 종료하는 done
키워드가 옵니다.
위의 예에서 변수 i
를 만들고 1로 설정합니다. i
값이 10보다 작거나 같은 동안 while
루프는 계속 실행됩니다.
루프가 실행될 때마다 i
값을 인쇄한 다음 i
를 1씩 증가시킵니다. 따라서 루프가 처음 실행될 때 i
는 1이고 두 번째 i
는 2입니다. .
쉘 스크립트는 함수를 사용하여 관련 코드를 함께 그룹화할 수 있습니다.
함수는 function
키워드를 기반으로 합니다. 예를 들어 다음 함수는 현재 날짜와 시간을 인쇄합니다.
function print-date {
date
}
function
키워드 뒤에는 함수 이름이 옵니다(이 예에서는 print-date
). 함수 본문은 중괄호({}
)로 묶습니다.
함수를 호출하려면 이름만 입력하면 됩니다. 예를 들어 print-date
함수를 호출하려면 다음을 입력합니다.
print-date
셸 스크립팅은 작업을 자동화하고 개발자의 삶을 훨씬 쉽게 만드는 좋은 방법입니다. 이 기사에서는 셸 스크립트 작성 방법, 변수, 조건문 및 루프 사용 방법, 함수 생성 방법을 포함하여 셸 스크립팅의 몇 가지 기본 사항을 살펴보았습니다.