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
相關文章
相關標籤/搜索