不知道各位有沒(méi)有接觸過(guò)linux,我才疏學(xué)淺,對(duì)alias的認(rèn)識(shí)是從linux上來(lái)的。Linux常用的Bash命令也是有上百個(gè),雖然一般情況下命令都非常簡(jiǎn)短,不過(guò)很多時(shí)候需要大量的卻是大量的參數(shù),這樣,對(duì)很多初學(xué)者來(lái)說(shuō),背命令變成為最頭疼的事情,也使得很多Linux初學(xué)者望而生畏。因此,在linux下,很常用的就是alias,也就是別名。當(dāng)然,PowerShell很好的借鑒了這一點(diǎn)。
這一節(jié)就來(lái)介紹PowerShell下的Aliases。
在PowerShell中,為了習(xí)慣于使用,可以使用別名代替命令。例如,Windows老手可以利用像dir、move、type、cls等,當(dāng)然,為了吸納更多使用者,PowerShell還提供了對(duì)Linux的別名設(shè)置,如:ls、pwd、mv、man、cat等。
為PowerShell設(shè)置別名的目的,是為了向新用戶提供一個(gè)能夠快速交互的shell。這里的alias,指的是cmdlet的替代名稱。例如,"dir”替代的是"Get-ChildItem”。
在這一節(jié),將介紹兩種類型的alias:
內(nèi)置的別名
適用于Windows,Unix和預(yù)定義的PowerShell cmdlet的替代名稱。
使用以下命令來(lái)瀏覽PowerShell的alias列表:
get-alias enter>
細(xì)心的童鞋可以發(fā)現(xiàn),Get-ChileItem這個(gè)cmdlet擁有多個(gè)alias,如:dir、ls、gci。我們可以嘗試這些命令,結(jié)果都是一樣的,如下圖:
從本質(zhì)上講,我們只是運(yùn)行了四次"get-chileitem"。內(nèi)置別名的存在,使得我們?cè)趕hell中工作時(shí)更加順手而高效。不過(guò)說(shuō)實(shí)在的,作為用戶,我們沒(méi)有必要多多的關(guān)注一個(gè)cmdlet都有哪些alias,我們只要用好自己習(xí)慣的就行了。
用戶自定義的PowerShell的Alias
設(shè)置alias的命令
例:為名為'get-service”的cmdlet定義一個(gè)alias
Set-Alias gs Get-Service enter>
相當(dāng)簡(jiǎn)單的語(yǔ)法,沒(méi)有什么可多說(shuō)的。
使用以上命令為你的cmdlet定義alias確實(shí)很容易,不過(guò)存在一個(gè)問(wèn)題,就是這個(gè)alias只對(duì)當(dāng)前處于會(huì)話期的PowerShell有效,也就是說(shuō),當(dāng)你關(guān)閉并重新打開(kāi)PowerShell時(shí),輸入這條alias,PowerShell會(huì)很無(wú)情的告訴你 “The term ‘gs' is not recognized as a cmdlet, function, operable program, or script file. Verify the term and try again.”
那么,當(dāng)我們創(chuàng)建了一個(gè)Alias,并且不想失去它,我們?cè)趺崔k?
• 有兩種選擇:
導(dǎo)入和導(dǎo)出PowerShell的Aliases;
使用PowerShell配置文件來(lái)自定義Alias。
方法一:導(dǎo)入和導(dǎo)出PowerShell的Aliases
導(dǎo)出Aliases的一個(gè)好處就是,你可以將它帶到任何一個(gè)你想使用的地方。其命令如下導(dǎo)出文件名自定義>:
Export-Alias -Path a.txt enter>
我們可以用notepad.exe看看這個(gè)里面都是些什嗎東東~~~
好了,有人迫不及待的想試試導(dǎo)入了吧~~~
Import-Alias -Path a.txt enter>
額~杯具了?。?!
看起來(lái)很慘的樣子……
其實(shí)如果一個(gè)cmdlet存在alias,那么再次導(dǎo)入就會(huì)產(chǎn)生這樣的杯具。
所以,我們的導(dǎo)出文件,只需要很簡(jiǎn)單的定義出自己常用的alias即可(那些系統(tǒng)自帶的都統(tǒng)統(tǒng)刪除就好啦),如:
好了,就是這樣,嘿嘿嘿,是不是很邪惡~~~看看效果吧:
當(dāng)然,強(qiáng)大的PowerShell不會(huì)弱智到讓用戶每次啟動(dòng)shell時(shí)都手動(dòng)載入aliases一次的。在PowerShell的配置文件中,我們可以進(jìn)行相關(guān)設(shè)置。
方法二:使用PowerShell的配置文件
配置文件的位置存儲(chǔ)在$Profile變量中,其默認(rèn)值為:
'My Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1″
使用如下命令查看$Profile值:
$Profile
如前所述,PowerShell配置文件是一個(gè)擴(kuò)展名為“.ps1”的文件。所有PowerShell腳本都使用這個(gè)擴(kuò)展名。在此,我將使用記事本對(duì)其進(jìn)行編輯。不過(guò)在此之前,還需要檢查的PowerShell的執(zhí)行策略設(shè)置。
PowerShell在第一次安裝時(shí)默認(rèn)的執(zhí)行策略是"Restricted",也就是“受限制的”,這意味著PowerShell將不能運(yùn)行任何腳本和配置文件。
• PowerShell的執(zhí)行策略分級(jí):
Restricted - 不能運(yùn)行任何腳本和配置文件
AllSigned - 所有腳本和配置文件必須擁有受信任的發(fā)布者的簽名
RemoteSigned - 所有腳本和配置文件從可以是互聯(lián)網(wǎng)上下載,但必須擁有受信任的發(fā)布者的簽名
Unrestricted - 所有腳本和配置文件都將運(yùn)行,從互聯(lián)網(wǎng)上下載的腳本在運(yùn)行前會(huì)有提示。
使用如下cmdlet查看當(dāng)前所處的策略級(jí)別:
Get-ExecutionPolicy Enter>
修改策略級(jí)別為Unrestricted:
Set-ExecutionPolicy Unrestricted enter>
好的,我們現(xiàn)在來(lái)對(duì)$Profile進(jìn)行配置。
• 第1步 驗(yàn)證$Profile是否存在
test-path $Profile Enter>
false ===> 配置文件不存在(繼續(xù)步驟2)。
true ===> 不多說(shuō)了,直接跳過(guò)步驟2和3吧。除非你想創(chuàng)建一個(gè)新的配置文件,不過(guò)這將刪除當(dāng)前的配置文件。
• 第2步 創(chuàng)建一個(gè)新的配置文件
New-Item -Path $Profile -ItemType file -Force enter>
第3步 再次驗(yàn)證是否成功創(chuàng)建新的配置文件
重復(fù)步驟1吧。結(jié)果應(yīng)該為"true”。
好了,在記事本中打開(kāi)配置文件:
notepad $Profile enter>
OK!我們現(xiàn)在擁有了一個(gè)空白的配置文件,其實(shí)可以稱之為一個(gè)空白腳本。
其文件名為:
“Microsoft.PowerShell_profile.ps1″
現(xiàn)在開(kāi)始配置吧:
好了,現(xiàn)在可以關(guān)閉notepad和Powershell了。重新打開(kāi)PowerShell試試看。
完美!
另外需要說(shuō)明幾點(diǎn),更改PowerShell策略級(jí)別時(shí),需要使用管理員權(quán)限的,否則……
好了,這一節(jié)就到這里。說(shuō)實(shí)話,那幾個(gè)策略級(jí)別的單詞真不好記,不過(guò)幸好不常用~~~
您可能感興趣的文章:- PowerShell中使用Get-Alias命令獲取cmdlet別名例子
- Yii2中設(shè)置與獲取別名的函數(shù)(setAlias和getAlias)用法分析
- PHP(FastCGI)在Nginx的alias下出現(xiàn)404錯(cuò)誤的解決方法
- Nginx中的root&alias文件路徑及索引目錄配置詳解
- 修改Android簽名證書(shū)keystore的密碼、別名alias以及別名密碼
- nginx,apache的alias和認(rèn)證功能
- JavaWeb開(kāi)發(fā)中alias攔截器的使用方法