Computer Science/Operating System

Bash VS CMD VS Power shell

eyi-jin 2022. 6. 6. 17:15

평소 메모 앱인 Notion을 사용하여 블로그에 올릴 포스팅을 먼저 작성합니다.

Notion을 사용하던 중, code를 입력할 수 있는 부분에 Power shell, Bash, Shell 옵션이 있음을 발견했습니다.

노션의 code 작성 칸 일부분

정확하게 어떤 차이점이 있는지 궁금해져서 해당 포스팅을 개제합니다.

배경지식

컴퓨터에서 command-line(커맨드 라인)을 사용하여 command를 작성하고, 화면에 나온 글씨들을 확인합니다.

우리는 그것을 terminal application(터미널 어플리케이션)이라고 부릅니다.

terminal application은 우리가 입력한 command를 shell에 전달합니다.
shell은 해당 명령어를 이해하고, 명령어를 실행합니다.

참고로 Shell은 GUI(Graphical User Interface)가 아닌 CLI(Command Line Interface)입니다.

즉, 버튼이나 마우스를 이용한 환경이 아닌, 명령어로 명령을 제어하는 프로그램 입니다.

Bash란?

Bash는 UNIX에서 가장 널리 사용되는 명령줄 인터페이스입니다.

그리고 Bash는 요즘 대부분의 Unix/Linux 기반 시스템에서 기본 shell입니다.

Stephen Bourne가 1988년에 (Bash) Bourne Again Shell이라는 오픈 소스 셸을 출시했습니다.

그 이후로 Bash는 특히 코드 기반이나 애플리케이션을 배포하는 개발자들 사이에서 자주 사용되고 있습니다.

Bash의 주요 기능 중 일부는 시스템 안정성, 명령줄 편집, 키 바인딩, 명령 기록, 오픈 소스 등입니다. 이러한 모든 기능을 통해 Bash는 IT 전문가들 사이에서 가장 많이 사용되는 스크립팅 환경 중 하나입니다.

CMD란?

CMD는 Windows의 기본적인 command를 수행하는 Command-line Shell입니다.

cmd는 Windows의 기본 command line shell입니다.

CMD는 일반적으로 다양한 일상적인 관리 작업을 수행하는 데 사용되며 자동화를 수행하는데 사용됩니다.

그리고 cmd는 pipe하는 기능을 제공하지 않습니다. 만약, command를 실행한 결과를 다음 command의 입력으로 사용하고 싶다면, text를 복사하여 실행할 수 있습니다.

(pipe: command1의 output을 command2의 input으로 사용하는 것 )

자주 사용하는 CMD 명령어

  • help: cmd를 켜고, 그림과 같이 help를 타이핑하면 사용 가능한 명령어 목록들을 설명과 함께 보여줍니다.

cmd help

  • cls: 화면을 지웁니다. 이전 명령어가 사라지는 것이 아니라 화면만 깨끗한 상태로 만들어 줍니다.
  • ver: 윈도우의 버전을 확인합니다.

cmd ver

  • echo: 메세지를 표시합니다.

cmd echo

  • dir: 디렉터리에 있는 파일과 하위 디렉터리 목록을 보여줍니다.

cmd dir

  • cd 디렉토리이름 : 해당 디렉토리로 이동합니다.

cmd cd

💡 shell사용 팁
디렉토리 이름 일부를 타이핑하다가 tap 키를 누르면 자동완성이 됩니다.
이전에 사용했던 command를 다시 타이핑하고 싶다면, 방향키(위)를 사용하면 됩니다.

눈으로 하나씩 보는 것보다, 직접 cmd창을 켜놓고 실습해보면 이해가 빠릅니다.

cmd창 실행시키는 방법

Powershell이란?

Powershell은 한마디로 CMD+@입니다.

즉, Powershell은 CMD의 모든 기능을 갖추고 있고, 자동화된 Command-line shell입니다.  Power shell은 CMD가 나온 이후인 2006년에 출시되었습니다. CMD가 Bash에 비해서 제공하는 기능들이 한정되어 있었기 때문에 이러한 피드백을 받고 만들어졌습니다.

따라서, powershell은 window 2007이후로 main Command-line shell로 사용되고 있기 때문에, cmd는 오늘날 더 이상 쓸모있다기보다는 legacy에 가깝게 여겨지기도 합니다.

그리고 오늘날 Power shell은 Mac이나 Linux 에서도 사용이 가능합니다.

Powershell의 주요 개선사항은 객체 지향이라는 것입니다.

command를 실행하고 해당 결과를 object(객체)형태로 다음 command로 넘겨줄 수 있습니다(pipe 제공) 객체 형태로 넘겨주게 되면 text로 넘겨주는 것보다, 더욱 쉽게 다룰 수 있습니다.

Powershell의 기능 목록에 추가된 기능 중 하나는 일반적으로 Cmdlet이라고 하는 명령을 허용하는 것입니다.

Cmdlet

  • 실행

사실 이떄까지 command라고 이야기 했지만, command는 System32파일의 .exe 파일을 실행시키는 것입니다!

그래서 ping command를 보게 되면, Source부분에 System32폴더에 있는 ping.exe를 볼 수 있습니다.

또한 PowerShell은 scripting 언어도 사용됩니다 .ps1이라는 파일 확장자를 가지고 있습니다.

cmd에서 사용되던 .bat 이라는 배치파일보다 훨씬 더 편리한 기능과 syntax(문법)을 제공합니다.

Powershell로 할 수 있는 명령

  • 변수 선언 및 계산

CMD와 Powershell 차이

  • cmd 에서는 1+1 명령어를 실행할 수 없습니다.
  • Powershell에서는 1+1 명령을 실행할 수 있습니다.

정리

CMD Power Shell Bash

CMD Power Shell Bash
모든 Windows 운영 체제 Windows 2007~ 초창기 Linux와 Unix 시스템~
간단한 기본 명령어 실행 ex) cd, ls, mkdir, rm CMD + @ ex) 변수 선언, 함수 만들기 등  
window 기반 운영 체제를 위한 명령줄 및 스크립팅 언어 window2007이상 기반 운영 체제를 위한 명령줄 및 스크립팅 언어 Unix/Linux 기반 운영 체제를 위한 명령줄 및 스크립팅 언어

 

간단히 말해서 각 도구에는 특정 상황에 따라 장점과 사용법이 있습니다.

한마디로 정리하자면,

CMD는 초창기 Window 운영 체제부터 사용되던 명령 프롬프트입니다.

Powershell기능이 많이 추가된 고급 버전의 CMD입니다.

BashLinux와 Unix에서 사용되는 기본 shell 입니다.

따라서 Powershell과 Bash는 사용 대상(Window와 Linux)이 애초에 다르기때문에, 비교대상이 되지 않습니다. 즉, 서로 다른 기능을 가진 서로 다른 운영 체제에 사용됩니다.

참고

Command-Line Reference | Microsoft Docs

Difference Between CMD vs Powershell vs Bash - ServerTribe

What is the difference between Cmd, PowerShell, and Bash? | One Dev Question

Windows Powershell vs Command Prompt: What's The Difference Anyway?