셸 스크립트에서 이진 파일을 만드는 방법

셸 스크립트에서 이진 파일을 만드는 방법

2022-10-18 last update

5 minutes reading shell binary command
Linux 시스템으로 작업하는 동안 우리는 매일 많은 명령을 사용했습니다. 대부분의 명령은/bin,/sbin,/usr/bin,/usr/sbin 등의 디렉토리에서 바이너리 형식으로 사용할 수 있습니다. 시스템 관리자 또는 학생으로서 우리는 적은 작업을 수행하거나 자동화하기 위해 많은 쉘 스크립트를 작성했습니다. 이 문서는 쉘 스크립트의 바이너리 파일을 생성하는 데 도움이 될 것이므로 아무도 스크립트의 소스 코드를 볼 수 없으며 우리는 이를 명령으로 사용할 수 있습니다. 스크립트에서 바이너리 파일을 생성하기 위해 Francisco Javier Rosales García에 의해 작성된 SHC 컴파일러를 사용합니다. 이를 수행하려면 아래 단계를 따르십시오.

1단계 – 전제 조건

먼저 SHC 컴파일러에 필요한 패키지를 설치해야 합니다. Ubuntu, Debian 및 LinuxMint의 경우
sudo apt-get install libc6-dev 
CentOS, RHEL 및 Fedora의 경우
sudo yum install glibc-devel

2단계 – SHC 다운로드 및 설치

SHC 컴파일러의 최신 소스 코드를 공식 웹페이지에서 다운로드합니다. 또는 아래 명령을 사용하여 시스템에서 추출하십시오.
cd /usr/src
wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9.tgz
sudo tar xzf shc-3.8.9.tgz
이제 시스템에서 SHC 소스 코드를 컴파일하고 다음 명령을 사용하여 설치하십시오.
cd shc-3.8.9
make
make install

3단계 – 셸 스크립트 만들기

요구 사항에 따라 쉘 스크립트를 생성하거나 이미 생성했다면 이 단계를 건너뛰자. 이 기사에서는 명령줄 매개변수에 지정된 정수 값을 추가하고 그 합계를 표시하는 샘플 스크립트를 아래에 만들었습니다.
vim script.sh
#!/bin/bash

total=0

for i in [email protected]; do
   if [ ! -z "${i##[0-9]*}" ]; then
	echo "Please enter numeric only"
	exit 1
   fi
   total=$(($total + $i))
done

if [ $total -eq 0 ]; then
    echo "Plesae execute script like: $0 10 20 30"
    exit 0
fi

echo $total

4단계 – 스크립트 바이너리 생성

이 단계에서 우리는 SHC 컴파일러를 설치했고 script.sh라는 쉘 스크립트를 가지고 있습니다. 다음 명령을 사용하여 스크립트의 바이너리 파일을 만듭니다.
shc -T -f script.sh
위의 명령은 현재 디렉토리에 두 개의 파일을 생성합니다. 하나는 스크립트의 C 언어 형식인 script.sh.x.c입니다. 두 번째는 이진 형식이 될 script.sh.x입니다.

5단계 – 바이너리 스크립트 테스트:

바이너리 형식의 스크립트를 열려고 하면 사람이 읽을 수 있는 형식이 아님을 알 수 있습니다. 이제 이 스크립트를/usr/bin 디렉토리 아래로 이동하여 시스템의 어느 곳에서나 사용할 수 있습니다. 또한 파일 이름에서 .sh.x를 제거하십시오. 따라서 간단한 이름으로 사용할 수 있습니다. 또한 모든 사람에게 실행 권한을 설정합니다
mv script.sh.x /usr/bin/script
chmod +x /usr/bin/script
. 이제 시스템의 어느 곳에서나 'script' 명령을 입력합니다. 쉘 스크립트와 동일한 결과를 볼 수 있습니다.
script 10 20 30 

60