powershell 的别名、函数与配置文件

alias 别名,使用它我们可以提高使用命令行的效率。

例如在 Linux 中,我喜欢把 d 设置为 docker的别名。只需要在终端中执行

alias d='docker'
d ps

那么此时 d ps 的作用就等于 docker ps

那么在 Windows 上面要怎么使用呢?我现在终端这个程序一打开,默认使用的是 powershell,所以我也主要用它了。

New-Alias

在这上面使用别名的命令是 New-Alias,例如

New-Alias d docker

详细说明可看 官方文档

像有些程序,它的路径比较长,我们也可以通过别名的方式,来较快速地使用

New-Alias whisper "C:\Users\powersee\PycharmProjects\pythonProject\venv\Scripts\whisper.exe"

但是,New-Alias 的值是不能包含空格的,还是用 docker 来举例子。

如果我在 Linux,我可以这样

alias di='docker images'
di

后面的值只需要用引号包裹就行。但是在 powershell 里,alias 不能这样设置,此时得用函数 function

function

官方文档,示例如下:

function di { docker images }

按我的理解,别名就是用来缩短命令的,因为 powershell 的命令都比较长,而且还用 - 连接,例如 Get-ChildItem。可读性确实比较强,但是敲起来就不是那么方便了。

函数就可以把长命令封装起来,其实相比 alias 也就多了花括号。

我这边想的是,缩短我使用 whisper 时需要输入的字符。所以我定义了一个函数 wme 意思是 whisper medium english。

function wme { "C:\Users\powersee\PycharmProjects\pythonProject\venv\Scripts\whisper.exe" --model medium --language English }

那么按理来说,我之后只要执行 wme xxx.mp3 就等同于

"C:\Users\powersee\PycharmProjects\pythonProject\venv\Scripts\whisper.exe" --model medium --language English xxx.mp3

然而在 function 里就不是这么用了,后面的 xxx.mp3 它其实是算一个参数。正确的写法应该是这样:

function wme { & "C:\Users\powersee\PycharmProjects\pythonProject\venv\Scripts\whisper.exe" --model medium --language English $args[0]}

powershell 的配置文件

我们定义的别名和函数,应该怎么保存下来,让我们下次打开 powershell 时,就自动加载呢?在 Linux 上面我们是将它们写入用户目录下的 .bashrc 或者 .zshrc 来实现的。

那么 powershell 里面,有没有类似 .bashrc 的文件呢?也是有的,但是默认情况下没有这个文件。可以先执行

Test-Path $profile

判断一下有没有这个文件,有的话会输出 True。

$profile  # 查看它的路径
notepad $profile # 用记事本打开这个文件

如果没有这个配置文件,可以使用命令来创建它

New-Item -path $profile -type file –force

它一般的路径在用户目录下的 Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

之后我们只需将别名和函数粘贴到里面,下次启动 powershell 就会自动加载的。