¿Diferencia entre UnxUtils y GnuWin32?

17

Soy un usuario de Windows que quiere programas como grep y sed junto con otras utilidades como ls, cut, etc. en mi símbolo del sistema. Encontré 2 paquetes que lograrían esto

Me gustaría saber cuál es la diferencia entre las dos características y el rendimiento más importante antes de elegir entre ellas. Por lo que he visto, GnuWin32 es un súper conjunto de UnxUtils. Es esto correcto ?

Tenga en cuenta por Barlop que
esta pregunta era sobre coreutils y unxutils, pero como estaba hablando de grep y sed, está claro que tenía la intención de preguntar sobre gnuwin32 y unxutils, y esa es una pregunta mucho más útil e importante que la equivocada. Si la gente quiere revertirlo a coreutils y unxutils, me encantaría seguir con eso y publicar otra pregunta para gnuwin32 y unxutils. Además, cualquier respuesta adecuada a su pregunta original corregiría o respondería con respecto a su error, pero también respondería a lo que se refería. Así que no hay pérdida en corregir su pregunta.

Sombra tormenta
fuente

Respuestas:

15

Unxutils tiene versiones realmente antiguas de algunas de las utilidades más útiles. incluyendo grep por ejemplo.

Las versiones de gnuwin32 también están desactualizadas desde hace muchos años, aunque no son tan antiguas como no utilizadas. Gnuwin32 tiene una cantidad mucho mayor de utilidades. Eso es obviamente una gran ventaja.

Tenga en cuenta que gnuwin32 tiene esa gran ventaja sobre unxutils.

Como ejemplo..

Los unxutils extremadamente viejos

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

Copyright 1988...

El viejo gnuwin32

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

Copyright (C) 2009 ...

Contraste con el software que se mantiene más actualizado que gnuwin32, por ejemplo, cygwin

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

Con unxutils, puede encontrarse con problemas ya que utiliza versiones realmente antiguas, y cuando busque ayuda, la gente esperará que tenga la última versión de este o aquel comando.

Hay algunas ventajas más pequeñas que tiene unxutils, que hacen que unxutils sea muy útil.

  • unxutils tiene xxd, gnuwin32 no. (Tenga en cuenta que VIM 7 también tiene xxd, y Cygwin también)
  • gnuwin32 al momento de escribir (2014) tiene una cola rota -f, la cola de unxutils -f es más antigua pero funciona. (mencionado aquí la cola de Cygwin también funciona). En dos ocasiones diferentes me he encontrado con errores en grep de gnuwin32 que se han corregido en versiones posteriores de grep y grep de cygwin era mucho más tarde y estaba bien (y puede ejecutarse directamente desde cmd.exe y no tiene que ejecutarse desde el Cygwin Shell).

  • la siguiente es una ventaja menor, pero si eres muy vago o simplemente quieres usarlo rápidamente, entonces unxutils es solo un zip, puedes extraer los ejecutables y listo. Gnuwin32 implica un asistente para instalar varios bits, e incluso algunas utilidades individuales deben instalarse por separado como un ejecutable de configuración para wget, uno para grep, por ejemplo (grep-xxxx-bin.exe). con unxutils simplemente extrae de su directorio wbin dentro del zip. Tenga en cuenta que, aunque son versiones anteriores, si es posible, si no es demasiado vago, generalmente se vería si gnuwin32 lo tiene.

  • unxutils puede funcionar de forma independiente donde muchos de los binarios gnuwin32 equivalentes no pueden. Entonces, si no desea o no puede instalar gnuwin32, puede usar un comando independiente, desde unxutils. Por ejemplo, trn de gnuwin32 requiere dos archivos dll en su directorio o dice que no están allí y no se ejecutarán. sed de gnuwin32 no funciona de manera independiente, mientras que unxutils tr.exe y sed.exe funcionan de manera independiente.
  • unxutils tiene gclip.exe y pclip.exe Son comandos para copiar en el portapapeles y pegar desde el portapapeles. Parece que gnuwin32 no tiene nada parecido, y Windows tiene de forma nativa clip.exe (para copiar en el portapapeles), pero no hay ningún comando para pegarlo como pclip.

El enlace sourceforge de unxutils tiene unxutils.zip y unxupdates.zip (este último es un subconjunto de unxutils.zip pero con versiones posteriores aunque aún antiguas). por ejemplo, unxutils ha caído desde 1998, y unxupdates tiene uno desde 2003. Eso puede ayudar, por ejemplo, el calado 1998 no tiene \ d o \ x notación egeg \ d34 o \ x22 para especificar comillas (más fácil que las comillas). El no actualizado es de 2003 y lo hace.

El gnuwin32 sed, al momento de la escritura, es de 2009. (Gnuwin32's aún está desactualizado ya que hay una versión grep incluso para 2014 http://ftp.gnu.org/gnu/grep/ pero gnuwin32's está mucho menos desactualizado que unxutils (incluso cuando unxutils se considera con 'unxupdates').

El http://unxutils.sourceforge.net/ unxutils.zip del sitio está caído pero está disponible https://archive.org/details/UnxUtils y oficialmente https://sourceforge.net/projects/unxutils/ y si está va a obtenerlo y luego descargar unxupdates también

Comparando gnuwin32 con unxutils, generalmente mire a Gnuwin32, pero sepa que unxutils tiene algunas ventajas. Gnuwin32 tiene casi todos los comandos que tiene unxutils, y mucho más.

Y también, mire a Cygwin, tiene una gran colección de utilidades mantenidas mucho más actualizadas que gnuwin32, (deberían ejecutarse desde el shell bash de cygwin, lo cual está bien para mí), generalmente no necesita mirar algo antiguo y no actualizado como unxutils, aunque tiene pclip y gclip.

además de gnuwin32 y unxutils, también hay MinGW y cygwin y Windows SUA (que al momento de la escritura, MS todavía mantiene y estaría actualizado) y GOW (que es pequeño, aunque la página GOWub de GOW lo muestra como la última actualización de 2014) y aún más pequeño, BusyBox (famoso por Android pero está disponible para Windows, aquí y todavía es muy pequeño. Los dos más destacados para mí son gnuwin32 y cygwin (y cygwin tiene xxd y una cola de trabajo -f. Así que no necesito recurrir a unxutils) Con cygwin, los programas realmente deberían ejecutarse desde el shell cygwin pero es un linux shell, por ejemplo, bash shell y bash y otros shells de Linux son potentes, por lo que no hay pérdida allí. También tenga en cuenta que hoy en día muchas personas usan máquinas virtuales de Linux en lugar de cygwin o gnuwin32, que realmente actualiza las versiones adecuadas de los comandos, en lugar de los puertos de Windows que pueden ser más antiguos y pueden comportarse de manera diferente con comillas.

Nota agregadacoreutils, también conocido como gnu coreutils, es un conjunto de comandos que se ejecutan en Linux (..), y sin duda el sistema operativo GNU con Herd (¡un sistema operativo menos utilizado!), y probablemente tiene algunas implementaciones decentes realizadas para otros sistemas operativos * nix. GNU Coreutils es bien conocido y extremadamente utilizado, útil y actualizado. Por otro lado, unxutils es una implementación / puerto muy antiguo de algunos comandos que la gente usa en Linux o Unix, (que sin duda incluiría algunos comandos coreutils), hecho para el sistema operativo Windows. Los dos normalmente ni siquiera se mencionarían en la misma oración y la única razón por la que estaban en la pregunta original se debió a cierta confusión en la pregunta original. GnuWin32 tiene una implementación de coreutils para Windows, denominada Gnuwin32 coreutils, aunque como se mencionó, Gnuwin32 es viejo / no actualizado, solo que no es tan viejo / no actualizado, como unxutils.

barlop
fuente
3
Además de gnuwin32 y unxutils, también hay MinGW y cygwin y Windows SUA y GOW. Los dos más impresionantes para mí son gnuwin32 y cygwin (y cygwin tiene xxd y una cola funcional -f. Así que no necesito recurrir a unxutils). Con cygwin, los programas realmente deberían ejecutarse desde el shell de cygwin pero es un shell de linux por ejemplo, bash shell y bash y otros shells de linux son potentes, por lo que no hay pérdida allí.
barlop
Una de las ventajas de Unxutils es que tiene el pclipcomando de pegar el contenido del portapapeles.
barlop
probablemente también sea bueno tener una máquina virtual * nix configurada y bien integrada para que puedan leer / escribir entre sí, luego puede tener los últimos comandos * nix y
barlop
6

Los Unxutils son ventanas nativas y no tienen dependencias, pero no se han actualizado desde hace tiempo y son un subconjunto de Coreutils. Necesitaría un entorno de estilo * nix para coreutils, por lo que necesitaría ejecutarlos en cygwin o similar

Journeyman Geek
fuente
3
El instalador de coreutils para Windows debe ocuparse de cualquier dependencia gnuwin32.sourceforge.net/packages/coreutils.htm
Nifle
1
los unxutils técnicamente no son un subconjunto de coreutils. además de versiones de comandos. unxutils tiene xxd que coreutils e incluso gnuwin32 no tiene. También al momento de escribir, gnuwin32 tiene una cola rota -f, pero unxutils's tail.exe -f funciona bien. sourceforge.net/p/gnuwin32/bugs/242 También gnuwin32 tiene sus propios coreutils gnuwin32.sourceforge.net/packages/coreutils.htm
barlop
2
UnxUtils funciona bien en la antigua línea de comandos de Windows, sin necesidad de Cygwin (que de todos modos probablemente tenga sus propias utilidades de línea de comandos Unix).
PhiLho
1
@Nifle bien, sí, pero los no utilizados no tienen dependencias y [agregaría que la forma en que el instalador lo maneja es] los gnuwin32 EXE deben ejecutarse en el mismo directorio que las pocas DLL de las que dependen, por lo que el instalador coloca un conjunto de archivos DLL en el directorio bin.
barlop
1
Escribe "Necesitaría un entorno de estilo * nix para coreutils, por lo que necesitaría ejecutarlos en cygwin o similar" <- No estoy seguro de lo que quiere decir. Los Unxutils se ejecutan en un entorno de Windows, no * nix shell. Y tienen cosas que no están en coreutils como wget y xxd, por lo que no son un subconjunto de coreutils. Además, incluso los comandos de cygwin pueden ejecutarse técnicamente directamente desde cmd, fuera de cygwin.
barlop