본문으로 바로가기

윈도우즈 콘솔 에뮬레이터 cmder

category 윈도우즈/Windows 일반 2018. 3. 1. 11:00

기존의 윈도우즈 콘솔에 편의성과 가시성, 시각적으로 아름답게 만들어주는 cmder 라는 프로그램을 소개합니다.

cmder 소개

cmder는 윈도우즈에서 사용 가능한 콘솔 에뮬레이터가 없다는 순수한 좌절로부터 만들어진 소프트웨어 패키지이다. Conemu를 기반으로 주요 설정을 하고, Mononaki 색 구성표를 사용하며, 놀라운 Clink 기능의 추가와 사용자 정의 가능한 프롬프트 레이아웃을 제공한다.

포터블 cmder

cmder의 강점은 포터블로서 제공된 다는 것이다. 어떠한 외부적 종속성없이 자체 설계되어 USB나 클라우드 스토리지에 적재하여, 콘솔, aliase(별칭), 바이너리(wget, curl, git)등을 어디에서나 휴대할 수 있다.

Cmder 설치

홈페이지에서 제공하는 다운로드 링크는 Git-for-Windows 가 포함된 Full 버전(압축된 7z버전도 존재)과 그렇지않은 Mini 버전을 다운로드할 수 있다.

  1. 홈페이지에서 원하는 버전을 다운로드하고 압축을 풀자.
  2. cmder 폴더를 원하는 위치로 이동시켜도 되는데 C:\Program Files 나 관리자권한이 필요한 경로에는 위치시켜서는 안된다(필자는 리눅스 시스템의 홈디렉토리와 유사한 C:\Users\사용자명에 위치시켰다).
  3. Cmder.exe로 실행한다.

Cmder의 mini 버전은 Git-for-Windows가 포함되어 있지 않기 때문에 CMD에서 bash 명령어들을 사용할 순 없다. 이는 Full 버전을 이용하든가 Git-for-Windows를 따로 설치해줘야 한다.

Cmder 컨택스트 메뉴추가

윈도우즈 응용 프로그램들 중에는 설치시 마우스 우측버튼으로 통합되는 메뉴들이 있는데 cmder도 이를 제공한다. cmder의 경우는 선택한 폴더에서 cmder를 여는 기능을 추가한다.

  1. 관리자 권한으로 CMD를 연다.
  2. Cmder가 위치한 디렉토리로 이동한다.
  3. .\cmder.exe /REGISTER ALL 실행한다(액세스가 거부된다면 관리자권한으로 CMD를 실행했는지 확인).

윈도우즈 탐색기창에서 디렉토리를 마우스 우클릭하면 Cmder Here이 등록되어 있다.

Cmder 삭제

포터블로 제작되다보니 따로 언인스톨러가 제공되지 않는다. 다만 레지스트리가 남기에 이를 직접 삭제해주어야 한다.

  1. 만일, Cmder 컨택스트 메뉴추가를 했었다면 cmder.exe /UNREGISTER ALL를 실행한다.
  2. HKEY_CLASSES_ROOT\Directory\shell\Cmder를 제거한다.
  3. HKEY_CLASSES_ROOT\Directory\Background\shell\Cmder를 제거한다.

Cmder 설정

Cmder 한글설정

우리나라 대부분의 사람들이 한글 윈도우즈를 쓸테니 이 문제를 피해갈 수 없다. 기본 한글 윈도우즈는 ANSI로 설정되어 있기에 이를 변경해줘야 한다. 아래와같이 기본설정 상태에서는 한글이 제대로 표기되지 못한다.

Cmder의 우측하단의 메뉴버튼을 눌러 메뉴를 띄우고 Setting(설정)을 선택하자.

Main의 font 부분을 원하는 글꼴로 선택해주고 Font charset 부분을 Hangul로 선택해주자. 코딩용 글꼴이 없다면 D2 Coding 1.3라도 사용하도록 하자.

Environment의 입력란에 set LANG=ko_KR.UTF-8chcp utf-8을 입력하자.

Cmder를 재시작하고 확인해보면 한글표기가 정상적으로 이루어진다.

WSL(bash) 추가

Windows Subsystem for Linux(WSL)를 사용하고 있다면 이를 추가해보도록 하자. 이 방법을 따라 다른 셸을 추가할 수도 있다.

우선, Win + Alt + TTasks 창을 불러온다.

  1. 하단의 + 버튼을 클릭하고 새로운 Task를 추가한다.
  2. Task 명을 입력한다. bash::ubuntu라고 입력했는데 bash는 그룹명, ubuntu는 이름으로 인식한다. Cmder는 기본적으로 bash 그룹이 만들어져 있고 각각 mintty(Cygwin) 와 git-for-windows 가 속해있다. 자신의 입맛대로 그룹과 이름을 작성하도록 하자.
  3. Task parameters는 아이콘 설정을 할 수 있는데 /icon "%USERPROFILE%\AppData\Local\lxss\bash.ico"라고 하면 WSL의 bash.ico 를 찾아올수 있어야하는데 필자는 실패했다. 그래서 따로 icon 드라이를 별도로 설정하고 ubuntu.ico를 다운로드하여 사용했다.
  4. 명령 입력필드에는 이 작업을 시작할때 수행할 명령을 입력한다. bash 호출은 %windir%\system32\bash.exe ~ -cur_console:p와 같이 한다.

Cmder 포터블용 셸 사용자설정

cmder에서 제공하는 셸 설정파일을 사용하여 사용자 전용 설정을 할 수 있다. 아래의 파일을 편집하여 자신의 구성을 추가할 수 있다.

Shell Cmder Portable User Config
Cmder %CMDER_ROOT%\config\user-profile.cmd
PowerShell $ENV:CMDER_ROOT\config\user-profile.ps1
Bash/Mintty $CMDER_ROOT/config/user-profile.sh

리눅스의 'profile.d'와 같이 모든 셸 유형을 지원

.cmd|.bat, *.ps1, *.sh 스크립트를 작성하고 %CMDER_ROOT%\config\profile.d 폴더에 넣음으로써 Cmder 시작 구성을 추가할 수 있다.

Shell Cmder 'Profile.d' Scripts
Cmder %CMDER_ROOT%\config\profile.d\*.bat and *.cmd
PowerShell $ENV:CMDER_ROOT\config\profile.d\*.ps1
Bash/Mintty $CMDER_ROOT/config/profile.d/*.sh

키보드 단축키

탭조작

  • Ctrl + ` : 작업표시줄에 숨기기/보이기 토글
  • Ctrl + W : 탭닫기
  • Ctrl + T : 새탭 상자 띄우기
  • Shift + Alt + #Number : 빠른 새탭열기 1 - CMD, 2 - PowerShell
  • Ctrl + Tab : 다음 탭으로 변경
  • Ctrl + #Number : 탭 #Number로 탭 변경
  • Ctrl + Shift + Tab : 이전 탭으로 변경
  • Alt + Enter : 전체화면으로

Shell

  • Ctrl + Alt + U : 상위(부모) 디렉토리로 이동
  • End, Home, Ctrl : 윈도우즈의 평소처럼 텍스트를 이동
  • Ctrl + R : 히스토리(지난 명령어) 찾기
  • Shift + 마우스 : 버퍼에서 텍스트 선택 및 복사
  • Ctrl + Shift + V 혹은 마우스 우클릭 : 텍스트 붙여넣기

Aliases

Cmder(cmd.exe) Aliases

alias 원하는이름=명령어와 같은 명령을 사용하여 cmd.exe 세션에 대한 간단한 alias(별칭)을 정의 할 수 있다. cmd.exe 별칭은 $1-9 또는 $* 특수문자를 통해 선택적 매개변수를 지원하므로 vi [파일명]으로 입력된 별칭은 vi=vim.exe $*로 작성해둔 별칭으로 인해 vim.exe에서 [파일명]을 불러오게 된다.

cmd.exe 별칭은 좀 더 복잡해질 수도 있는데 DOSKEY.EXE documentation에서 복잡한 별칭/매크로에 대한 자세한 내용을 참조하자.

alias.bat 명령을 사용하여 정의된 별칭은 자동으로 %CMDER_ROOT%\config\user-aliases.cmd파일에 저장된다.

별칭 및 다른 프로필 설정을 영구적으로 만들려면 다음 중 하나에 추가하자.

이것들은 $CMDER_ROOT/vendor/init.bat에 의해 순서대로 로드된다. %CMDER_ROOT%에 저장된 것은 포터블(이식, 이동가능한)한 설정이며 다른 컴퓨터에 cmder를 따른다.

  • %CMDER_ROOT%\config\profile.d\*.cmd *.bat
  • %CMDER_ROOT%\config\user-aliases.cmd
  • %CMDER_ROOT%\config\user-profile.cmd

Bash.exe|Mintty.exe Aliases

Bash 셸은 선택적 매개변수를 사용하여 간단하고 복잡한 별칭을 기본적으로 지원하므로 약간 다르게 작동한다. alias 원하는이름=명령어를 입력하면 현재 실행중인 세션에 대해서만 별칭을 만든다.

별칭 및 다른 프로필 설정을 영구적으로 만드려면 다음 중 하나에 추가하자.

이것들은 $CMDER_ROOT/vendor/git-for-windows/etc/profile.d/cmder.sh 명령에의해 로드된다. $CMDER_ROOT에 저장된 것은 포터블(이식, 이동가능한)한 설정이며 다른 컴퓨터에 cmder를 따른다.

  • $CMDER_ROOT/config/profile.d/*.sh
  • $CMDER_ROOT/config/user-profile.sh
  • $HOME/.bashrc

$CMDER_ROOT/config/user-profile.sh에 bash 별칭을 추가하면 다른 기기에 복사하면 cmder를 따라가지만 $HOME/.bashrc에 정의된 별칭은 그렇지 않는다.

PowerShell.exe Aliases

PowerShell은 원래부터 [new-alias | set-alias] alias 명령어와 같은 간단한 별칭을 지원해왔지만 선택적 매개변수를 사용하는 복잡한 별칭은 PowerShell 세션에서 지원되지 않는다. get-help [new-alias|set-alias] -full를 입력해서 PowerShell 별칭에 대한 도움말을 보도록하자.

별칭 및 다른 프로필 설정을 영구적으로 만들려면 다음 중 하나에 추가하자.

이것들은 $ENV:CMDER_ROOT\vendor\user-profile.ps1에 의해 순서대로 로드된다. $ENV:CMDER_ROOT에 저장된 것은 포터블(이식, 이동가능한)한 설정이며 다른 컴퓨터에 cmder를 따른다.

  • $ENV:CMDER_ROOT\config\profile.d\*.ps1
  • $ENV:CMDER_ROOT\config\user-profile.ps1

SSH Agent

윈도우즈용 Git에 함께 포함된 SSH를 시작하려면 단순히 vendor/git-for-windows/cmd 폴더에 있는 start-ssh-agent를 호출하면된다.

Cmder를 시작할때 SSH도 실행되기 원한다면 %CMDER_ROOT%/config/user-profile.cmd안에 @call "%GIT_INSTALL_ROOT%/cmd/start-ssh-agent.cmd"를 추가하도록하자.

Git이 포함된 버전

Cmder는 기본적으로 Git 설치가 적재되어 배포된다(Full 버전). Cmder를 시작하는 각 인스턴스에서 또 다른 Git 바이너리가 제공되고 있는지 찾으려하며, git.exe 바이너리를 찾는다면, Cmder는 버전을 적재된 버전과 비교하게 된다. 적재된 git.exe 바이너리는 사용자가 설치한 것보다 최신 버전인 경우에만 사용된다.

Git의 선호하는 버전을 %PATH% 환경변수에 포함시켜서 사용할수 있다.