torsdag 10. mars 2011

Powershell for Unix-users

Powershell is an object-oriented scriptinglanguage bundled with windows-7 and windows server 2008 which is heavily influenced by unix scripting, python, perl, lisp and more. This guide lists some common unix-commands and their powershell equivalents.  Please note that they are not completely equal, as unix-commands works on streams of bytes, typically split into lines, while powershell works on streams of objects.

grepWhere-Object, but see below for details
cdSet-Location, but cd is an alias
catGet-Content, but cat and type are aliases

grep "pattern"
If input is a list of strings, the Select-String command is equal to grep:
Select-String -Pattern "pattern"
However, input will typically be a stream of object, and what you want to do is to filter this. Thus Perl grep or Common Lisp remove-if-not which both accepts a general selection function as parameter are more appropriate. The PowerShell command is inspired by SQL SELECT WHERE ...
Where-Object { current object is $_ }

2 kommentarer:

  1. Liker du PS? Jeg skrev en mengde slike i FAST og syntes at det var "too little, too late" i forhold til originalen.

    SvarSlett
  2. Hva var originalen?

    For meg ser PS ut som Lisp med Bourne Shell-syntax. Den store forskjellen fra sh (etc) er at i sh er en "pipe" en strøm av bytes mellom kommandoer, mens i ps er det en strøm av objekter. Dette er (IMNSHO) et utrolig kraftig verktøy og en vesentlig videreutvikling fra hva vi har sett før.

    I tillegg er det en vesentlig forskjell at i windows er grensesnittet mot operativsystemet et .net-API som er tilgjengelig direkte i ps, mens på unix (linux) er det tekstfiler med ymse format spredt utover /etc, /proc, /sys, /var.

    Men mest av alt er jeg glad for å endelig ha mulighet til å scripte ting i windows. (Hvis jeg ikke kan velge OS, vil jeg i det minste få velge verktøy...)

    SvarSlett