PowerShell¶
PowerShell 是一个基于 .NET 的跨平台 Shell。Windows 自带的 PowerShell(powershell.exe
)是不跨平台的旧版,新版(pwsh.exe
)需要自己安装。
安装¶
文档:在 Windows 上安装 PowerShell - PowerShell | Microsoft Learn
推荐用包管理器安装,例如 WinGet,但是不推荐 Scoop。
Since Scoop uses pwsh.exe internally, to update PowerShell Core itself, run
scoop update pwsh
from Windows PowerShell, i.e. powershell.exe. 1
配置文件¶
配置文件就是一个 PowerShell 脚本,每次 PowerShell 启动时它会被自动执行。$PROFILE
变量中保存了它的路径。
文档:about Profiles - PowerShell | Microsoft Learn
创建配置文件¶
第一次用的话,可能没有配置文件,需要手动创建。
New-Item -Path $PROFILE -Type File -Force
编辑配置文件¶
code $PROFILE
可以在配置文件最后加一个 cls
命令,清掉没用的信息。
重新加载配置¶
用 Dot sourcing operator .
重新执行一遍配置文件。
. $PROFILE
不要用 Call operator &
!它是在一个子作用域里执行脚本,脚本里的赋值不会影响全局。
增强编辑体验¶
使用 PSReadLine 模块。在新的 PowerShell 中它已经被内置了,不用自己安装了。
查看键位¶
Get-PSReadLineKeyHandler
命令补全¶
我比较喜欢 copilot 那种 tab 补全,但是 PSReadLine 只是把你以前输入的相似内容提示给你,整行补全基本上没什么用。我选择退而求其次,按一下 tab 只向前补全一个单词。
在配置文件里加上
Set-PSReadLineKeyHandler -Key Tab -Function ForwardWord
主题美化¶
使用 oh-my-posh 实现,但会使 PowerShell 启动变慢。文档:Introduction | Oh My Posh。
gcm 命令¶
gcm
全称 Get-Command,类似以前 cmd 里的 where
命令和 linux 的 which
命令。获取所有 xxx
命令的方法:
gcm xxx -All
PowerShell 里的 where
指的是 Where-Object。如果要调用 cmd 的 where,需要用 where.exe
。2
环境变量¶
临时设置环境变量,语法和 cmd 的不一样。做 golang 交叉编译时常用。
$env:GOOS="linux"
$env:GOARCH="amd64"
读取环境变量
$env:GOOS
相关文章