PowerShell
在Windows10中的地位被慢慢提升,在最近的系统版本中,Powershell已经在资源管理器中彻底代替之前的cmd
出现。因此我本人也逐渐把运行命令的习惯向PowerShell迁移。
在使用过程当中发现PowerShell虽然默认支持相似Unix系统的ls
命令,可是其默认展现方式是很是详细的,包括Mode
,LastWriteTime
,Length
和 Name
共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 -Name
或Get-ChildItem -Name
来实现。
下面来讲说一些关于PowerShell中设置命令别名Alias的经常使用相关命令和方法:api
如下命令中的大小写不敏感:session
Get-Alias
或gal
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
命令设定别名list
:code
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
命令删除已设定的别名。
如删除别名ls
:it
PS C:\> Remove-Item alias:\ls
在PowerShell中直接使用Set-Alias
或New-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-Alias
或New-Alias
。
之后每次在打开PowerShell会话框的时候其会先读取$profile
文件中的内容。
试试效果:
PS D:\apktool> ls apktool.bat apktool.jar