More und Less mit der PowerS­hell

Im letz­ten Blog­ein­trag haben wir uns ange­se­hen, man unter Win­dows 10 ein NAT Gate­way mit der PowerS­hell erstel­len kann.

In die­sem Blog­ein­trag schauen wir uns an, wie man den Win­dows CMD Befehl more bezie­hungs­weise den opti­mier­ten Linux Befehl less mit der PowerS­hell abbil­den kann.

In der Win­dows Welt dient der Befehl more dazu, eine Datei oder die Aus­gabe eines Befehls sei­ten­weise auf der Kon­sole aus­zu­ge­ben und auf Tas­ten­druck die nächste Seite anzu­zei­gen.

Ursprüng­lich kommt der Befehl more aus der UNIX Welt und hatte dort deut­lich mehr Funk­tio­nen. Zum Bei­spiel konnte man die Datei­aus­gabe mit regu­lä­ren Aus­drü­cken fil­tern.

In der Linux Welt wird vor allem der Nach­fol­ger less genutzt. Der Haupt­vor­teil von less gegen­über more ist, dass nicht zuerst die gesamte Datei ein­ge­le­sen wird (was bei gro­ßen Dateien sehr lange dau­ern kann), son­dern kon­ti­nu­ier­lich Daten nach­ge­la­den wer­den. Außer­dem kann man mit „Bild hoch“ und „Bild run­ter“ in der Datei navi­gie­ren.

In der PowerS­hell gibt es kei­nen Befehl, der die exakte Funk­tion von more oder less hat. Aus die­sem Grund gib es auch  – anders als bei ande­ren CMD und bash Befeh­len – kein ALIAS auf diese Befehle.

Um die Kon­so­len­aus­gabe sei­ten­weise aus­zu­ge­ben (zum Bei­spiel um sich die Hilfe zu einem Befehl anzu­schauen), kann der Befehl Out-​​Host genutzt wer­den. Die­ser hat den Para­me­ter –Paging.

Als Bei­spiel lasse ich mir die detail­lierte Hilfe vom Befehl Out-​​Host sei­ten­weise aus­ge­ben:

Get-​​Help Out-​​Host –Detailed | Out-​​Host –Paging

Mit der Leer­taste komme ich zur nächs­ten Seite, mit dem Wagen­rück­lauf zur nächs­ten Zeile und mit Q beende ich die Aus­gabe.

Wer sich nun fragt, wass denn der Wagen­rück­lauf ist, dem geht es gan­auso wie mir am Anfang. Der Wagen­rück­lauf ist das deut­sche Wort für „Car­riage Return“. Die­ses Son­der­zei­chen sagte alten, zei­len­weise dru­cken­den Dru­ckern, dass der Druck­kopf wie­der zum Zei­len­an­fang fah­ren soll (Im ASCII Code Zei­chen 13).

In der PowerS­hell wird der Wagen­rück­lauf mit den zwei Zei­chen ‚r aus­ge­löst (Shift + der kleine Strich rechts vom Fra­ge­zei­chen, danach „r“, danach <Enter>) . Zum Glück reicht auch nur <Enter> zu drü­cken, auch wenn das nicht so beschrie­ben ist.

Für dem Befehl less mit der Mög­lich­keit sei­ten­weise rauf und run­ter­zu­scrol­len gibt es keine direkte Umset­zung mit PowerS­hell Befeh­len. Aber man kann die Mög­lich­ei­ten der PowerS­hell Kon­sole an sich nut­zen.

Mit Win­dows 10 und der PowerS­hell 5 ist es mög­lich, mit Bild hoch und Bild run­ter sei­ten­weise in der Kon­so­len­aus­gabe zu navi­gie­ren.

Das heißt, zuerst lässt man sich die Aus­gabe des gan­zen Befehls anzei­gen:

Get-​​Help Get-​​ChildItem – detailed

Danach kann man mit Bild hoch und Bild run­ter sei­ten­weise in der Aus­gabe navi­gie­ren. Um zei­len­weise zu navi­gie­ren, muss man Strg – Bild hoch und Strg – Bild run­ter nut­zen.

Unter Win­dows 7 ist mir kein Weg bekannt – wenn jemand einen weiß, dann kann er dies gerne in der Kom­men­tar­funk­tion beschrei­ben.

Im nächs­ten Blog­ein­trag beschäf­ti­gen wir uns damit, wie man den genia­len Linux bash Befehl grep zum Suchen und Fil­tern von Kon­so­len­aus­gabe oder Dateien mit der PowerS­hell umset­zen kann.

3 Kom­men­tare

  • Antworten Bruno Baketaric |

    Das r (Carriage Return) und übrigens auch n (New Line) ist nicht für die inter­ak­tive Ein­gabe am Ter­mi­nal gedacht, son­dern um diese bei­den Zei­chen in Strings zu reprä­sen­tie­ren, wie man es von vie­len ande­ren Stel­len mit \r und \n kennt – natür­lich kann Micro­soft hier­für nicht den Back­slash (\) aus der Un*x Welt ver­wen­den.

    Also bspw. so:
    Write-​​Output „1 — -FoooonBar" "--------------" "2----FoooornBar" "--------------" "3----FoooorBar“ „ —  —  —  — –“

    Was zu die­ser Aus­gabe führt:
    1 — -Foooo
    Bar
    — —  —  — –
    2 — -Foooo
    Bar
    — —  —  — –
    Bar – Foooo
    — —  —  — –

    Mit ist nichts wei­ter als die Taste gemeint, die oft auch als als Kurz­form von bezeich­net wird, und de-​​facto in jedem mir bekann­ten Ter­mi­nal immer ein (CR, \r, r) und (Line-Feed, LF, \n, n) aus­führt (oder das LF ein CR impli­ziert).

    Im Kon­text die­ses Arti­kels würde ich schlicht mit –Taste über­set­zen und den Rest ent­fal­len las­sen.

  • Antworten Francesc Hervada-Sala |

    Wenn man auf Win­dows ist, kann man auch den Befehl out-​​gridview benut­zen, der den Inhalt tabel­la­risch auf einem sepa­ra­ten Fens­ter dar­stellt. Das ist über­sicht­li­cher und der Inhalt wird auch „pagi­niert“.

Was den­ken Sie?