Linux를 자동화하기 위해 Bash 스크립트를 작성하는 방법

리눅스 사용자에게 Bash 스크립팅은 매우 유용한 기술입니다. 초보자라 할지라도 이 기술을 익히는 것은 시스템을 최대한 활용하는 것과 모든 작업을 수동으로 처리하는 것 사이의 엄청난 차이를 만들 수 있습니다. 이 글에서는 리눅스 시스템을 자동화하고 데스크톱 환경을 완벽하게 제어하기 위한 Bash 스크립트 작성법을 상세히 안내합니다. Bash 셸을 이용한 스크립팅의 기본 원리부터 스크립트 생성, 시스템에서 실행하는 방법, 그리고 shebang의 의미까지 꼼꼼하게 살펴볼 것입니다.

스크립트의 종류

스크립트에는 다양한 유형이 존재하지만, 주로 SH와 BASH 두 가지로 나눌 수 있습니다. 파일 확장자는 인터프리터에게 실행 방법을 알려주는 중요한 역할을 하므로 매우 중요합니다. 파일이 SH 확장자를 가진 경우, Bash뿐만 아니라 다른 셸에서도 실행이 가능합니다. 이는 리눅스의 Bash 환경에서 작성된 스크립트가 Mac, BSD와 같은 유사한 셸을 사용하는 환경에서도 실행될 수 있음을 의미합니다.

반면, BASH 확장자를 사용하는 스크립트는 Bash 환경 내에서만 실행되도록 설계되었습니다. 따라서, bash 확장자를 가진 스크립트는 리눅스의 Fish 셸이나 다른 유사한 셸에서는 실행되지 않습니다.

쉬뱅(Shebang)

일부 스크립트는 파일 확장자를 사용하지 않고, 대신 shebang을 사용하여 인터프리터가 스크립트의 목적과 실행 방법을 파악하도록 합니다. 스크립트 작성 시 shebang은 항상 첫 번째 줄에 위치해야 합니다. shebang이 없는 경우, 특히 파일 확장자가 사용되지 않는 경우에는 스크립트 실행이 거부될 수 있습니다.

shebang에 대해서는 더 깊이 파고들어야 할 내용이 많지만, 초보자라면 너무 걱정할 필요는 없습니다. shebang은 고급 Bash 사용자들이 매우 복잡한 Bash 도구를 만들 때 주로 활용됩니다. 초보자 수준에서는 표준 shebang인 #!/bin/bash만 기억하면 됩니다.

Bash 스크립트 생성

많은 초보자들이 Bash 스크립팅을 실제 프로그래밍과 혼동하는 경향이 있습니다. Bash 스크립팅의 주된 목적은 터미널 셸에서 매번 모든 코드를 입력할 필요 없이, 여러 명령어를 묶어 길고 복잡한 작업을 효율적으로 처리하는 것입니다. 만약 Bash를 이용한 본격적인 프로그래밍을 원한다면, Python과 같은 리눅스에서 사용되는 실제 프로그래밍 언어를 고려해 보는 것이 좋습니다.

스크립트 작성을 시작하려면 먼저 터미널을 열고 다음 명령어를 입력하세요.

nano myfirstbashscript

그러면 Nano 텍스트 편집기가 실행됩니다. Nano 편집기 내에서 스크립트의 첫 줄에 shebang을 추가하여 인터프리터가 스크립트의 실행 방법을 알 수 있도록 합니다.

#!/bin/bash

이제 원하는 작업을 스크립트에 추가할 수 있습니다. 예를 들어, Ubuntu 사용자라면 다음 코드를 추가하여 간단한 업데이트 스크립트를 만들 수 있습니다.

sudo apt update;sudo apt upgrade -y

또 다른 예로, 네트워크 속도가 염려되는 경우 백그라운드에서 실행되는 연속적인 ping 스크립트를 만들 수도 있습니다.

ping google.com

스크립트에 원하는 명령을 자유롭게 추가하고 창의성을 발휘해 보세요!

스크립트에 필요한 내용을 모두 추가한 후에는 CTRL + O 키를 눌러 Nano 편집기에서 저장하세요.

스크립트 파일이 생성되었다면, 이제 실행 권한을 업데이트할 차례입니다. 터미널에서 다음 명령어를 실행하세요.

sudo chmod +x myfirstbashscript

스크립트 실행

쉘 스크립트를 실행하려면 터미널을 열고 다음 명령어를 사용하세요.

sudo sh script.sh

bash 파일을 실행하려면 다음 명령어를 사용합니다.

sudo bash script.bash

또는 파일 확장자에 관계없이 모든 스크립트를 터미널에서 ./filename과 같이 간단하게 실행할 수 있습니다.

스크립트를 실행하는 세 가지 방법 모두 잘 작동하지만, bash 스크립트에 올바른 실행 권한이 설정되지 않은 경우 실행되지 않을 수 있으므로 ./filename을 사용하는 방법은 최적이 아닐 수 있습니다. 다음 명령어를 사용하여 스크립트에 실행 권한을 설정할 수 있습니다.

sudo chmod +x script

스크립트를 바이너리로 만들기

터미널에서 파일 이름을 입력하여 스크립트를 실행하려면 해당 스크립트를 바이너리 파일로 만들어야 합니다. 이렇게 하려면 chmod 명령어를 사용하여 실행 권한을 부여하세요.

sudo chmod +x

스크립트가 실행 가능하게 설정되었다면, 이제 사용자의 경로에서 액세스할 수 있도록 스크립트를 이동해야 합니다. mv 명령어를 사용하여 이 작업을 수행할 수 있습니다. 만약 원본 위치에 스크립트 백업을 유지하고 싶다면, move 명령어 대신 cp 명령어를 사용하세요.

sudo mv /location/of/script /usr/bin/

또는

sudo cp /location/of/script /usr/bin/

이제 터미널에서 스크립트 이름을 입력하기만 하면, 터미널 내 어디에서든 새롭게 이동된 스크립트를 실행할 수 있습니다. 예를 들어, YouTube-DL을 사용하여 자동 YouTube 추출 스크립트를 만들고 쉽게 액세스할 수 있도록 /usr/bin/에 배치했다고 가정해 봅시다.

해당 스크립트를 실행하려면 다음과 같이 입력하면 됩니다.

youtubescript

이것으로 끝입니다!

결론

Bash 언어를 배우는 것은 매우 유용한 일입니다. Bash가 없다면 시스템 관리자와 터미널을 자주 사용하는 사람들은 터미널에서 몇 시간 동안 묶여 있는 자신을 발견하게 될 것입니다. 대신, Bash 스크립트를 작성하여 리눅스 시스템을 자동화할 수 있습니다. Bash의 기능을 활용하는 방법을 익히면, 복잡한 작업들을 코드로 작성하고 스크립트를 통해 빠르게 실행할 수 있습니다.

쉘은 강력한 도구입니다. 쉘에 대해 더 많이 배울수록, 자신만의 리눅스 시스템과 자동화 방법, 그리고 시스템 내부 작동 방식에 대해 더 깊이 이해할 수 있게 될 것입니다. Bash에는 무한한 가능성이 있습니다. 약간의 창의력만 있다면 무엇이든 가능합니다!