반응형

목차

  1. sh(Bourne Shell), 주요 특징
  2. bash(Bourne-Again SHell), 주요 특징
  3. PowerShell, 주요 특징
  4. Ansible과 Shell Script 차이

Script와 스크립팅 언어에 대해서는 다음 페이지에 자세히 설명했고, 이번에는 그 중 리눅스에서 자주 사용되는 3가지를 준비했다.

 

[공통 이론] Script와 스크립팅 언어의 특징

목차 정의 주요 특징 스크립팅 언어 주요 특징 종류 정의 프로그래밍에서 Script는 인터프리터에 의해 실행되는 스크립팅 언어로 작성된 일련의 명령 또는 명령을 의미한다. Script는 작업

easyitwanner.tistory.com


sh(Bourne Shell)

Bourne Shell 또는 줄여서 "sh"는 운영 체제와 상호 작용하기 위한 명령줄 인터페이스 역할을 하는 Unix Shell다. 1970년대 AT&T Bell Labs의 Stephen Bourne이 개발했으며 최초의 Unix Shell로 간주된다. Bourne Shell을 사용하면 사용자가 명령을 실행하고 파일을 관리하며 프로세스를 제어할 수 있다.


주요 특징
  1. 단순성
    Bourne Shell은 단순하고 최소한으로 설계되어 명령 대체, 변수, 루프 및 제어 구조와 같은 기본 Shell 기능을 제공한다.

  2. 이식성
    Bourne Shell용으로 작성된 Script는 종종 다른 Unix 기반 시스템으로 이식 가능하여 Shell Script 작성에 널리 사용된다. 이 이식성 덕분에 사용자는 상당한 수정 없이 다양한 플랫폼에서 Script를 재사용할 수 있다.

  3. 호환성
    많은 Linux 시스템에서 "sh" 명령은 종종 "dash"(Debian Almquist Shell) 또는 "bash"(Bourne-Again Shell)와 같은 다른 Shell에 연결되어 Bourne Shell Script와의 호환성을 제공한다. 이렇게 하면 원래 Bourne Shell용으로 작성된 Script가 최신 시스템에서 계속 실행될 수 있다.

  4. 파이핑 및 리디렉션
    Bourne Shell은 파이핑 및 리디렉션을 지원하므로 사용자가 한 명령의 출력을 다른 명령의 입력에 연결하거나 출력을 파일로 리디렉션할 수 있다. 이는 복잡한 명령 체인을 생성하고 데이터를 효율적으로 처리하기 위한 강력한 기능이다.

  5. 스크립팅
    Bourne Shell은 Shell 스크립팅을 지원하여 사용자가 작업을 자동화하고 복잡한 작업을 단순화하며 일괄 처리를 수행할 수 있도록 한다. Script에는 변수, 제어 구조, 루프 및 기타 프로그래밍 구조가 포함될 수 있다.

  6. 내장 명령
    Bourne Shell에는 디렉토리 변경을 위한 "cd", 텍스트 표시를 위한 "echo" 및 Shell 종료를 위한 "exit"와 같은 일련의 내장 명령이 있다. 이러한 명령은 Script에서 사용하거나 명령줄에서 대화식으로 사용할 수 있다.

bash(Bourne-Again SHell)

Bourne-Again SHell의 줄임말인 Bash는 Linux 및 기타 Unix 기반 시스템에서 널리 사용되는 명령줄 Shell이다. 1980년대 후반에 GNU 프로젝트의 일부로 Brian Fox와 Chet Ramey가 개발했다. Bash는 원래 Bourne Shell(sh)의 향상된 버전이며 대부분의 Linux 배포판의 기본 Shell이다.


Bash의 주요 특장
  1. 호환성
    Bash는 Bourne Shell(sh)과 호환되도록 설계되어 모든 기능을 지원하는 동시에 많은 개선 사항과 추가 기능을 추가한다. 이렇게 하면 Bourne Shell용으로 작성된 Script가 수정 없이 Bash에서 실행될 수 있다.

  2. 확장된 기능
    Bash는 명령줄 편집, 명령 기록, 작업 제어, Shell 기능, 별칭 및 다양한 유형의 확장(중괄호, 물결표, 매개 변수 및 산술)과 같이 원래 Bourne Shell에는 없는 다양한 기능을 제공한다. . 이러한 개선 사항은 사용자와 개발자를 위해 Bash를 더욱 강력하고 유연하게 만듭니다.

  3. 스크립팅
    Bash는 배열, 확장된 테스트 구조, 문자열 조작, 산술 연산 및 기타 작업을 위한 다양한 내장 명령을 포함한 고급 스크립팅 기능을 지원한다. 이를 통해 사용자는 자동화 및 시스템 관리를 위해 더 복잡하고 다양한 Script를 만들 수 있다.

  4. 사용자 지정
    Bash는 사용자 지정이 가능하여 사용자가 구성 파일(예: .bashrc 및 .bash_profile)로 환경을 수정하고 자주 사용하는 명령에 대한 별칭 및 기능을 만들 수 있다. 이를 통해 사용자는 자신의 환경 설정 및 작업 흐름에 맞게 Shell 경험을 조정할 수 있다.

  5. 작업 제어
    Bash는 작업 제어를 제공하여 사용자가 여러 프로세스를 동시에 관리할 수 있도록 한다. 사용자는 백그라운드에서 프로세스를 실행하고, 백그라운드 프로세스를 포그라운드로 가져오고, 필요에 따라 프로세스를 일시 중지하거나 재개할 수 있다.

  6. 자동 완성 및 기록
    Bash는 명령 자동 완성을 지원하여 사용자 입력을 기반으로 가능한 완성을 제안하여 길거나 복잡한 명령을 더 쉽게 입력할 수 있다. Bash는 또한 사용자가 이전 명령을 빠르게 불러오고 다시 실행할 수 있도록 명령 기록을 유지한다.

  7. 파이핑 및 리디렉션
    Bourne Shell과 마찬가지로 Bash는 파이핑 및 리디렉션을 지원하여 사용자가 한 명령의 출력을 다른 명령의 입력에 연결하거나 출력을 파일로 리디렉션할 수 있다. 이 기능을 사용하면 복잡한 명령 체인과 효율적인 데이터 처리를 생성할 수 있다.

PowerShell

PowerShell은 Microsoft에서 개발한 강력하고 다양한 명령줄 Shell 및 스크립팅 언어다. 처음에 Windows 운영 체제용으로 설계된 PowerShell은 Linux 및 macOS를 지원하는 오픈 소스 및 교차 플랫폼으로 만들어졌다.


주요 측면
  1. 플랫폼 간 호환성
    PowerShell은 Linux, macOS 및 Windows를 비롯한 다양한 플랫폼에서 작동하도록 설계되었다. 이를 통해 사용자와 관리자는 동일한 Shell과 스크립팅 언어를 사용하여 여러 시스템을 관리할 수 있다.

  2. 개체 지향 특성
    기존 Shell과 달리 PowerShell은 .NET 프레임워크를 기반으로 하며 일반 텍스트가 아닌 개체와 함께 작동한다. 이를 통해 사용자는 개체의 속성과 메서드에 직접 액세스하고 수정할 수 있으므로 데이터를 보다 효율적이고 정확하게 조작할 수 있다.

  3. Cmdlet
    PowerShell은 특정 작업을 수행하는 경량 명령인 cmdlet("command-lets"로 발음)을 사용한다. Cmdlet은 동사-명사 명명 규칙을 따르므로 용도를 쉽게 이해할 수 있다(예: Get-Process, Set-Variable). PowerShell은 파일 관리, 네트워크 구성 및 시스템 관리와 ​​같은 다양한 작업을 위한 많은 기본 제공 cmdlet과 함께 제공된다.

  4. 스크립팅
    PowerShell은 변수, 루프, 조건문, 함수 및 오류 처리와 같은 고급 기능을 갖춘 강력한 스크립팅 언어를 제공한다. PowerShell Script는 .ps1 파일 확장자로 저장되며 작업을 자동화하고 시스템을 관리하고 복잡한 작업을 수행하는 데 사용할 수 있다.

  5. 파이프라이닝
    PowerShell은 사용자가 cmdlet 간에 개체를 전달할 수 있는 파이프라이닝을 지원한다. 이를 통해 임시 파일이나 복잡한 텍스트 구문 분석 없이 데이터를 효율적으로 처리하는 명령 체인을 생성할 수 있다.

  6. 사용자 지정 및 확장성
    PowerShell은 사용자 지정 cmdlet, 함수, 별칭 및 모듈 생성을 지원하여 고도로 사용자 지정할 수 있다. 사용자는 특정 요구 사항을 해결하기 위해 모듈을 가져오거나 모듈을 생성하여 기능을 확장할 수 있다.

  7. Linux 도구와의 통합
    Linux의 PowerShell은 기본 Bash 또는 다른 Shell과 별도의 Shell이지만 여전히 기본 Linux 명령과 상호 작용하고 실행할 수 있다. 이는 친숙한 Linux 도구를 계속 사용하면서 PowerShell의 기능을 활용하려는 사용자에게 유연성을 제공한다.

Ansible과 Shell Script 차이

Ansible 및 Shell Script는 모두 자동화 및 구성 관리에 사용되는 도구이지만 서로 다른 용도로 사용되며 서로 다른 강점을 가지고 있다. Ansible과 Shell Script의 주요 차이점은 다음과 같다.

 

1. 목적

  • Ansible은 복잡한 다중 시스템 배포를 자동화하고 여러 시스템에서 구성을 관리하도록 설계된 구성 관리 및 오케스트레이션 도구다. 일관되고 확장 가능한 방식으로 많은 수의 시스템을 관리하기 위해 특별히 제작되었다.
  • Shell Script는 자동화, 파일 조작 및 시스템 관리를 포함하여 광범위한 작업에 사용할 수 있는 범용 스크립팅 도구다. 일반적으로 소규모 작업 및 단일 시스템 관리에 사용됩니다.


2. 언어

  • Ansible은 YAML(Yet Another Markup Language)을 사용하여 사람이 읽을 수 있고 이해하기 쉬운 플레이북을 작성한다. Ansible 플레이북은 원하는 시스템 상태와 해당 상태를 달성하기 위한 작업을 정의한다.
  • Shell Script는 Bash, sh 또는 PowerShell과 같은 Shell 언어로 작성됩니다. 순서대로 실행할 일련의 명령을 정의하는 절차적 Script이다.


3. 멱등성

  • Ansible은 멱등성을 갖도록 설계되었다. 즉, 동일한 플레이북을 여러 번 실행해도 의도하지 않은 부작용 없이 동일한 최종 상태가 생성됩니다. 이것은 여러 시스템에서 구성을 관리할 때 상당한 이점이다.
  • Shell Script는 기본적으로 멱등성을 보장하지 않는다. 개발자는 Script를 여러 번 실행해도 의도하지 않은 결과나 중복 작업이 발생하지 않도록 수동으로 확인해야 한다.


4. 에이전트 없는 푸시 기반

  • Ansible은 명령을 실행하고 구성을 배포하기 위해 SSH(또는 Windows용 WinRM)를 사용하여 원격 시스템에 연결하는 에이전트 없는 방식으로 작동한다. 이렇게 하면 각 관리 시스템에 에이전트를 설치하고 관리할 필요가 없다. Ansible은 구성이 제어 노드에서 관리 노드로 푸시되는 푸시 기반 모델을 사용한다.
  • Shell Script에는 원격 실행을 위한 기본 제공 메커니즘이 없으며 원격 시스템을 관리하려면 추가 도구 또는 구성이 필요할 수 있다.


5. 모듈 및 확장성

  • Ansible은 복잡한 작업을 간단하고 재사용 가능한 구성 요소로 추상화하는 많은 내장 모듈과 함께 제공됩니다. 사용자는 사용자 정의 모듈을 생성하여 Ansible의 기능을 확장할 수도 있다.
  • Shell Script는 내장 Shell 명령, 시스템 유틸리티 및 외부 도구를 사용하여 작업을 수행한다. Shell Script는 모듈식일 수 있지만 일반적으로 재사용 가능한 구성 요소를 생성하려면 더 많은 수동 작업이 필요하다.


6. 확장성 및 병렬성

  • Ansible은 확장성을 위해 설계되었으며 많은 수의 시스템을 동시에 관리할 수 있다. 여러 시스템에서 작업의 병렬 실행을 지원하여 배포 속도를 높이고 중단 시간을 줄일 수 있다.
  • Shell Script는 백그라운드 프로세스 및 작업 제어를 사용하여 일부 병렬 처리가 가능하지만 일반적으로 확장성이 떨어지고 여러 시스템을 처리할 때 관리하기가 더 어렵다.
반응형