PowerShell设置命令别名Alias

前言

PowerShell在Windows10中的地位被慢慢提升,在最近的系统版本中,Powershell已经在资源管理器中彻底代替之前的cmd出现。因此我本人也逐渐把运行命令的习惯向PowerShell迁移。
在使用过程当中发现PowerShell虽然默认支持相似Unix系统的ls命令,可是其默认展现方式是很是详细的,包括ModeLastWriteTime,LengthName共4个字段。这里的ls实际上是PowerShell命令Get-ChildItem的一个别名,显示效果以下:shell

PS D:\apktool> get-childitem


    Directory: D:\apktool


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        2/23/2016     20:15            159 apktool.bat
-a----        2/23/2016     20:16        6433219 apktool.jar

而在实际工做中,其实我是比较喜欢用ls命令只显示文件名。那么在PowerShell中默认的命令须要输入ls -NameGet-ChildItem -Name来实现。
下面来讲说一些关于PowerShell中设置命令别名Alias的经常使用相关命令和方法:api

相关方法

如下命令中的大小写不敏感session

查看别名

  • 查看此Session中已经设定的全部别名:Get-Aliasgal
PS C:\> Get-Alias
CommandType     Name
-----------     ----
Alias           % -> ForEach-Object
Alias           ? -> Where-Object
Alias           ac -> Add-Content
Alias           asnp -> Add-PSSnapin
  • 查看某别名的原命令,如ls的原命令:> Get-Alias ls
  • 查看某原命令的别名,如Get-ChildItem的别名:> Get-Alias -Definition Get-ChildItem

建立或更改别名

建立不带参数的别名

使用Set-Alias命令建立或更改别名。注意使用该命令设定的别名只在目前的Windows PowerShell session中生效。也就是说在关闭此会话后这个别名将会失效。如何建立永久的别名?往下看
如为Get-ChildItem命令设定别名listcode

PS C:\> Set-Alias -Name list -Value get-childitem

或简单一些:资源

PS C:\> Set-Alias list get-childitem

注意:对于系统默认设定的别名,不可在删除此别名以前从新对这个别名赋值。
另外,PowerShell中还有一个命令New-Alias,该命令和Set-Alias基本功能同样,只是前者不能更改别名,只能建立别名。当试图使用New-Alias命令建立已存在的别名时,会报错。get

建立或更改带参数的别名

若是命令带参数如想为Get-ChildItem -Name设定别名为ls则咱们须要两步,第一步为这个带参数原命令设定一个中间function,第二步为这个function指定别名:cmd

PS C:\> function getlist {Get-ChildItem -Name}
PS C:\> Set-Alias ls getlist

删除别名

使用Remove-Item alias命令删除已设定的别名。
如删除别名lsit

PS C:\> Remove-Item alias:\ls

建立永久的别名

在PowerShell中直接使用Set-AliasNew-Alias命令建立的别名在关闭此Session后即会失效,防止此现象的方法是将此命令写入Windows PowerShell profile文件。
查看此文件在计算机中的位置:io

PS C:\> $profile

通常该文件在没有建立前是不存在的,使用如下命令为当前用户建立profile命令并返回文件地址:ast

PS C:\> New-Item -Type file -Force $profile

通常建立的位置在~\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
打开文件,键入文件内容为Get-ChildItem -Name建立别名ls

function getFileName{
    Get-ChildItem -Name
}
Remove-Item alias:\ls
Set-Alias ls getFileName

这里首先为Get-ChildItem -Name建立了方法getFileName做为中介,而后为该方法赋予别名ls,可是由于ls是Windows PowerShell中的默认别名,所以必须先删除再建立,因此先使用Remove-Item再使用Set-AliasNew-Alias
之后每次在打开PowerShell会话框的时候其会先读取$profile文件中的内容。

试试效果:

PS D:\apktool> ls
apktool.bat
apktool.jar
相关文章
相关标签/搜索