Linux에서 가장 일반적인 스크립팅 언어는 무엇입니까?

Linux에서 가장 일반적인 스크립팅 언어는 무엇입니까?

우리는 Linux 시스템용 스크립트를 작성하고 있으며 현재 가장 일반적인 Linux용 스크립트 언어가 무엇인지에 대해 약간의 논쟁이 있습니다. 배쉬, SH, Posix? 무엇?

답변1

모든 UNIX 계열 운영 체제에는 두 개의 Turing-complete 프로그래밍 환경이 있으며 다른 프로그램을 호출할 수 있습니다., 그리고, Bourne/POSIX 쉘 시리즈. AWK는 텍스트 처리(더 전문화된 유틸리티를 보완함)를 지향하는 반면, sh는 프로그램을 하나로 묶는 접착제 언어를 지향합니다. 무엇인가요이것Linux 및 UNIX 세계의 범용 스크립팅 언어입니다.

이것POSIX표준은 sh 자체 및 관련 유틸리티의 필수 기능을 정의합니다. 대부분의 UNIX 계열 시스템은 다음과 같습니다.POSIX 1003.1-2004(일명 Single Unix v3, 일명 Open Group Base Spec Issue 6) 이 표준의 최신 버전은 다음과 같습니다.POSIX 1003.1-2008(일명 Single Unix v4, 일명 Open Group 기본 사양 문제 7).

모든 Linux 및 unix 또는 Unix 계열 시스템에는 경로에 Bourne 스타일 쉘이 있으며 /bin/sh, 골동품이 아닌 시스템에는 POSIX 호환 쉘이 있습니다(간헐적인 버그 제외). 모든 최신 UNIX 계열 시스템(Linux 포함)에서 지원됩니다.그녀의 심장이 뛴다이므로 /bin/sh첫 번째 줄이 이면 자동으로 스크립트가 실행됩니다 #!/bin/sh. 일부 POSIX 시스템은 sh다른 위치(일반적으로 Unix라고 생각하지 않는 운영 체제 상단의 에뮬레이션 계층)에 있습니다.

임베디드 Linux 시스템에는 라이트 버전이 있을 수 있습니다.바쁜 상자모든 POSIX 기능을 구현하지 않는 시스템. BusyBox에는 소규모 시스템에 적응할 수 있는 수많은 컴파일 시간 옵션이 있으므로 무슨 일이 일어날지 미리 알기가 어렵고 특정 장치에 맞게 스크립트를 조정해야 합니다. BusyBox는 sh 및 다양한 유틸리티의 가장 일반적인 소규모 구현입니다. 발생할 수 있는 또 다른 문제는 Android의 셸 환경이 극도로 단순화된다는 것입니다(이후 버전은 더 이상 무균 상태가 아닙니다).

비임베디드 Linux 시스템은 거의 항상스프린트또는세게 때리다처럼 /bin/sh. Dash는 POSIX 기능만 구현하는 작고 빠른 셸입니다. Bash는 더 많은 기능을 갖춘 더 큰 쉘입니다.

비임베디드 Linux 시스템에는 거의 항상 Bash가 설치되어 있습니다 /bin/bash. 따라서 비임베디드 Linux 시스템에서의 이식성을 위해 bash를 사용할 수 있다고 가정할 수 있습니다. Bash의 유용한 추가 기능에는 배열, 도트 파일로 편리하게 작업하는 기능, pipestatus파이프라인의 모든 명령의 반환 상태를 가져오는 변수, 파일 시간에 대한 추가 비교 연산자 및 (최신 버전의 경우) 정규식 일치가 포함됩니다.

쉘 프로그래밍의 특징 중 하나는 프로그램만 사용하는 것이 아니라 sh다양한 프로그램을 사용한다는 것입니다.유용. Linux의 대부분의 파일 조작 및 텍스트 처리 유틸리티는GNU 핵심 도구(임베디드 시스템에서는 일반적으로 BusyBox에서 제공됩니다.)

Linux 이상의 이식성이 필요한 경우 가장 좋은 옵션은 POSIX를 사용하는 것입니다. 다른 유닉스 변형에는 bash가 설치되어 있지 않을 수 있습니다(bash는 OSX에서 표준 설치의 일부이지만 *BSD 및 대부분의 상업용 유닉스에서는 선택적 패키지입니다). Linux 및 OSX(예: *BSD 및 상용 Unix)를 제외한 거의 모든 Unix 변형에는 다음 버전이 있습니다.코헨 쉘, 적어도PDKSH. Bash에 대한 많은 편의 확장은 ksh에서 제공되므로 두 가지 모두에서 실행될 수 있는 스크립트를 작성하는 것이 유용할 수 있지만 알 수 없는 시스템에서 bash 또는 ksh가 어디에 있는지 감지하는 것은 약간 번거로울 수 있습니다.

쉘이 모든 것을 할 수는 없습니다. 더 복잡한 언어가 필요한 경우 가장 일반적인 두 가지 선택은 Perl과 Python입니다(다른 모든 언어는 UNIX 스크립팅 언어보다 훨씬 뒤떨어집니다). Perl은 내장되지 않은 Linux 시스템에는 거의 없는 전통적인 스크립팅 언어이지만 Python이 진출하고 있습니다(부분적으로 Ubuntu의 권장 스크립팅 언어가 됨). Linux가 아닌 환경에서 Perl은 OSX 및 OpenBSD의 기본 설치의 일부입니다. 이는 선택 사항이지만 일반적으로 FreeBSD에 설치되고 선택 사항이지만 일반적으로 NetBSD에 설치됩니다.

답변2

이용 가능한 순서대로:

  1. sh, 하지만 POSIX 지정 기능 사용을 고집합니다.
  2. bash를 사용하지만 shebang에서 명시적으로 지정하는 것을 잊지 마세요. 그렇지 않으면 대시가 표시될 수 있습니다.
  3. 파이썬. 거의 모든 사람들이 그것을 사용합니다.
  4. 진주. 하지만 꼭 써야 합니다.

그 후에는 할 수 없는 일이 없기 때문에 아무도 신경 쓰지 않습니다.

답변3

일반적으로 ...라고 말하고 싶지만 shLinux를 지정했으므로 bash주변의 모든 Linux 시스템에 있다는 것이 보장됩니다(글쎄, 미니멀리즘에 집착하는 모호하고 현명한 작은 시스템은 제외).

Linux 이외의 이식성에 대해 걱정할 필요가 없다면(그리고 작은 배포판이나 플라스틱 상자 라우터와 같은 임베디드 Linux 장치에서 실행할 필요가 없다면) 다음과 같은 주요 개선 사항을 활용할 수도 있습니다. sh. 그렇지 않으면 를 사용하십시오 sh.

bash(및 ) 다음 으로 Linux용 가장 "일반적인" 스크립트 언어는 일부 방언 (보통 또는 ) sh입니다 . 평범한 awk를 고수하고 서투른 동작을 피한다면 스크립트는 거의 모든 Linux 시스템(소규모 배포판이나 임베디드 장치에서는 손실될 수 있음)에서 잘 실행될 것입니다. 대부분의 Linux 시스템에서 사용할 수 있지만 일부 배포판(예: Debian)에서는 기본적으로 설치되며 필요한 경우 직접 설치해야 합니다.awkmawkgawkmawkgawkmawkgawk

다음으로 perlAFAIK, 기본 Perl은 모든 일반적인 Linux 배포판에 기본적으로 설치되므로 좋은 선택입니다. 더욱 다행스럽게도 Perl5 버전과의 버전 비호환성은 거의 없습니다(Perl 5.12 또는 아마도 5.14는 마침내 약 15년 ​​동안 더 이상 사용되지 않았던 일부 모호한 기능을 제거했지만...사용하지 말 것을 경고합니다). 정말 이상하고 당신이 10년 동안 "이것을 하지 마세요"라는 경고를 무시하고 싶어한다면 Perl 스크립트는 거의 모든 곳에서 잘 작동할 것입니다. 언어는 강력하고 강력하며 할 수 있는 모든 일과 그 이상을 할 수 awk있습니다 sed. 약간의 노력만 기울이면 sh전통적으로 유익한 작업(외부 명령 실행 및 /piping 출력 소비 등)도 수행할 수 있습니다. 표준 Perl 라이브러리도 매우 포괄적이어서 기본적인 것 이상을 다루고 있습니다.

Perl의 유일한 문제점은 생각할 수 있는 거의 모든 작업을 수행할 수 있는(그리고 생각하지도 못할 추가 작업) 거대한 CPAN 모듈 라이브러리가 있다는 것입니다. Perl 시스템에서 사용되는 모든 시스템에서 이들 모두를 사용할 수 있는 것은 아닙니다. 일반적으로 품질이 매우 높으므로 사용하는 습관을 들이기가 쉽습니다. 하지만 사용하는 경우 반드시 설치해야 합니다. 많은 CPAN 모듈은 Linux용으로 사전 패키지되어 있으며 나머지는 cpan 도구를 사용하여 쉽게 설치할 수 있습니다(또는 dh-make-perldebian/ubuntu/etc에서 CPAN 모듈을 .deb 패키지로 변환).

python다음 문장을 말하고 싶지만 실제로는 그럴 수 없습니다. Python에 대해 마음에 드는 점이 많지만 많은 Linux 시스템에 기본적으로 포함되어 있지 않으며 버전 호환성(Python 자체 및 소위 "표준" 라이브러리 모두)은 솔직히 엉망입니다. 일부 배포판은 혼란을 해결하기 위해 많은 노력을 기울이는 반면 다른 배포판은 그렇지 않습니다. 파이썬은 기본적으로 프로그래머(시스템 관리자가 아님)가 프로그래머를 위해 작성한 언어입니다.체계그들의 코드는 매우 중요한 곳에 설치될 것입니다... 그들의 코드는 정말 훌륭합니다.특별한따라서 기존 시스템에 통합하는 것과 같은 지루한 작업에 대해 걱정할 필요가 없습니다.

(여기서 내 비꼬는 말을 오해하지 마세요. 저는 Python을 언어로 정말 좋아합니다. 버전 및 종속성 관리가 PITA라는 사실이 싫습니다. 이는 20년 이상 전에 모호한 내용을 수동으로 찾던 시절로 돌아가는 것과 같습니다. 독점 *nix에서 무언가를 컴파일하고 실행하기 위한 패치)

답변4

제가 말씀드리고 싶은 것은 이용 가능 여부는 다음과 같은 순서로 진행된다는 것입니다.

  1. Perl(BSD를 포함하여 Perl이 없는 *nix를 본 적이 없습니다)

Python은 좋은 언어처럼 들리지만 기본 설치와 함께 제공되는 운영 체제에서는 Python을 사용하지 않았습니다. 물론 Ubuntu에서는 사용했을 수도 있습니다.

관련 정보