작업을 하다 보면 가끔 파일 생성, 혹은 디렉토리 구조 출력 등에 cmd(Command Prompt)를 사용할 때가 있습니다. 

 

평소에는 cmd로 os단의 작업을 처리하거나 소켓 정보를 보곤 했는데, 도커를 가동시키기 위해 wsl을 설치하면서 

 

윈도우 터미널로 파워쉘을 만져볼 일이 생겼습니다. 

 

cmd보다 훨씬 직관적이고, 윈도우에서 자체 ISE를 제공해서 자동완성까지 지원하는 파워쉘로 작업을 하다 보니

 

어느덧 cmd는 점점 사용하지 않게 되었습니다. 

 

게다가 cmd 커맨드를 모두 파워쉘에서 지원하는 것을 알게 된 이후에는

 

이전에 쓰던 .batch 파일들도 모두 ps1 파일로 옮기게 되었습니다. 

 

이렇게 작업을 하다 보니, cmd가 파워쉘로 완전히 대체될 수도 있지 않은지 궁금해서

 

둘의 차이를 직접 조사해 보았습니다. 

 

Powershell vs Command Prompt 비교글 
 

PowerShell vs Command Prompt | Top 14 Differences You Should Know

Guide to PowerShell vs Command Prompt. Here we discuss the PowerShell vs Command Prompt key differences with infographics and comparison table.

www.educba.com

 

위의 글에서는 파워쉘이 cmd에 비해 가지는 장점이 압도적으로 많은 것으로 묘사하고 있습니다. 

 

각 항목들을 자세히 설명하지는 않겠으나, 제가 느꼈던 ISE 지원이나 각 쉘마다 같은 파일이 연동된다는 점, 문법적으로 파워쉘이 cmd를 지원하는 하위호환이 가능하다는 점 등을 볼때 파워쉘로 넘어가지 않을 이유가 없다고 설명하고 있습니다. 

 

쉽고 편한 개발, 유지보수에 있어서는 파워쉘이 압도적으로 뛰어난 것으로 보여지는군요. 

 

공식 문서 지원 
 

Windows PowerShell 시작 - PowerShell

이 문서에서는 다양한 버전의 PowerShell을 시작하는 방법을 설명합니다.

learn.microsoft.com

 

 

Windows commands

Reference

learn.microsoft.com

 

공식 문서에 대해서는 파워쉘과 cmd 문법 모두 Microsoft 공식 홈페이지에 정리된 것을 확인할 수 있었습니다.

 

접근성 면에서는 크게 차이나지 않고, 둘 모두 windows 업데이트 시 최신 버전으로 핫픽스 및 버전업 역시 꾸준히 지원되는 것 같습니다. 

 

 

 

성능 차이
 

Does cmd run faster than Powershell?

Answer (1 of 3): > Does cmd run faster than Powershell? In general “NO”. Some commands might run marginally faster (e.g., DIR) since they are built-into cmd.exe but the difference is less than the time it takes the user to type a couple of characters.

www.quora.com

의외였던 것은 파워쉘의 오버헤드가 생각보다 크다는 것이었습니다. 아무래도 .NET이라는 프레임워크를 통해서 실행하는 것인 만큼 반복적인 작업을 수행할 때 cmd보다 훨씬 큰 시간이 드는 것으로 보입니다. 

 

cmd 문법을 지원하기에 거의 비슷한 속도가 나올 것 같았는데 이런 차이점이 있었네요. 

 

 

 

결론, 성능을 위해서는 cmd, 가독성과 유지보수를 위해서는 Powershell을 사용하자 



보통 간단한 작업들을 주로 하는 제 입장에서는 아무래도 powershell에 손이 더 가게 되는 것은 어쩔수 없는 것 같습니다.

 

나중에 제가 다시 코드를 볼 때도 이해하기 훨씬 쉽고, 에러가 날 때도 어느 지점이 문제인지 더 빠르게 파악할 수 있어 작업시간이 훨씬 단축되었습니다. 

 

다만 한가지 아쉬운 점은 ps1파일은 windows 검색에서 powershell을 통해 바로 열리지 않는다는 점인데요. 

 

 

window 키를 눌러 검색하는 경우, .bat 파일들은 바로 실행이 가능하지만

 

 

ps1 파일들은 메모장으로 열리는 것 같습니다. 

 

지금은 .bat 파일로 해당 경로에 있는 파일을 실행시키도록 해서 .bat을 실행시켜 간접적으로 ps1 파일들을 실행시키고 있긴 한데 유지보수 면에서 번거로운 감이 있네요. 

 

이런 점까지 고려해서 Powershell과 cmd 중 적절한 상황에 더 맞는 프로그램을 활용하시면 좋을 것 같습니다. 

CVE란 "정보 보안 취약점 표준 코드"를 말한다.

CVE는 마이터 코퍼레이션이라는 비영리단체에서 관리하는 문서이다. 미국 국가 취약점 데이터베이스(NVD)와 동기화되어 발견된 취약점들을 많은 전문가들에게 공유하여 컴퓨터 시스템을 안전하게 관리하도록 만들었다.

 

CVE 표기 형식 : CVE-년도-발생순번

MVN Repository에서 표기된 예시
CVE 페이지에서 해당 내용을 볼 수 있으며 추가적인 정보는 NVD에서 볼 수 있다.

자신이 사용할 프로그램 또는 사용하고 있는 프로그램이 CVE 코드가 부여되어있다면 코드 번호를 통해서 취약점을 파악해야 한다.

 

CVE 사이트 : CVE - CVE (mitre.org)

 

CVE - CVE

The mission of the CVE® Program is to identify, define, and catalog publicly disclosed cybersecurity vulnerabilities.

cve.mitre.org


참고사이트

CVE(Common Vulnerabilities and Exposures) (spo.go.kr)

CVE란? (redhat.com)

CVE 데이터베이스의 정의와 목적 | NordVPN

CVE(Common Vulnerabilities and Exposures) (leafcats.com)

[보안개념] CVE LIST 어떻게 활용되는 가? (tistory.com)

 

'정보게시판 > 사이트 공유' 카테고리의 다른 글

정규표현식 사이트, Regexr  (0) 2022.07.18
공부관련 사이트  (0) 2022.06.26
한 줄 요약
1970년 1월 1일 국제 표준시 UTC부터의 경과시간을 초로 환산하여 정수로 나타낸 것이다.

 

1970년대 벨 연구소에서 탄생한 유닉스(UNIX)에서 사용한 컴퓨터 시간 표현방법이다. 보통은 유닉스 시간 또는 유닉스 타임스탬프(Unix timestamp)라고 부르지만 또 다른 이명으로는 POSIX TimeEpoch Time가 있다. 현재 많은 컴퓨터 운영체제어서 사용 중인 표기 방법이다.

 

재밌는 사실은 유닉스 시간은 32비트로 표현이 되어서 2038년 1월 19일  03:14:08 UTC에 범위를 초과하여 1901년으로 가리키는 현상이 발생한다. 해당 문제는 64비트 형식으로 변경할 경우 3000억 년 정도 연기를 시킬 수 있기에 큰 문제는 되지 않을 것이다.

유닉스 시간을 보고 싶다면 아래 사이트에서 볼 수 있다.

Unix Time Stamp - Epoch Converter

 

Unix Time Stamp - Epoch Converter

Epoch and unix timestamp converter for developers. Date and time function syntax reference for various programming languages.

www.unixtimestamp.com

 

자료출처

What is Unix Time? | Epoch101.com

유닉스 시간 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)

타임스탬프(TimeStamp)와 Epoch Time의 유래 : 네이버 블로그 (naver.com)

 

'간단용어정리' 카테고리의 다른 글

오버헤드란?  (0) 2022.11.01

여기서는 일반적으로 컴퓨터 과학에서의 오버헤드에 대해서 이야기한다.

 

오버헤드란 처리를 위해 '간접적인 처리 시간 & 메모리'를 의미한다. 

 

예시)

마트에서 일을 하는데 주 업무는 배달 온 물건들을 옮기는 일이다. 배달 온 물건이 하나씩 들어올 때도 있지만 많게는 1000개도 들어올 수 있으며 그럴 경우에는 물건을 하나씩 옮길 경우 너무 많은 시간이 걸린다. 하지만 끌차를 이용하면 물건을 하나씩 옮기는 경우보다 훨씬 효율적으로 일을 할 수 있다.

 

예시를 기준으로 오버헤드라는 용어를 풀어보자면 처리는 배달온 물건을 옮기는 일이다.

그렇다면 여기에서 오버헤드는 배달 온 물건을 옮기는 일을 효율적으로 수행하기 위해서 끌차를 추가하여 일을 수행한 것이다.

 

위의 예시를 기준으로 오버헤드를 계산하는 방법을 알아보자.

예를 들어 물건 하나를 옮기는데 5초라는 시간이 걸린다. 그런데 끌차를 도입하고 난 시간이 10초가 되었다. 이때 오버헤드는 5초이다. 하지만 여기서 작업 방법을 개선하여 끌차 작업시간을 7초로 줄인다면 오버헤드가 3초 단축되었다고 표현한다.

 

단순하게 시간으로만 보면 끌차를 추가하지 않는것이 더 좋아 보이지만 반복적인 행동수가 줄어들어 좋아진 거도 있다. 하지만 끌차를 또 관리해줘야 하기 때문에 무조건 좋아졌다고 하기에도 애매하다. 그렇기에 필요한 조금 더 효율적인 처리를 위해서 기능을 덧붙여햐 할지 붙였다면 오버헤드를 최대한 단축시킬 수 있는 방법도 생각을 해봐야 할 것이다.

'간단용어정리' 카테고리의 다른 글

유닉스 시간이란?  (0) 2022.11.08

+ Recent posts