Mächtiger Shell-Hassbeitrag

Vor langer Zeit habe ich ein einfaches Skript geschrieben, das alle Unterverzeichnisse mit vorgegebenen Namen in einem angegebenen Verzeichnis löscht:

Remove-Item * -Force -Recurse -Include name1,name2,name3 -ErrorAction SilentlyContinue

Ich habe es lange nicht benutzt, aber jetzt brauchte ich es. Ich starte es – nichts wird gelöscht.

„WTF?“, denke ich. Ich begann zu graben. Ich habe getüftelt und getüftelt, alles durchgesehen, vorab eine Liste erstellt und die Namen geändert – gelöscht ist immer noch nichts. Schließlich las ich in ihrem Dokument: „Tatsächlich ist -Include fehlerhaft, wenn es in Verbindung mit -Recurse verwendet wird. Verwenden Sie daher das Krückenkonstrukt.":

Da der Recurse-Parameter in Remove-Item ein bekanntes Problem aufweist, verwendet der Befehl in diesem Beispiel Get-ChildItem, um die gewünschten Dateien abzurufen, und verwendet dann den Pipeline-Operator, um sie an Remove-Item zu übergeben.

Na gut, ich habe es mit dieser Krücke umgeschrieben. Ein verdammt guter Deal – es wird nichts gelöscht. Außerdem, Get-ChildItem с -Enthalten gibt Leere zurück. Auch hier gilt: Egal was ich getan habe, egal wie sehr ich die Parameter verzerrt habe, es hat nicht funktioniert. Die Hauptsache ist mit -Ausschließen funktioniert, aber mit -Enthalten auf keinen Fall. Ich habe einen ganzen Tag damit verbracht: Ich dachte ständig, dass ich irgendwo bei den Parametern einen Fehler gemacht hatte und dass ich eine knifflige Nuance nicht berücksichtigt hatte. Und was ist am Ende passiert? Ich habe sie auf PS7.1 installiert und es hat funktioniert. Es enthält sogar die erste krückenlose Option, die nur verwendet wird Gegenstand entfernen verdient. Im Allgemeinen stellte sich heraus, dass es ihr Fehler war.

Aber nachdem ich mit ihrer Mighty Shell gelitten hatte, ging ich zu Google, um zu lesen, warum ihre Shell eine so umwerfende Syntax hat. Verdammt, sie positionieren es als .NET für die Konsole, aber sie riechen nicht einmal die C#-Syntax. Anstelle von ihm…

Jedenfalls bin ich auf diesen Artikel gestoßen: „Was ich an PowerShell hasse". Wie sie sagen: „Ich kann nur zustimmen.“

Ich vermute, dass das Mighty Shell-Team ein Haufen Bash-Fans ist.

- Lassen Sie uns endlich eine Konsole für Windows erstellen, in der Sie komplexe Skripte schreiben können. Ansonsten ist unser cmd so veraltet, dass wir uns schon ein wenig schämen.
- Lasst uns! Basierend auf dem, was werden wir tun? Wir haben bereits VBScript, JScript. Schließlich haben wir Sprachen für .NET: C#, VB. Vielleicht können wir es in C# machen? Ich meine, wir werden C# als Skriptsprache für unsere Konsole verwenden. Darüber hinaus möchten wir dort .NET-Klassen hinzufügen.
- Nein, was machst du, Alter, was für C#? Echte Geeks benutzen Bash! Also machen wir Bash für Windows. Es ist mir egal, dass die Syntax für Bash offenbar in den 1960er Jahren von einer Schar bekiffter Hipster geschrieben wurde. Generell gilt: Je komplexer, desto besser! Intuition ist was für Schwächlinge! Beim Schreiben eines Skripts in unserer Sprache muss der Benutzer alles auf der Welt verfluchen und ein paar neue Schimpfwörter erfinden. Nur eine solche Sprache hat das Recht auf Leben. Schauen Sie, Linux-Leute leben ihr ganzes Leben lang so und verspüren dabei einen unerklärlichen Nervenkitzel. Warum sind wir schlechter?

An der Umfrage können nur registrierte Benutzer teilnehmen. Einloggenbitte.

Benutzen Sie PowerShell und sind Sie damit vertraut?

  • 30,3%Ich verwende kein 40

  • 29,6%Ich habe es ausprobiert und es hat mir nicht gefallen39

  • 23,5%Ich benutze es und bin mit allem zufrieden31

  • 12,9%Ich benutze es, aber ich bin nicht zufrieden17

  • 3,8%Hurra! Endlich kann ich meine Lieblings-Bash unter Windows!5 verwenden

132 Benutzer haben abgestimmt. 26 Benutzer enthielten sich der Stimme.

Source: habr.com

Kommentar hinzufügen