배쉬 vs. 파이썬 vs. 자바스크립트: 다음 중 자동화에 더 좋은 것은?

배쉬 vs. 파이썬 vs. 자바스크립트: 다음 중 자동화에 더 좋은 것은?

반응형

셸 스크립트는 Bash와 같은 명령줄 인터프리터를 위해 특별히 만들어진 소스 파일을 나타냅니다. 프로그래머들은 반복적으로 수행하는 작업을 자동화하여 생산성을 높이기 위해 Shell 스크립트를 작성하는 경우가 많습니다. 예를 들어, 파일 조작, 환경 설정, 실행 테스트복 및 배포를 위한 자동화 스크립트를 작성합니다. 또한 가상 시스템 또는 CI/CD 서비스 내에서 Shell 스크립트를 사용하여 깨끗하고 구성 가능한 테스트 실행 또는 배포를 수행할 수 있습니다. 셸 스크립트는 일반적으로 명령줄 인터프리터에서 실행됩니다. 그러나 널리 사용되는 범용 프로그래밍 언어로 Shell 스크립트를 작성해도 Shell 스크립트라고 부를 수 있습니다.

예를 들어 파이썬을 사용하여 최신 Shell 스크립트를 만들고 Bash 스크립트처럼 파이썬 인터프리터로 실행할 수 있습니다. Bash와 마찬가지로 파이썬 소스 파일 내에 다른 유닉스 프로세스를 생성할 수 있습니다. 또한 Nodejs 런타임 덕분에 JavaScript는 자동화 스크립트를 신속하게 작성할 수 있는 훌륭한 대안입니다.

Bash, Python 및 JavaScript를 사용하여 Shell 스크립트를 작성할 수 있습니다. 그러나 소프트웨어 개발의 다른 기술과 마찬가지로 이러한 기술들은 다양한 장단점을 가지고 있다. 이 이야기에서는 각 언어를 사용하여 Shell 스크립트를 만드는 방법에 대해 장단점을 설명합니다. 또한 다음 Shell 스크립트에 적합한 언어를 선택하는 방법을 설명하겠습니다.

셸 스크립트 작성에 Bash 사용

널리 사용되는 모든 운영 체제는 일반적으로 터미널 애플리케이션을 통해 CLI(명령줄 인터페이스)를 제공합니다. 터미널 애플리케이션은 Bash, Z 셸, C 셸, KornShell과 같은 특정 명령줄 인터프리터를 통해 명령을 실행합니다. 파일에 특정 명령을 넣고 선호하는 명령줄 인터프리터를 통해 실행할 수 있습니다. 즉, Bash, Z shell 등으로 Shell 스크립트를 작성할 수 있습니다. Bash는 기본적으로 거의 모든 유닉스 또는 유닉스 계열 운영 체제에 포함되어 있기 때문에 널리 사용되는 명령줄 인터프리터입니다. 따라서 Bash로 휴대용 POSIX 스크립트를 작성할 수 있습니다.

Bash를 사용하면 최소한의 문법으로 Shell 스크립트를 작성할 수 있습니다. 여러 명령을 실행해야 하는 경우 해당 명령을 한 줄 한 줄씩 Bash 스크립트에만 넣으면 됩니다. Bash는 if-else 문, 루프, 산술 연산, 함수 및 변수와 같은 기본적인 프로그래밍 개념도 지원합니다. Bash는 기본적으로 프로세스를 지원합니다. 즉, 다른 이진 파일을 명령으로 생성할 수 있습니다. 예를 들어 ping 바이너리를 실행해야 하는 경우 Bash 스크립트에 ping 명령을 쓸 수 있습니다. Bash 스크립트로 GUI를 표시하는 몇 가지 방법도 있습니다.

Bash는 범용 프로그래밍 언어가 아니라 명령 언어입니다. 따라서 자동화 스크립트의 논리가 커지면 더 복잡해지고 읽을 수 없게 됩니다. 또한 Bash는 명령 언어이기 때문에 항상 모든 것을 명령으로 처리하려고 합니다. 다음 예제를 참조하십시오.

#!/bin/bin x=10 $x # 인쇄물을 10번 반복하다 x = 10 # x: 명령을 찾을 수 없음 $x를 반향상하다

Bash에는 표준 API가 없지만 간단한 내장 기능(예: 내장 텍스트 조작)이 제공됩니다. 그러나 데이터를 처리하기 위해 프로세스를 생성해야 하는 경우가 많습니다(Remember sed?). 따라서 Bash는 자동화 스크립트를 작성하는 데 사용할 수 있는 다른 언어에 비해 성능이 매우 느립니다.

셸 스크립트 작성에 파이썬 사용

파이썬은 Bash가 환경 설정, 빌드 및 릴리스 스크립트를 작성하는 데 널리 사용되는 대안입니다. Electron 프로젝트는 몇몇 유틸리티 스크립트에 파이썬을 사용하는 것을 보았다. 파이썬에서는 명령이 아니므로 명령을 직접 실행할 수 없습니다. 그러나 명령을 실행하고 출력을 캡처하는 것은 하위 프로세스 모듈로는 식은 죽 먹기입니다. 다음 예를 보십시오.

#!/usr/bin/bin3 수입 하위 절차 = 하위 프로세스.check_output(['node', '--version', 텍스트 = True) 인쇄('노드 ' + o를 사용 중입니다)

위의 파이썬 스크립트는 컴퓨터의 현재 Nodejs 버전을 인쇄합니다. 이 스크립트는 다음 Bash 스크립트와 동일합니다.

#!/usr/bin/bin o=$(노드 --버전) 노드 $o를 사용하고 있는 에코

이제 파이썬의 내장된 기능을 사용하여 현대의 풍부한 Shell 스크립트를 작성할 수 있습니다. 그러나 파이썬 인터프리터는 Bash처럼 기본적으로 프로세스 실행을 지원하지 않습니다. 따라서 파이썬 스크립트를 좀 더 단순화해서 Bash처럼 보이게 하려면 Shellpy와 같은 도구를 사용해야 합니다. 이전 스크립트의 작업을 수행하는 다음 Shellpy 스크립트를 보십시오.

#!/usr/local/bin/shellpy3 = '노드 --버전 인쇄('Node ' + o.stout을 사용 중입니다.)

파이썬은 매우 개발자에게 친숙한 언어이다. 또한, 그것은 많은 유용한 내장 도서관과 함께 제공됩니다. 파이썬 인터프리터는 거의 모든 유닉스 계열 운영체제에 미리 설치되어 있다. 따라서 Python은 휴대용 자동화 스크립트를 작성할 때 사용할 수 있는 좋은 대안이기도 합니다.

그러나 파이썬은 다른 언어에 비해 프로그램 실행 시간이 느리다. 일부 라이브러리를 사용할 경우 파이썬은 Bash에 비해 성능이 너무 느립니다. Shellpy와 Rumbum과 같은 툴은 프로세스와 명령으로 작동하는 편리한 API를 제공합니다. 하지만 여전히 우리는 몇 가지 추가 코드를 설정하고 작성해야 합니다.

셸 스크립트 작성에 자바스크립트 사용

우리가 알다시피 자바스크립트는 웹 페이지를 약간 역동적으로 만들기 위해 웹 브라우저를 위한 스크립트 언어로 시작되었다. Nodejs 프로젝트는 자바스크립트를 브라우저 샌드박스에서 운영체제 수준으로 끌어냈다. Nodejs는 새로운 프로세스를 생성하기 위한 하위 프로세스 API를 제공했습니다. 또한 Nodejs는 파일 처리, 네트워크 및 콘솔과 함께 동작하기 위해 몇 개의 크로스 플랫폼 API를 도입했다. 이제 자바스크립트와 노드j는 모두 최신 자동화 스크립트를 만드는 데 필요한 모든 기능을 포함하고 있습니다.

Nodejs는 Python과 같은 이진 프로세스를 기본적으로 지원하지 않습니다. 그러나 하위 프로세스 API를 통해 다른 이진 실행 파일을 실행할 수 있습니다. 프로세서 아키텍처를 보여 주는 다음 예를 살펴보십시오.

#!/usr/bin/node exec = required child_process')를 선택합니다.실행하다; execarch', 함수(오류, stdout, stderr) { console.log('컴퓨터의 CPU 아키텍처는 ${stdout}'); });

위의 Nodejs 스크립트는 콜백 함수 때문에 Shell 스크립트처럼 보이지 않습니다. 따라서 간단한 Shell 스크립트처럼 보이려면 몇 가지 추가 작업을 수행해야 합니다. 구글의 zx 프로젝트는 최근 자바스크립트 기반의 셸 스크립트로 이 문제를 해결하기 위해 도입되었다. 우리는 실제로 위의 코드의 구문을 단순화하고 zx로 다음 스크립트를 작성할 수 있다.

#!/usr/bin/env zx $.close = false 아치=아치를 기다리다 console.log('컴퓨터의 CPU 아키텍처는 ${arch}')

zx 도구는 Shell 스크립트를 작성하는 데 필요한 거의 모든 기능을 제공합니다. 자바스크립트의 네이티브 JSON 지원은 풍부하고 현대적인 Shell 스크립트를 만들 수 있는 훌륭한 기능입니다. 그러나 모든 CI/CD 엔진과 널리 사용되는 Unix 또는 Unix 계열 운영 체제는 기본적으로 Nodejs 런타임과 패키지 관리자를 제공하지 않습니다.

어떤 것이 더 나을까요?

세상에는 수많은 범용 프로그래밍 언어가 있습니다. 비록 우리가 인기에 따라 그 언어들의 순위를 매기지만, 전반적인 특징에 따라 순위를 매길 수는 없다. 만약 최고의 프로그래밍 언어라고 불리는 것이 있다면, 프로그래머들은 모든 것을 만들기 위해 항상 하나의 프로그래밍 언어를 사용한다. 그러나 요구 사항에 따라 적절한 프로그래밍 언어를 선택할 수 있습니다.

따라서 다음과 같은 사실과 조건에 따라 Shell 스크립트를 작성하기 위해 Bash, Python 또는 JavaScript를 선택할 수 있습니다.

from http://sup-poster.tistory.com/25 by ccl(A) rewrite - 2021-10-10 06:00:49