windows shell使用指南
終端工具
Fluent Terminal
Fluent Terminal 是是專屬於 Windows 平台,利用 UWP 技術打造的顏值超高的終端模擬器,其響應速度僅稍遜於自帶的默認 PowerShell 終端,設置是 GUI 方式的,而且功能非常強大,值得推薦。
安裝方式:
-
可以直接在win10 應用商店安裝。
-
從github地址安裝:https://github.com/felixse/FluentTerminal
將Fluent Terminal放到右鍵菜單
下載之后直接執行luentTerminal-master\Explorer Context Menu Integration\Install_with_icon.bat就可以了
hyper
Hyper 是基於 Electron 的跨平台應用,配置方便、插件豐富、界面美麗。當然,避免不了的是 Electron 資源消耗大,但是它們的拓展性都非常強大,可以試一試。
windows terminal
安裝方式可以直接從應用商店安裝,自定義功能非常強大,不過許多功能需要通過配置文件來完成,上手難度比其它工具略高。
tabby(原名Terminus)
Terminus也是基於 Electron 的跨平台應用,配置方便、插件豐富、界面美麗。當然,避免不了的是 Electron 資源消耗大,但是它們的拓展性都非常強大,值得嘗試。
軟件包管理工具
chocolatey
管理員打開cmd,執行命令
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
軟件非常豐富,操作也非常的簡單,非常適合懶人玩家使用。
常用命令:
#列出本地已安裝的包
choco list --local-only
#列出Windows系統已安裝的軟件
choco list -li
choco search <keyword> #搜索軟件
choco list <keyword> #跟 search 命令功能類似
choco install <package1 #package2 package3...> 安裝軟件
choco install <package> -version *** #安裝指定版本
choco uninstall name #卸載軟件
choco version <package> #查看安裝包的版本情況
choco upgrade <package> #更新某個軟件
choco list -localonly #查看一下所有安裝在本地的包的列表
choco list -lo #功能同上
winget
安裝地址:https://github.com/microsoft/winget-cli/releases/
微軟官方推出的,目前軟件數量還不是特別多,不過以后可能會非常的多,畢竟背靠微軟。
scoop
安裝方式:
#在 PowerShell 中輸入下面內容,保證允許本地腳本的執行:
set-executionpolicy remotesigned -scope currentuser
#然后執行下面的命令安裝 Scoop:
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
#或者
iwr -useb get.scoop.sh | iex
- apps : 軟件文件夾,所有非全局安裝的軟件都在這
appname/current # 當前軟件版本對應的文件夾的軟鏈接,如果你對某個軟件設置調用該文件夾下的軟件(例如 maven 環境設為 current 目錄,那么這個指向的軟件永遠都會是最新版本) - buckets : 軟件源文件夾,所有軟件的下載地址等元數據都保存在這里,內部文件夾都是由 git 形成的,因此也可以采用 git pull 來更新源。
- cache :軟件安裝包所在位置,如果遇到軟件下載緩慢的情況,也可以用其他工具下載對應軟件,然后修改文件名放置到這個目錄下進行安裝。
- persist : 永久配置文件夾,大部分的軟件的配置都會存到這個目錄下,以保證軟件最新版用的都是原來的配置。
- shims :軟件二進制的超鏈接,基本所有的命令行工具都會在這個文件夾內建立一個超鏈接,目的是為了防止環境變量 PATH 受到過多污染。
# 幫助
scoop help
# 搜索安卓相關軟件
scoop search android
# 安裝 git
scoop install git
# 給所有用戶安裝 git
sudo scoop install git --global # 需要先安裝 sudo
# 卸載 git
scoop uninstall git
# 更新所有軟件
scoop update *
# 查看 Android Studio 的軟件信息
scoop info android-studio
# 刪除軟件的老版本
scoop cleanup
# 列出已安裝的名字中帶有 adopt 的軟件
scoop list adopt # 不填寫則列出所有已安裝軟件
# 切換軟件版本
scoop reset python27
#下載加速
scoop install aria2
scoop config aria2-max-connection-per-server 16
scoop config aria2-split 16
scoop config aria2-min-split-size 1M
# 添加軟件源功能依賴於 git,請確保電腦中已經安裝 git 並且配置好了環境變量(也可以使用 scoop 安裝 git)
# 列出官方已知軟件源
scoop bucket known
# 添加額外軟件源
scoop bucket add extras # 推薦添加這個軟件源,大部分軟件都再這個源里
# 添加官方未知軟件源
scoop bucket add name gitrepo # name 處填寫自定義的名字,gitrepo 處填寫 git 地址
scoop的軟件數量取決於自己配置的倉庫,它有非常高的定制性,更適合進階玩家使用。
linux命令配置
git
需要安裝 Git,PATH 中除了 git 所需的 Git、Git\cmd 之外,額外加入 Git\usr\bin 就可以了
busybox
直接使用安裝包管理工具安裝,例如:
choco install busybox
目前正在更新,但是使用每一個命令時都需要添加一個busybox,這一點不是很方便,想要使用的話,可以配置軟連接
for %%i in (ar, arch, ash, awk, base64, basename, bash, bunzip2, bzcat, bzip2, cal, cat, chmod, cksum, ^
clear, cmp, comm, cp, cpio, cut, date, dc, dd, df, diff, dirname, dos2unix, dpkg, dpkg-deb, du, echo, ed,^
egrep, env, expand, expr, factor, false, fgrep, find, fold, fsync, ftpget, ftpput, getopt, grep, groups,^
gunzip, gzip, hd, head, hexdump, iconv, id, ipcalc, kill, killall, less, link, ln, logname, ls, lzcat, lzma,^
lzop, lzopcat, man, md5sum, mkdir, mktemp, mv, nc, nl, od, paste, patch, pgrep, pidof, pipe_progress, pkill,^
printenv, printf, ps, pwd, readlink, realpath, reset, rev, rm, rmdir, rpm, rpm2cpio, sed, seq, sh, sha1sum,^
sha256sum, sha3sum, sha512sum, shred, shuf, sleep, sort, split, ssl_client, stat, strings, su, sum, tac, tail,^
tar, tee, test, timeout, touch, tr, true, truncate, ts, ttysize, uname, uncompress, unexpand, uniq, unix2dos,^
unlink, unlzma, unlzop, unxz, unzip, usleep, uudecode, uuencode, vi, watch, wc, wget, which, whoami, whois,^
xargs, xxd, xz, xzcat, yes, zcat)^
do mklink C:\Windows\System32\%%i.exe C:\Windows\System32\busybox.exe
gow 和 unxutils
好處是每一個命令都是獨立的小工具,但是已經好久不更新了,不推薦使用
安裝常用工具
choco install gsudo
choco install winfetch
choco install colortool
choco install fd
choco install fzf
choco install zoxide
choco install bottom
choco install lsd
choco install neovim
工具使用
zoxide使用
zoxide的使用需要在powershell中進行配置
#打開配置文件
notepad $PROFILE
#在文件中添加內容
Invoke-Expression (& {
$hook = if ($PSVersionTable.PSVersion.Major -lt 6) { 'prompt' } else { 'pwd' }
(zoxide init --hook $hook powershell) -join "`n"
})
FZF使用
可以搭配zoxide中的zi命令進行使用,快速找到常用命令
Ctrl-T 快速選擇當前目錄文件,並把文件名打印出來
Ctrl-R 使用fzf來過濾history命令
ALT-C 進入選中的目錄
lsd使用
lsd命令可以替換powershell中的ls命令
#打開配置文件
notepad $PROFILE
#在文件中添加內容
Remove-Item alias:\ls
Set-Alias ls lsd
function getlist {lsd -l}
Set-Alias ll getlist
nvim
#windows 用戶配置文件在~\AppData\Local\nvim下面的init.vim文件,沒有手動建一個
#具體配置可以自己查詢
#可以給nvim起一個別名
Set-Alias vim nvim
powershell美化
背景主題
Fluent Terminal可以直接利用自帶的主題功能自己配置顏色,簡單而且自定義程度高,懶得自己配置的話也可以導入iterm2里面的主題,直接導入 schemes 中的主題即可。
或者可以使用colortools管理終端主題
安裝方式
choco install colortools
使用方式
colortool -s #顯示所有可用方案
colortool -c #顯示當前的色彩方案
colortool -b OneHalfDark #修改主題方案,可以是默認方案,也可以是iterm2方案
ColorTool -b .\DimmedMonokai.itermcolors
背景圖片,透明度之類的也可以在Fluent Terminal中自己設置。
PowerShell 的提示符
oh-my-posh
choco install oh-my-posh
#安裝好之后,使用管理員身份打開p
#繞過power shell執行策略,使其可以執行腳本文件<后面會用到>
Set-ExecutionPolicy Bypass
#oh-my-posh提供主題
Install-Module oh-my-posh -Scope CurrentUser
#posh-git將git信息添加到提示中
Install-Module posh-git -Scope CurrentUser
#啟動編輯power shell配置文件的引擎
if (!(Test-Path -Path $PROFILE )) { New-Item -Type File -Path $PROFILE -Force }
#使用記事本打開配置文件
notepad $PROFILE
#在打開的記事本中寫入如下內容(腳本文件),並保存
Import-Module posh-git
Import-Module oh-my-posh
Set-PoshPrompt -Theme JanDeDobbeleer
#該命令可以查看預裝的主題,然后修改配置
Get-PoshThemes
notepad $PROFILE
. $PROFILE
starship
starship的官方文檔和下載地址
#安裝starship
choco install starship
#添加內容
Invoke-Expression (&starship init powershell)
#設置配置
mkdir -p ~/.config && touch ~/.config/starship.toml
安裝字體
地址:https://www.nerdfonts.com/font-downloads
從這上面下載字體,需要下載Nerd字體,推薦DejaVuSansMono
中文亂碼問題
打開 控制面板—>區域—>管理—>更改系統區域設置,然后勾選:使用Unicode UTF-8提供全球語音支持
就可以全局使用utf8了,這是可以在終端查看chcp,出現的是65001就代表使用的是utf-8的格式。
但是我發現這樣依然存在問題,例如在執行重定向輸出時:
ls > a.txt
輸入的文件格式並不是utf-8的,然后從網上找到一個方法,可以在配置文件中添加配置讓輸出的文件格式為utf-8,
$PSDefaultParameterValues['Out-File:Encoding'] = 'utf8' #(帶有BOM的UTF8)
但是由於powershell 強制使用帶有BOM的UTF8,所以依然會出現問題,這個我在powershell5上沒有找到結解決辦法,不過想使用正常的UTF-8,可以使用powershell7,powershell7默認使用的是無BOM的UTF8,功能也更加強大。
powershell 自動補全
使用過zsh中的 autosuggestions 之后就回不去了,希望可以在powershell實現,然后發現了大神的解決辦法,參考https://www.brothereye.cn/windows/797/。
此功能由 PowerShell/PSReadLine issue 687: Fish-like autocompletion 發起討論,並在 issue 1468: Predictive IntelliSense 中得到實現,有時間的伙伴可以點擊鏈接去查看作者的解答,我這里簡述下 1468 中完成的功能:1. 完成提示和補全歷史命令;2. 增加動態提示函數以及參數。
將 PSReadLine 更新到 2.1.0-beta1 以上即可:
Install-Module -Name PowerShellGet -Force # 升級 PSGEt
Install-Module -Name PSReadLine -AllowPrerelease -Force # 升級 PSReadLine
Get-PSReadLineOption # 顯示所有可以配置的選項
Get-PSReadLineKeyHandler # 顯示所有可以配置的快捷鍵
#之后在配置文件中通過 Set-PSReadLineOption 和 Set-PSReadlineKeyHandler 可以進行配置。
然后需要配置$PROFILE
具體配置方法可以參考微軟官方的回答
Set-PSReadLineKeyHandler -Key "Ctrl+d" -Function MenuComplete
Set-PSReadLineKeyHandler -Key "Ctrl+f" -Function ForwardWord
Set-PSReadLineKeyHandler -Key "Ctrl+b" -Function BackwardWord
Set-PSReadLineKeyHandler -Key "Ctrl+z" -Function Undo
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward
Set-PSReadLineOption -Colors @{ "InlinePrediction" = '#2F7004'}
SSH配置
fluent terminal ssh認證
利用ssh命令生成密鑰
ssh-keygen -t rsa
生成公鑰id_rsa.pub需要放到服務器上,和私鑰id_rsa需要放到自己的主機上
將公鑰放到~/.ssh/目錄下,並命名為authorized_keys
然后設置服務端支持密鑰登錄
sudo vim /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
#設置root用戶可以登錄
PermitRootLogin yes
#重啟ssh
service sshd restart
配置scp免密傳輸
vim ~/.ssh/config
#配置文件內容
Host servername # 別名,域名縮寫
HostName sever.com # 域名/IP
User username # 登錄該域名使用的賬號名
Port 22 #端口
IdentityFile ~/.ssh/id_rsa # 私鑰文件的路徑
chmod 600 config
配置好之后可能會發生錯錯誤
遇到報錯:Bad owner or permissions on C:\Users\xxx/.ssh/config ,
禁用config的繼承關系並修改權限為自己用戶的完全控制,修改后如下圖所示

然后利用scp復制文件的時候就可以用如下命令

安裝sshfs
參考文檔 https://www.cnblogs.com/xieqk/p/ssh-sshfs-win-mount-winfsp-dokan.html
- sshfs-win:https://github.com/billziss-gh/sshfs-win/releases
- winfsp:https://github.com/billziss-gh/winfsp/releases
- SSHFS-Win Manager:https://github.com/evsar3/sshfs-win-manager/releases (GUI,可選)
參控鏈接
https://www.brothereye.cn/windows/797/
https://coolcode.org/2018/03/16/how-to-make-your-powershell-beautiful/#Windows-10-控制台的顏色設置
