ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [PowerShell 기초] 1. 파워셸(Powershell) 이란
    Shell & CMD/PowerShell 2021. 11. 28. 16:19
    반응형

    1. 소개

    Powershell은 Microsoft에서 개발한 셸(shell) 중 하나로 과거 Windows 환경에서 사용자를 관리하고 자동화등의 작업을 수행할때 사용하는 명령줄 셸 프로그램이다. MS가 크로스플랫폼 및 오픈소스를 지향하기 시작하면서부터 MacOS 및 Linux 환경에서도 설치 및 사용이 가능해졌다.

     

    2. 기존 shell 과의 공통점

    Powershell은 기존 셸과 일부 기능을 공유한다. 따라서 리눅스에서 `ls -al` 과 같은 일반적인 명령어를 그대로 사용할 수 있다.

    Linux(Ubuntu) 환경에서의 ls -al 명령어 결과예시
    Linux(Ubuntu) 환경에서의 ls -al 명령어 결과예시

    물론 이 말이 모든 OS 환경에서 통용되는 것은 아니다.

    Windows cmd 명령어에서 동작하는 ls -al

     

    Windows Powershell에서 실패한 ls -al. ls 가 Get-ChildItem의 alias로 매핑되어있어 파라메터가 달라 오류가 발생함

     

    Powershell은 bash에서 존재하는 파이프라인(|)이나 한줄에 여러 명령어를 쓰는 세미콜론(;) 과 같은 개념도 공통적으로 존재한다. 아래 스크린샷은 Powershell에서 기본적으로 저장된 Variable을 pwsh-variable 파일에 저장한 뒤, 10줄마다 pwsh-* 파일로 나눈 파일을 저장하는 다중 명령줄 수행 예시이다. Windows 환경에서 실행했으며, 리눅스 OS의 파이프라인과 동일한 동작을 보여준다.

    다중 명령줄 수행예시

     

    3. 기존 Shell과의 차별점

    물론 차별점도 존재한다. bash와 같은 기존 명령어는 변수타입의 개념이 약하다. 변수 선언 후, 해당 변수에 대한 타입이무엇인지 바로 확인하기 어렵다.

     

    반면 Powershell은 변수에 `GetType()` 함수를 호출하여 타입을 확인할 수 있다. 아래 예제는 $abc 라는 이름을 가진 변수의 타입을 확인하는 방법이다.

     

    저장한 변수의 타입(Type)을 확인

    .NET 개발자라면 BaseType을 보고 .NET의 네임스페이스와 유사하게 느껴질 것이다. 단지 유사한게 아니라 실제 크로스플랫폼 Powershell 이 .NET 및 .NET Core 기반으로 개발되었기 때문이다. 그렇다고 .NET의 변수 선언이나 함수 개념이 통용되는 것은 아니다. 안타깝게도(?) 변수선언방식은 bash와 유사한 부분과 cmdlet 이라 불리는 Powershell 고유 명령어를 사용해야 한다.

     

    보다 자세한 사항은 별도의 챕터에서 다루도록 하겠다.

     

    요약

    Powershell은 기존 bash와 같은 시스템 기본 명령어 및 개념을 공유하여 사용할 수 있으면서도 타입이 존재하는 객체 개념으로 차별점을 두었다. 강력한 기능이지만 그 동안 Window 환경에서만 사용할 수 있었다는 거대한 제약사항으로 빛을 볼 수 없었다. 이제 크로스플랫폼을 지향하는 MS의 정책에 따라 Linux 및 MacOS에서도 강력한 도구가 되어 줄 것이라 믿는다. :-)

     

    출처 :
    PowerShell/PowerShell: PowerShell for every system! (github.com)

    PowerShell이란? - Learn | Microsoft Docs

     

    반응형

    댓글

Designed by Tistory.