Différence entre UnxUtils et GnuWin32?


18

Je suis un utilisateur Windows qui veut des programmes comme grep et sed ainsi que d'autres utilitaires comme ls, cut etc dans mon invite de commande. Je suis tombé sur 2 packages qui accompliraient cela

Je voudrais savoir quelle est la différence entre les deux fonctionnalités et surtout les performances avant de choisir entre les deux. D'après ce que j'ai vu, GnuWin32 est un super ensemble d'UnxUtils. Est-ce correct ?

Note de Barlop,
cette question portait sur les coreutils et les non-utils, mais comme il parlait de grep et sed, il est clair qu'il voulait poser des questions sur gnuwin32 et unxutils, et c'est une question beaucoup plus utile et importante que la mauvaise. Si les gens veulent revenir à coreutils et unxutils, je serais heureux d'y aller et de poster une autre question pour gnuwin32 et unxutils. En outre, toute réponse appropriée à sa question d'origine corrigerait ou répondrait à son erreur mais répondrait également à ce qu'il voulait dire. Il n'y a donc aucune perte à corriger sa question.

Réponses:


16

unxutils a des versions vraiment anciennes d'un tas de certains des utilitaires les plus utiles. notamment grep par exemple.

Les versions de gnuwin32 sont également obsolètes, bien qu'elles ne soient pas aussi anciennes que les non-utils. Gnuwin32 a un nombre d'utilitaires beaucoup plus important. C'est évidemment un avantage majeur.

Gardez à l'esprit que gnuwin32 a cet avantage majeur sur les non-utils.

Par exemple..

Les unxutils extrêmement anciens

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

Copyright 1988...

Le gnuwin32 assez ancien

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

Copyright (C) 2009 ...

Contrairement à un logiciel qui est plus à jour que gnuwin32, par exemple cygwin

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

Avec unxutils, vous pouvez rencontrer des problèmes car il utilise de très anciennes versions et lorsque vous cherchez de l'aide, les gens s'attendront à ce que vous ayez la dernière version de telle ou telle commande.

Il y a quelques petits avantages que les unxutils ont, ce qui les rend très utiles.

  • unxutils a xxd, gnuwin32 non. (Remarque, VIM 7 a également xxd, cygwin aussi)
  • gnuwin32 au moment de l'écriture (2014) a une queue cassée -f, la queue d'unxutils -f est plus ancienne mais fonctionne. (mentionné ici, la queue de Cygwin fonctionne également). À deux reprises, j'ai rencontré des bogues dans gnuwin32 grep qui ont été corrigés dans les versions ultérieures de grep et la grep de cygwin était beaucoup plus tard et très bien (et peut être exécutée directement à partir de cmd.exe et ne doit pas être exécutée à partir de la cygwin shell).

  • ce qui suit est un petit avantage, mais si vous êtes très paresseux, ou si vous voulez simplement l'utiliser rapidement, alors unxutils n'est qu'un zip, vous pouvez extraire les exécutables et c'est parti. Gnuwin32 implique un assistant pour installer différents bits, et même certains utilitaires individuels doivent être installés séparément comme un exécutable de configuration pour wget, un pour grep par exemple (grep-xxxx-bin.exe). avec unxutils vous extrayez simplement de leur répertoire wbin dans le zip. Gardez à l'esprit que ce sont des versions plus anciennes, donc si possible, si ce n'est pas trop paresseux, on verra généralement si gnuwin32 l'a.

  • unxutils peut fonctionner de manière autonome là où de nombreux binaires gnuwin32 équivalents ne le peuvent pas. Donc, si vous ne voulez pas ou ne pouvez pas installer gnuwin32, vous pouvez utiliser une commande autonome, depuis unxutils. Par exemple, tr.exe de gnuwin32 nécessite deux fichiers dll dans son répertoire ou il indique qu'ils ne sont pas là et ne fonctionneront pas. sed de gnuwin32 ne fonctionne pas de manière autonome, tandis que les trx et sed.exe de unxutils fonctionnent correctement de manière autonome.
  • unxutils a gclip.exe et pclip.exe Ce sont des commandes à copier dans le presse-papiers et à coller à partir du presse-papiers. gnuwin32 ne semble pas avoir quelque chose comme ça, et Windows a nativement clip.exe (pour copier dans le presse-papiers), mais aucune commande pour le coller comme pclip.

Le lien sourcex forge unxutils a unxutils.zip et unxupdates.zip (ce dernier étant un sous-ensemble de unxutils.zip mais avec des versions plus récentes mais toujours anciennes). par exemple unxutils a sed depuis 1998, et unxupdates en a un depuis 2003. Cela peut aider par exemple le sed 1998 n'a pas de notation \ d ou \ x egeg \ d34 ou \ x22 pour spécifier des guillemets (plus facile que des guillemets d'échappement) ,. Celui qui n'est pas mis à jour date de 2003 et le fait.

Le gnuwin32 sed, au moment de l'écriture, date de 2009. (Gnuwin32 est toujours obsolète car il existe une version grep même pour 2014 http://ftp.gnu.org/gnu/grep/ mais gnuwin32 est beaucoup moins obsolète que les unxutils (même lorsque les unxutils sont considérés avec des «unxupdates»).

Le site http://unxutils.sourceforge.net/ unxutils.zip est en panne mais est disponible https://archive.org/details/UnxUtils et officiellement https://sourceforge.net/projects/unxutils/ et si vous êtes va l'obtenir, puis télécharger les mises à jour trop

En comparant gnuwin32 à unxutils, regardez généralement Gnuwin32, mais sachez que unxutils a quelques avantages. Gnuwin32 a presque toutes les commandes de unxutils, et bien plus encore.

Et aussi, regardez Cygwin, il a une énorme collection d'utilitaires maintenus beaucoup plus à jour que gnuwin32, (ils devraient être exécutés à partir du shell bash de cygwin, ce qui me convient), vous n'avez généralement pas vraiment besoin de regarder quelque chose d'ancien et non mis à jour comme unxutils, bien qu'il ait pclip et gclip.

Outre gnuwin32 et unxutils, il existe également MinGW et cygwin et Windows SUA (qui, au moment de l'écriture, MS maintient et serait à jour) et GOW (qui est petit, bien que la page Github de GOW le montre comme dernière mise à jour 2014) et encore plus petit, BusyBox (célèbre pour Android mais est disponible pour Windows, ici et est toujours très petit. Les deux plus impressionnants pour moi sont gnuwin32 et cygwin (et cygwin a xxd et une queue de travail -f. Donc je n'ai pas besoin de recourir à unxutils) Avec cygwin, les programmes devraient vraiment être exécutés à partir du shell cygwin mais c'est un linux shell par exemple bash shell et bash et d'autres shells linux sont puissants donc pas de perte là-bas. Gardez également à l'esprit que de nos jours, de nombreuses personnes utilisent des machines virtuelles Linux au lieu de cygwin ou gnuwin32, qui actualisent vraiment les versions appropriées des commandes, plutôt que des ports Windows qui peuvent être plus anciens et se comporter différemment avec des guillemets.

Note ajoutée-coreutils alias gnu coreutils, est un tas de commandes qui s'exécutent sur linux (..), et sans doute le système d'exploitation GNU avec Herd (un système d'exploitation moins répandu!), et a probablement des implémentations décentes effectuées pour d'autres systèmes d'exploitation * nix. GNU Coreutils est bien connu et extrêmement largement utilisé et utile et mis à jour. D'un autre côté, unxutils est une très ancienne implémentation / port de certaines commandes que les gens utilisent sur linux ou unix (qui inclurait sans doute certaines commandes coreutils), fait pour le système d'exploitation Windows. Normalement, les deux ne seraient même pas mentionnés dans la même phrase et la seule raison pour laquelle ils étaient dans la question d'origine, était due à une certaine confusion dans la question d'origine. GnuWin32 a une implémentation de coreutils pour Windows, appelée Gnuwin32 coreutils, bien que comme mentionné, Gnuwin32 est ancien / non mis à jour, tout simplement pas aussi ancien / non mis à jour, que les non-utilitaires.


3
outre gnuwin32 et unxutils, il existe également MinGW et cygwin et Windows SUA et GOW. Les deux plus impressionnants pour moi sont gnuwin32 et cygwin (et cygwin a xxd et une queue de travail -f. Je n'ai donc pas besoin de recourir à unxutils) Avec cygwin, les programmes devraient vraiment être exécutés à partir du shell cygwin mais c'est un shell linux Par exemple, bash shell et bash et d'autres shells linux sont puissants, donc aucune perte là-bas.
barlop du

un avantage encore survivant de unxutils est qu'il a la pclipcommande pour coller le contenu du presse-papiers.
barlop le

également probablement bon d'avoir une machine virtuelle * nix configurée et bien intégrée pour qu'ils puissent se lire / écrire, alors vous pouvez avoir les dernières commandes * nix et
barlop

6

Les Unxutils sont natifs de Windows et n'ont aucune dépendance - mais n'ont pas été mis à jour depuis un certain temps et sont un sous-ensemble de coreutils. Vous auriez besoin d'un environnement de style * nix pour coreutils, vous devez donc les exécuter dans cygwin ou similaire


3
Le programme d'installation de coreutils pour Windows doit prendre en charge toutes les dépendances gnuwin32.sourceforge.net/packages/coreutils.htm
Nifle

1
les unxutils ne sont techniquement pas un sous-ensemble des coreutils. en plus des versions de commandes. unxutils a xxd que coreutils et même gnuwin32 n'ont pas. Également au moment de l'écriture, gnuwin32 a une queue cassée -f, mais tail.exe -f d'Unxutils fonctionne très bien. sourceforge.net/p/gnuwin32/bugs/242 Aussi gnuwin32 a ses propres coreutils gnuwin32.sourceforge.net/packages/coreutils.htm
barlop

2
UnxUtils fonctionne très bien dans la vieille ligne de commande de Windows, pas besoin de Cygwin (qui propose probablement ses propres utilitaires de ligne de commande Unix, de toute façon).
PhiLho

1
@Nifle bien, oui, mais ceux qui ne le sont pas n'ont pas de dépendances et [j'ajouterais que la façon dont le programme d'installation le gère] est que les EXE gnuwin32 doivent être exécutés dans le même répertoire que les quelques DLL dont ils dépendent, donc le programme d'installation place un ensemble de fichiers DLL dans le répertoire bin.
barlop

1
Vous écrivez "Vous auriez besoin d'un environnement de style * nix pour les coreutils, donc vous auriez besoin de les exécuter dans cygwin ou similaire" <- Je ne sais pas ce que vous voulez dire. Unxutils s'exécute dans un environnement Windows, sans shell * nix. Et ils ont des choses qui ne sont pas dans des coreutils comme wget et xxd, donc ils ne sont pas un sous-ensemble de coreutils. De plus, même les commandes cygwin peuvent techniquement être exécutées directement depuis cmd, en dehors de cygwin.
barlop

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.