영감을 (inspire) 주고픈 개발 블로그

못생긴 windows Powershell 예쁘고 쓸만하게 만들기 본문

개발/세팅

못생긴 windows Powershell 예쁘고 쓸만하게 만들기

inspire12 2024. 4. 7. 03:48

맥을 5년 동안 쓰다가 최근에 회사에서 윈도우로 개발을 하게 되었습니다. 

 

맥을 쓰는 이유는 터미널과 brew 같은 패키지 매니저 등의 간편함과 예쁜 디자인 때문이었는데요

wsl를 쓰는 경우도 있었지만 윈도우에서 만든 (/mnt 이하 path) 파일을 읽고 쓰는데 속도 이슈가 있어서 잘 안 쓰게 되었는데요;

 

이번에 윈도우로 넘어가면서 알아보니 powershell 자체가 많이 좋아졌습니다. 

1. powershell 용 명령어를 맥 같은 (Unix 기반) 명령어로 쉽게 매핑해서 사용하는 걸 제공해 줍니다.

2. scoop 이란 패키지로 설치와 관리를 쉽게 할 수 있게 되었습니다. 

3. windows terminal 앱을 통해 터미널을 예쁘게 꾸밀 수 있게 되었습니다. 

 

완성 모습

 

1. 터미널 설치 

Microsoft Store > 검색 (터미널) > Windows Terminal 혹은 Windows Terminal Preview 설치 

Windows Terminal Preview는 터미널의 다음 업데이트 버전을 미리 써볼 수 있는 것으로 둘 중 하나만 깔아도 됩니다. 

 

2. 파워셀 7 설치 

기본 powershell 은 5 버전입니다. 5에선 cd -  같은 명령어가 먹지 않으니 powershell7으로 설치해 주세요 

 

powershell에서 아래의 명령어로 설치를 하거나 

# powershell install
winget search Microsoft.PowerShell
winget install --id Microsoft.Powershell --source winget

 

Microsoft Store에서 검색 후 설치 하시면 됩니다. 

 

설치 위치 

설치 위치입니다. 위의 powershell 이 기존 5 버전이고 아래가 7 버전의 위치입니다. 

이 위치를 확인하시고 나중에 intellij 내에서 기본 터미널 설정을 바꿔주시거나 하기 쉽습니다.

 

which라는 커멘드라인 툴을 설치하시면 설치 경로를 확인할 수 있습니다. 이건 아래 scoop 설치에서 설명드리겠습니다. 

 

3. 터미널 기본 설정

터미널을 켜고 창 옆에 + > 설정 혹은 ctrl +, 버튼으로 설정창으로 들어갑니다. 

그리고 좌측의 시작 > 기본프로필을 PoswerShell로 변경해 줍니다. 이제 터미널 시작 시 powershell을 기본으로 쓸 수 있습니다.

 

배경, 글씨 바꾸기

좌측 프로필 > Powershell > 추가 설정, 모양 > 배경 이미지 경로 

여기서 이미지를 바꾸면 됩니다. 배경 이미지가 너무 밝은 색이라 글씨가 잘 안 보이시다면 배경이미지 불투명도를 낮춰보시면 글씨가 잘 나타나게 됩니다.  아니면 글씨 색을 바꿔주실 수도 있습니다. 

그리고 적당히 투명성 > 배경 불투명도를 살짝 낮춰주시면 완성입니다.

 

개인적으로 박보영의 팬이라 적당한 이미지를 가져왔습니다. (출처 https://by900212.tistory.com/115)

 

무료 배경이미지는 아래 사이트를 추천합니다. 

https://unsplash.com/ko

 

아름다운 무료 이미지 및 사진 | Unsplash

어떤 프로젝트를 위해서든 다운로드 및 사용할 수 있는 아름다운 무료 이미지 및 사진입니다. 어떤 로열티 프리 또는 스톡 사진보다 좋습니다.

unsplash.com

 

 

3.  scoop 설치 및 추천 패키지와 설정 

powershell에서 진행합니다. 

scoop 설치

# scoop
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
irm get.scoop.sh | iex

 

추천 설치 도구들입니다.

scoop bucket add extras 
scoop bucket add java
scoop bucket add nerd-fonts
scoop install aria2 
scoop install which fzf jq zoxide fd nerd-fonts bat FiraMono-NF
scoop install sudo curl grep gzip tar touch vim neovim 7zip powertoys bottom ntop
# 안써봤는데 좋아보여서 넣어봄
scoop install coretemp cpu-z crystaldiskinfo aria2 crystaldiskmark filezilla honeyview hwmonitor hxd postman putty unlocker vscode python everything openjdk17 python nvm mysql yarn docker 

scoop install kubectx k9s

 

소개를 몇 개 해보면 

zoxide는 path를 저장해 주는 도구입니다. 

저는 폴더를 문서 폴더에 workspace라는 폴더를 만들어서 관리하기 때문에 z workspace로 설정해 두었습니다. 

scoop install zoxide 
Invoke-Expression (& { (zoxide init powershell | Out-String) })

 

sudo는 터미널에서 껐다 키는 것 없이 관리자권한으로 변경해 줍니다

which는 환경변수에 저장된 위치를 확인할 수 있습니다. 

ntop 은 top을 예쁘게 볼 수 있습니다.

 

4.  oh-my-posh 설정 

폰트 설정과 oh-my-posh 설정 값입니다. 테마는 마음에 드는 것으로 바꾸셔도 됩니다.

 

Install-Module Terminal-Icons -Repository PSGallery -Force
Install-Module posh-git -Scope CurrentUser -Force
Install-Module oh-my-posh -Scope CurrentUser -Force

oh-my-posh init pwsh --config 'https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/atomic.omp.json' | Invoke-Expression
scoop install https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/oh-my-posh.json

 

 

5. bash 설정입니다. 

notepad $profile을 하면 터미널을 시작하면 자동으로 실행되는 스크립트를 편집할 수 있습니다. (scoop으로 vi 설치하시면 vi 로도 가능합니다.)

# notepad $profile
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\easy-term.omp.json" | Invoke-Expression
Import-Module -Name Terminal-Icons
Invoke-Expression (& { (zoxide init powershell | Out-String) })

Set-Alias vim nvim
Set-Alias ll ls
Set-Alias grep findstr
Set-Alias k kubectl
Set-PSReadLineOption -EditMode Emacs
Set-PSReadLineOption -BellStyle None
Set-PSReadLineKeyHandler -Chord 'Ctrl+d' -Function DeleteChar
Set-PSReadLineOption -PredictionSource History
Set-PSReadLineOption -PredictionViewStyle ListView

function historyfunc{
type $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
}
Set-Alias history historyfunc

 

10~14 라인 세팅이 되어있으면 자동완성을 지원해 줍니다. 

아래 function 부분은 powerhsell의 기본 history (혹은 h)는 현제 터미널에서 쓴 것만 보이기 때문에 함수로 오버로딩해서 history가 전체를 볼 수 있도록 했습니다. 

 

참고