Unterschied zwischen UnxUtils und GnuWin32?

17

Ich bin ein Windows-Benutzer, der Programme wie grep und sed zusammen mit anderen Dienstprogrammen wie ls, cut usw. in meiner Eingabeaufforderung haben möchte. Ich bin auf 2 Pakete gestoßen, die dies bewerkstelligen würden

Ich würde gerne wissen, was der Unterschied zwischen den beiden Merkmalen und, was noch wichtiger ist, der Leistung ist, bevor ich mich für sie entscheide. Nach allem, was ich gesehen habe, ist GnuWin32 ein super Set von UnxUtils. Ist das richtig ?

Anmerkung von Barlop,
diese Frage bezog sich auf coreutils und unxutils, aber da er über grep und sed sprach, war es klar, dass er nach gnuwin32 und unxutils fragen wollte, und das ist eine viel nützlichere und wichtigere Frage als die falsche. Wenn die Leute es auf coreutils und unxutils zurücksetzen möchten, würde ich gerne damit weitermachen und eine weitere Frage an gnuwin32 und unxutils stellen. Außerdem würde jede richtige Antwort auf seine ursprüngliche Frage den Fehler korrigieren oder beantworten, aber auch beantworten, was er meinte. Es ist also kein Verlust, seine Frage zu korrigieren.

Sturmschatten
quelle

Antworten:

15

unxutils hat wirklich alte Versionen einiger der nützlichsten Dienstprogramme. einschließlich grep zum Beispiel.

Gnuwin32-Versionen sind auch viele Jahre veraltet, wenn auch nicht annähernd so alt wie Unxutils. Gnuwin32 hat eine viel größere Anzahl von Dienstprogrammen. Das ist natürlich ein großer Vorteil.

Denken Sie daran, dass gnuwin32 diesen großen Vorteil gegenüber unxutils hat.

Als Beispiel..

Die extrem alten Unerfahrenen

C:\unxutils>grep -V
grep (GNU grep) 2.4.2

Copyright 1988...

Der ziemlich alte gnuwin32

C:\blah>"c:\Program Files (x86)\GnuWin32\bin\grep.exe" -V
GNU grep 2.5.4

Copyright (C) 2009 ...

Im Gegensatz zu Software, die aktueller ist als gnuwin32, zB cygwin

$ grep --version
grep (GNU grep) 2.21
Copyright (C) 2014 Free Software Foundation, Inc.

Mit unxutils können Sie auf Probleme stoßen, da es wirklich alte Versionen verwendet, und wenn Sie nach Hilfe suchen, erwarten die Leute, dass Sie die neueste Version dieses oder jenes Befehls haben.

Es gibt einige kleinere Vorteile von unxutils, die unxutils sehr nützlich machen.

  • unxutils hat xxd, gnuwin32 nicht. (Beachten Sie, dass VIM 7 ebenso wie Cygwin xxd hat.)
  • gnuwin32 hat zum Zeitpunkt des Schreibens (2014) einen gebrochenen Schwanz -f, der Schwanz von unxutils -f ist älter, funktioniert aber. ( hier erwähnt funktioniert auch Cygwins Schwanz). Bei zwei verschiedenen Gelegenheiten bin ich auf Fehler in gnuwin32 grep gestoßen, die in späteren Versionen von grep behoben wurden, und Cygwins grep war viel später und in Ordnung (und kann direkt von cmd.exe ausgeführt werden und muss nicht von der ausgeführt werden Cygwin-Shell).

  • Das Folgende ist ein kleinerer Vorteil, aber wenn Sie sehr faul sind oder es nur schnell verwenden möchten, dann ist unxutils nur eine Zip-Datei, mit der Sie die ausführbaren Dateien extrahieren und loslegen können. Gnuwin32 beinhaltet einen Assistenten zum Installieren verschiedener Bits, und sogar einige einzelne Dienstprogramme müssen separat installiert werden, z. B. ein ausführbares Setup für wget, eines für grep (grep-xxxx-bin.exe). mit unxutils extrahierst du einfach aus ihrem wbin verzeichnis innerhalb der zip. Bedenken Sie, dass es sich um ältere Versionen handelt. Wenn es also möglich ist und Sie nicht zu faul sind, sollten Sie generell nachsehen, ob es bei gnuwin32 verfügbar ist.

  • Unxutils können eigenständig arbeiten, wohingegen viele der entsprechenden gnuwin32-Binärdateien dies nicht können. Wenn Sie also gnuwin32 nicht installieren möchten oder können, können Sie einen eigenständigen Befehl von unxutils verwenden. Zum Beispiel benötigt die Datei tr.exe von gnuwin32 zwei DLL-Dateien in ihrem Verzeichnis, oder es wird angegeben, dass sie nicht vorhanden sind und nicht ausgeführt werden. Das sed von gnuwin32 funktioniert nicht eigenständig, wohingegen unxutils tr.exe und sed.exe problemlos eigenständig funktionieren.
  • unxutils hat gclip.exe und pclip.exe. Dies sind Befehle zum Kopieren in die Zwischenablage und Einfügen aus der Zwischenablage. gnuwin32 scheint so etwas nicht zu haben, und Windows hat nativ clip.exe (um es in die Zwischenablage zu kopieren), aber keinen Befehl, um es wie pclip einzufügen.

Der Link unxutils sourceforge enthält die Dateien unxutils.zip und unxupdates.zip (letzteres ist eine Teilmenge von unxutils.zip, jedoch mit neueren, aber immer noch alten Versionen). Beispiel: unxutils stammt aus dem Jahr 1998 und unxupdates stammt aus dem Jahr 2003. Dies kann hilfreich sein, wenn beispielsweise in der 1998er-Version keine \ d- oder \ x-Notation egeg \ d34 oder \ x22 angegeben ist (einfacher als Anführungszeichen). Das unxupdates ist von 2003 und tut.

Die gnuwin32 sed, als des Schreibens, ist aus dem Jahr 2009. (GnuWin32 ist noch nicht aktuell ist , da es eine grep Version auch für das Jahr 2014 ist http://ftp.gnu.org/gnu/grep/ aber gnuwin32 ist viel weniger veraltet als unxutils (auch wenn unxutils mit 'unxupdates' betrachtet wird).

Die http://unxutils.sourceforge.net/ unxutils.zip Website ist unten aber ist verfügbar https://archive.org/details/UnxUtils und offiziell https://sourceforge.net/projects/unxutils/ und wenn Sie werde es dann auch unxupdates runterladen

Wenn Sie gnuwin32 mit unxutils vergleichen, schauen Sie sich im Allgemeinen Gnuwin32 an, aber Sie wissen, dass unxutils einige Vorteile hat. Gnuwin32 enthält fast alle Befehle, die unxutils enthält, und noch viel mehr.

Und bei Cygwin gibt es eine riesige Sammlung von Dienstprogrammen, die viel aktueller sind als gnuwin32 (sie sollten von Cygwins Bash-Shell ausgeführt werden, was für mich in Ordnung ist), die Sie im Allgemeinen nicht wirklich ansehen müssen etwas uraltes und nicht aktualisiertes wie unxutils, obwohl es pclip und gclip hat.

Neben gnuwin32 und unxutils gibt es auch MinGW und cygwin sowie Windows SUA (das MS zum Zeitpunkt der Erstellung noch pflegt und auf dem neuesten Stand halten würde) und GOW (das klein ist, obwohl es auf der GOW-Github-Seite als letztes Update 2014 angezeigt wird) und kleiner noch, BusyBox (berühmt für Android, ist aber für Windows verfügbar, hier und ist immer noch sehr klein. Die beiden für mich eindrucksvollsten sind gnuwin32 und cygwin (und cygwin hat xxd und ein funktionierendes tail -f. Ich muss also nicht auf unxutils zurückgreifen). Mit cygwin sollten Programme wirklich von der cygwin-Shell ausgeführt werden, aber es ist ein Linux Shell zB Bash Shell und Bash und andere Linux-Shells sind mächtig, also kein Verlust. Bedenken Sie auch, dass heutzutage viele Leute virtuelle Linux-Maschinen anstelle von cygwin oder gnuwin32 verwenden, wodurch die richtigen Versionen der Befehle auf den neuesten Stand gebracht werden, anstatt Windows-Ports, die älter sein und sich bei Anführungszeichen anders verhalten können.

Hinweis hinzugefügt-coreutils alias gnu coreutils ist eine Reihe von Befehlen, die unter Linux (..) ausgeführt werden, und ohne Zweifel GNU OS with Herd (ein weniger verbreitetes Betriebssystem!), und wahrscheinlich wurden einige anständige Implementierungen für andere * nix-Betriebssysteme durchgeführt. GNU Coreutils ist bekannt und äußerst verbreitet und nützlich und aktualisiert. Auf der anderen Seite ist unxutils eine sehr alte Implementierung / Portierung einiger Befehle, die unter Linux oder Unix verwendet werden (was ohne Zweifel einige coreutils-Befehle beinhalten würde) und für das Windows-Betriebssystem erstellt wurden. Die beiden würden normalerweise nicht einmal im selben Satz erwähnt, und der einzige Grund, warum sie in der ursprünglichen Frage vorkamen, war eine gewisse Verwirrung in der ursprünglichen Frage. GnuWin32 hat eine Implementierung von coreutils für Windows, genannt Gnuwin32 coreutils, obwohl Gnuwin32, wie erwähnt, alt / nicht aktualisiert ist, nur nicht so alt / nicht aktualisiert, wie unxutils.

barlop
quelle
3
Neben gnuwin32 und unxutils gibt es auch MinGW und cygwin sowie Windows SUA und GOW. Die zwei beeindruckendsten sind für mich gnuwin32 und cygwin (und cygwin hat xxd und ein funktionierendes tail -f. Ich muss also nicht auf unxutils zurückgreifen). Mit cygwin sollten Programme wirklich von der cygwin-Shell ausgeführt werden, aber es ist eine Linux-Shell zb bash shell und bash und andere linux shells sind mächtig also kein verlust da.
Barlop
Ein Vorteil von unxutils ist, dass es den pclipBefehl hat, den Inhalt der Zwischenablage einzufügen .
Barlop
Wahrscheinlich ist es auch gut, eine * nix-VM einzurichten und gut zu integrieren, damit sie sich gegenseitig lesen und schreiben können. Dann können Sie die neuesten * nix-Befehle und
barlop 17.10.16
6

Unxutils sind Windows-nativ und haben keine Abhängigkeiten - wurden aber seit einiger Zeit nicht mehr aktualisiert und sind eine Teilmenge der Coreutils. Sie benötigen eine Umgebung im * nix-Stil für coreutils, damit Sie sie in cygwin oder einer ähnlichen Umgebung ausführen können

Geselle Geek
quelle
3
Das Installationsprogramm für coreutils für Windows sollte sich um Abhängigkeiten kümmern. Gnuwin32.sourceforge.net/packages/coreutils.htm
Nifle
1
unxutils sind technisch gesehen keine Untermenge von coreutils. Neben Versionen von Befehlen. unxutils hat xxd was coreutils und sogar gnuwin32 nicht hat. Ebenfalls zum Zeitpunkt des Schreibens hat gnuwin32 ein gebrochenes tail -f, aber das tail.exe -f von unxutils funktioniert einwandfrei. sourceforge.net/p/gnuwin32/bugs/242 Auch gnuwin32 hat seine eigenen coreutils gnuwin32.sourceforge.net/packages/coreutils.htm
barlop
2
UnxUtils funktioniert problemlos in der normalen alten Windows-Befehlszeile, ohne dass Cygwin erforderlich ist (das wahrscheinlich ohnehin mit seinen eigenen Unix-Befehlszeilendienstprogrammen aufwartet).
PhiLho
1
@Nifle Nun ja, aber die Unxutils haben keine Abhängigkeiten und [ich möchte hinzufügen, dass der Installer damit umgeht] die gnuwin32-EXE-Dateien müssen im selben Verzeichnis wie die wenigen DLLs ausgeführt werden, von denen sie abhängig sind Das Installationsprogramm legt eine Reihe von DLL-Dateien im Verzeichnis bin ab.
Barlop
1
Sie schreiben: "Sie benötigen eine Umgebung im * nix-Stil für coreutils, damit Sie sie in cygwin oder ähnlichem ausführen können." <- Sie sind sich nicht sicher, was Sie meinen. Unxutils laufen in einer Windows-Umgebung ohne * nix-Shell. Und sie haben Dinge, die nicht in coreutils enthalten sind, wie wget und xxd, also sind sie keine Untermenge von coreutils. Auch Cygwin-Befehle können technisch direkt von cmd außerhalb von Cygwin ausgeführt werden.
Barlop