Powershell
Powershell
最近都在用 Windows 下的 Powershell,功能上還不錯,也能利用 pipeline 串連不同程式。但不同於 unix shell input 和 output 以 text 為基礎,Powershell 的 input 和 output 都是 CLR object,在這裡整理一下用法。
Environment and Variable
Add path into executable path:
PS /Users/jason/my-gatsby-site> $Env:Path+="C:\docfx"Get-Command
利用 Get-Command, 查看 command 用那個 executable
PS /Users/jason/my-gatsby-site> Get-Command node
CommandType Name Version Source
----------- ---- ------- ------
Application node 0.0.0.0 /usr/local/bin/nodeUnix style alias
- Get-ChildItem: ls
- Get-Content: cat
- Get-Help: man
例子
Syntax:
foreach { $_ }: iterate 每一個 object,$_代表每一個 elements@(): Array$element: variable?: Where-Object
預覽 file
Get-ChildItem *.txt: unix 的 ls,列出當下的 txt
foreach ($element in @("*.txt", "*.js")) {
Get-ChildItem $element | foreach {
Write-Host "====================" $_.Name "====================";
Get-Content -TotalCount 100 $_ ;
Remove-Item -confirm $_
}
}預覽 CSV
Import-Csv god.csv | Out-GridView查看 Member
Get-ChildItem 每個 object 都是 System.IO.FileInfo,是 NET Framework,因此可以用利用當中的 method,例如 Name。
Get-Service | Get-Member -MemberType Property: 檢視 pipeline 中的 object 的 property
Get-ChildItem *.txt | Get-Member
TypeName: System.IO.FileInfo或者
$(Get-ChildItem *.txt).GetType()Get-Date | Select-Object -ExpandProperty DayOfWeek
Powershell Core
Mac 和 Linux 上可以使用 Powershell Core
Trick
使用 cmd commmand
cmd --% /c rmdir /s "xxxxxdirectory"