본문 바로가기

SW, HW 소개

Cmder; 윈도우 터미널 CMD 업그레이드, Git + 윈도우용 리눅스 명령

 

1. 윈도우 터미널

PC에 DOS가 나온 시점부터 CMD는 마이크로소프트사의 공식 터미널이었다. DOS가 윈도우로 넘어가서도 CMD는 바뀌지 않았고, CMD의 단순한 명령어를 VB Script 엔진까지 포함시켜 대폭 확장시킨 PowerShell을 제공하고 있지만, 여전히 일반 윈도우 사용자들은 CMD를 사용하고 있다.

 

하지만, 마이크로소프트가 오픈소스와 리눅스 생태계를 수용하기로 하고 나고, Linux Sub-system을 지원하는 많은 프로그램들이 윈도우에서 사용되고 있고, 이런 프로그램들을 사용하기 위한 CLI환경으로 CMD를 사용하면 많은 제약을 느끼게 된다. 마이크로소프트는 PowerShell을 리눅스에서도 동작하는 Cross Platform Shell로 밀고 있지만, PowerShell로 작성된 리눅스 문서는 거의 없을 정도로 사용자가 드문 편이다. 오히려, 윈도우에서도 리눅스 기반 프로그램을 운영하기 위해 sh, bash, 등에서 사용되는 편리한 명령어를 이용할 수 있는 방법을 찾는 사람들이 생기고 있다.

 

윈도우에서 sh, bash 등에서 사용되는 리눅스 명령어를 사용하려면 MSYS2라는 명칭으로 모아놓은 일련의 윈도우용 리눅스 프로그램들을 이용한다. 가장 흔하게 접하는 곳은 Git for Windows로 패키지를 설치하면 MSYS2가 같이 설치되고, Git Bash를 통해 명령어들을 사용할 수 있지만, 그대로 사용하면 CMD 터미널 기반으로 실행되는 것이어서, 커스터마이징도 쉽지 않고 예쁘지도 않기 때문에, VSCode에서 터미널로 불러 쓰거나, 다른 터미널 환경에 연결해서 사용하는 편이 좋다.

2. Cmder

Cmder는 ConEmu라는 유명한 터미널과 clink, clink completion, Git for Windows, PsGet을 같이 번들로 묶어 놓은 프로그램이어서, Git for Windows 대신 편하게 사용할 수 있을 뿐 아니라, portable 버전이어서 별도의 설치 과정 없이 사용할 수 있다. 다운로드된 파일을 풀고,  PATH에 등록하지 않고, Cmder을 바로 실행해도 MSYS2에 있는 많은 명령어, awk, grep, git, ssh, 등을 cmder 터미널에서 바로 사용할 수 있다.

 

Cmder | Console Emulator

Total portability Carry it with you on a USB stick or in the Cloud, so your settings, aliases and history can go anywhere you go. You will not see that ugly Windows prompt ever again.

cmder.app

ConEmu에 대해 더 알고 싶으면 아래 공홈을 참고하면 된다.

 

ConEmu - Handy Windows Terminal

ConEmu-Maximus5 is a full-featured local terminal for Windows devs, admins and users. Get better console window with tabs, splits, Quake style, copy+paste, DosBox and PuTTY integration, and much more.

conemu.github.io

a. 간편한 설치

Cmder은 공홈을 방문하면 portable 버전을 기본으로 받을 수 있다. portable 버전은 설치하지 않고 압축을 풀고 바로 사용하는 프로그램을 말한다. 하지만, 처음 실행하면 동작하는 설정 프로그램이 있기 때문에, 원하는 위치에 압축을 풀거나, 풀어서 이동시킨 다음 실행하는 것이 좋다.

 

만일 cmder을 윈도우 터미널에서 쉽게 실행할 수 있도록 하려면 PATH에 등록하면 된다. Win + R을 누르고 "sysdm.cpl"을 실행하고, "고급"탭 아래 "환경 변수(N)..."에 압축을 푼 폴더의 위치를 PATH에 추가하면 된다.

b. 편리한 사용방법

Cmder을 실행하면 아래와 같은 터미널 화면이 나오는데, 다른 윈도우처럼 1영역은 메뉴, 2영역은 열려있는 터미널을 선택할 수 있는 탭, 3영역에서는 화면 내용 검색, 터미널 선택, 메뉴등 기능을 선택할 수 있다.

 

공홈 메인에 설명된 것처럼, Win + Alt + P를 사용하면 설정화면을 띄울 수 있고 아래 기능들을 커스터마이징 할 수 있는데, 설정할 수 있는 부분이 많기 때문에 내가 생각할 때 설정하면 좋을 것 같은 부분 기능 위주로 몇 가지만 기록하려고 한다.

  • Ctrl + ` (키보드의 ~ 아래 표기된 문자)로 터미널을 보이고 숨길 수 있다.

Ctrl + ` 를 눌러 cmder을 화면을 띄우고 숨길 수 있기 때문에 작업하면서 필요할 때 바로 cmder화면을 띄울 수 있다. 1에서 사용할 Hot key를 바꿀 수 있다.

 

  • Ctrl + ` 를 누르면 화면 위에서 밑으로 내려오는 화면을 만들 수 있다. (개인적으로 좋아하는 기능)

위 설정의 2를 선택하면 위에서 내려오는 화면을 만들 수 있다. 속도가 느리면 왼쪽의 "Quake style"을 선택하면 조절할 수 있는 화면이 나온다. "Size & Pos"에서 화면이 밑에서도 나오게 할 수 있고, 화면이 나타날 때 크기도 지정할 수 있다.

3에서는 시작할 때 사용할 Shell을 지정할 수 있다. Cmder이 기본이고, PowerShell, bash 등을 선택해서 실행할 수 있다.

  • /REGISTER, /UNREGISTER 

cmder.exe /REGISTER는 파일 탐색기의 context menu(오른쪽 마우스 클릭)에 "Cmder Here"를 추가해서 파일 탐색기의 특정 폴더에서 cmder 터미널을 바로 열 수 있게 해 준다. cmder /UNREGISTER는 context menu에서 다시 제거해 준다.

 

c. VSCode에 cmder 사용

Cmder를 VSCode에서 사용하려면 Settings의 Profiles에 추가해야 사용할 수 있다. 먼전 Ctrl + , 를 눌러 Settings 화면을 열고 filter에 terminal을 넣고 나서, 아래와 같이 "Terminal> Integrated> Profiles:Windows"를 찾은 다음 "Edit in settings.json"을 선택한다.

 

기존에 있던 Setting.json에 아래와 같이 Cmder관련 내용을 추가한다. Cmder실행하는 방법은 공홈에 나와있듯이

 

cmd /k <path to cmder>/cmder/vendor/init.bat

 

명령을 사용하면 되기 때문에 아래와 같이 "Cmder": { ... } 부분을 추가했다.

 

        "PowerShell": {
            "source": "PowerShell",
            "icon": "terminal-powershell"
        },
        "Command Prompt": {
            "path": [
                "${env:windir}\\Sysnative\\cmd.exe",
                "${env:windir}\\System32\\cmd.exe"
            ],
            "args": [],
            "icon": "terminal-cmd"
        },
        "Git Bash": {
            "source": "Git Bash"
        },
        "Cmder": {
            "path": [
                "${env:windir}\\Sysnative\\cmd.exe",
                "${env:windir}\\System32\\cmd.exe"
            ],
            "args": [
                "/k C:\\PROGRA~1\\cmder\\vendor\\init.bat"
            ]
        }

 

나는 cmder을 설치할 때 압축을 푼 다음 Program Files폴더에 옮겨 넣었는데, VSCode의 settings를 설정할 때 경로에 공백이 있으면("Program Files") 잘 인식하지 못하기 때문에 공백이 없는 짧은 폴더이름을 대신 사용했다. 파일이나 폴더에 대한 공백이 없는 짧은 이름을 찾고 싶으면 /X 옵션을 사용하면 표시해 준다.

 

dir /X