Differenza tra UnxUtils e GnuWin32?


17

Sono un utente di Windows che desidera programmi come grep e sed insieme ad altre utility come ls, cut etc nel mio prompt dei comandi. Mi sono imbattuto in 2 pacchetti che avrebbero raggiunto questo obiettivo

Mi piacerebbe sapere qual è la differenza tra le due caratteristiche sagge e, soprattutto, le prestazioni prima di scegliere tra di loro. Da quello che ho visto GnuWin32 è un super set di UnxUtils. È corretto ?

Nota di Barlop
questa domanda si poneva su coreutils e unxutils, ma poiché parlava di grep e sed, è chiaro che intendeva porre domande su gnuwin32 e unxutils, e questa è una domanda molto più utile e importante di quella sbagliata. Se le persone vogliono convertirlo in coreutils e unxutils, sarei felice di andare con quello e pubblicare un'altra domanda per gnuwin32 e unxutils. Inoltre, qualsiasi risposta corretta alla sua domanda originale sarebbe corretta o rispondere al suo errore, ma risponderebbe anche a ciò che intendeva dire. Quindi non c'è alcuna perdita nel correggere la sua domanda.

Risposte:


15

unxutils ha versioni davvero vecchie di un gruppo di alcune delle utility più utili. incluso grep per esempio.

Le versioni di gnuwin32 sono anche obsolete da molti anni, anche se non quasi vecchie come unxutils. Gnuwin32 ha un numero molto maggiore di utility. Questo è ovviamente un grande vantaggio.

Ricorda che gnuwin32 ha questo grande vantaggio rispetto agli unxutils.

Come esempio..

Gli unxutils estremamente vecchi

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

Copyright 1988...

Il piuttosto vecchio gnuwin32

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

Copyright (C) 2009 ...

Contrasto con un software che è tenuto più aggiornato di gnuwin32, ad esempio cygwin

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

Con unxutils, puoi imbatterti in problemi poiché utilizza versioni molto vecchie e quando cercano aiuto le persone si aspettano che tu abbia l'ultima versione di questo o quel comando.

Ci sono alcuni piccoli vantaggi che unxutils ha, il che rende unxutils molto utile.

  • unxutils ha xxd, gnuwin32 no. (Nota, VIM 7 ha anche xxd, così come Cygwin)
  • gnuwin32 al momento della scrittura (2014) ha una coda rotta -f, la coda di unxutils -f è più vecchia ma funziona. (menzionato qui funziona anche la coda di Cygwin). In due diverse occasioni mi sono imbattuto in bug in gnuwin32 grep che sono stati corretti nelle versioni successive di grep e cygwin grep era molto più tardi e perfetto (e può essere eseguito direttamente da cmd.exe e non deve essere eseguito dal Cygwin Shell).

  • il seguente è un vantaggio più piccolo, ma se sei molto pigro o vuoi semplicemente usarlo rapidamente, allora unxutils è solo una zip puoi estrarre gli eseguibili e andare. Gnuwin32 prevede una procedura guidata per installare vari bit, e anche alcune singole utility devono essere installate separatamente come un eseguibile di installazione per wget, uno per grep ad es. (Grep-xxxx-bin.exe). con unxutils si estrae semplicemente dalla loro directory wbin all'interno della zip. Tenete presente che sono versioni precedenti, quindi se possibile, se non essendo troppo pigro, si vedrebbe generalmente se gnuwin32 ce l'ha.

  • unxutils può funzionare autonomamente dove molti binari gnuwin32 equivalenti non possono farlo. Quindi, se non si desidera o non è possibile installare gnuwin32, è possibile utilizzare un comando autonomo, da unxutils. Ad esempio, tr.exe di gnuwin32 richiede due file dll nella sua directory o dice che non ci sono e non funzioneranno. sed di gnuwin32 non funziona in modo autonomo, mentre unxutils tr.exe e sed.exe funzionano in modo autonomo.
  • unxutils ha gclip.exe e pclip.exe Sono comandi da copiare negli appunti e incollarli dagli appunti. gnuwin32 non sembra avere nulla di simile e Windows ha nativamente clip.exe (da copiare negli appunti), ma nessun comando per incollarlo come pclip.

Il link sourceforge di unxutils ha unxutils.zip e unxupdates.zip (quest'ultimo è un sottoinsieme di unxutils.zip ma con versioni successive anche se ancora vecchie). ad esempio unxutils ha sed dal 1998 e unxupdates ne ha uno dal 2003. Ciò può aiutare ad esempio sed del 1998 non ha la notazione \ d o \ x egeg \ d34 o \ x22 per specificare le virgolette (più facile della fuga delle virgolette). Quello non aggiornato è del 2003 e lo fa.

La gnuwin32 sed, al momento della stesura, è del 2009. (Gnuwin32 è ancora obsoleta in quanto esiste una versione grep anche per il 2014 http://ftp.gnu.org/gnu/grep/ ma quella di gnuwin32 è molto meno obsoleta di unxutils (anche quando unxutils è considerato con 'unxupdates').

Il sito http://unxutils.sourceforge.net/ unxutils.zip del sito non è attivo ma è disponibile https://archive.org/details/UnxUtils e ufficialmente https://sourceforge.net/projects/unxutils/ e se sei andando a prenderlo quindi scaricare anche gli aggiornamenti non aggiornati

Confrontando gnuwin32 con unxutils, generalmente guardi a Gnuwin32, ma sappi che unxutils ha alcuni vantaggi .. Gnuwin32 ha quasi tutti i comandi che ha unxutils, e molto altro ancora.

Inoltre, guarda Cygwin, ha una vasta collezione di utility tenute molto più aggiornate rispetto a gnuwin32, (dovrebbero essere gestite dalla shell bash di Cygwin, che va bene per me), in genere non hai davvero bisogno di guardare qualcosa di antico e non aggiornato come unxutils, anche se ha pclip e gclip.

oltre a gnuwin32 e unxutils, ci sono anche MinGW e cygwin e Windows SUA (che al momento della stesura, MS mantiene ancora e sarebbe aggiornato) e GOW (che è piccolo, sebbene la pagina GOW github lo mostri come ultimo aggiornamento 2014) e ancora più piccolo, BusyBox (famoso per Android ma è disponibile per Windows, qui ed è ancora molto piccolo. I due più impressionanti per me sono gnuwin32 e cygwin (e cygwin ha xxd e una coda funzionante -f. Quindi non ho bisogno di ricorrere a unxutils) Con cygwin, i programmi dovrebbero davvero essere eseguiti dalla shell cygwin ma è un Linux shell, ad esempio bash shell e bash e altre shell linux sono potenti, quindi nessuna perdita lì. Ricorda inoltre che oggigiorno molte persone usano macchine virtuali linux invece di cygwin o gnuwin32, che aggiorna davvero le versioni appropriate dei comandi, piuttosto che le porte di Windows che possono essere più vecchie e possono comportarsi diversamente con le virgolette.

Nota aggiuntacoreutils aka gnu coreutils, è un gruppo di comandi che girano su linux (..), e senza dubbio il sistema operativo GNU con Herd (un sistema operativo meno usato!), e probabilmente ha alcune implementazioni decenti fatte per altri sistemi operativi * nix. GNU Coreutils è ben noto ed estremamente usato, utile e aggiornato. D'altro canto unxutils è un'implementazione / porta molto vecchia di alcuni comandi che le persone usano su Linux o Unix (che senza dubbio includerebbe alcuni comandi coreutils), eseguita per il sistema operativo Windows. Normalmente i due non sarebbero nemmeno stati menzionati nella stessa frase e l'unica ragione per cui si trovavano nella domanda originale, era dovuta a una certa confusione nella domanda originale. GnuWin32 ha un'implementazione di coreutils per Windows, chiamati coreutils Gnuwin32, anche se come detto, Gnuwin32 è vecchio / non aggiornato, ma non altrettanto vecchio / non aggiornato, come unxutils.


3
oltre a gnuwin32 e unxutils, ci sono anche MinGW e cygwin e Windows SUA e GOW. I due più impressionanti per me sono gnuwin32 e cygwin (e cygwin ha xxd e una coda funzionante -f. Quindi non ho bisogno di ricorrere a unxutils) Con cygwin, i programmi dovrebbero davvero essere eseguiti dalla shell cygwin ma è una shell linux es. bash shell e bash e altre shell linux sono potenti quindi nessuna perdita lì.
barlop

uno dei vantaggi ancora sopravvissuti di unxutils è che ha il pclipcomando di incollare il contenuto degli appunti.
barlop

probabilmente anche buono avere una VM * nix configurata e ben integrata in modo che possano leggersi / scriversi a vicenda, quindi si possono avere gli ultimi comandi * nix e
barlop

6

Gli Unxutils sono nativi di Windows e non hanno dipendenze, ma non sono stati aggiornati da un po 'e sono un sottoinsieme di coreutils. Avresti bisogno di un ambiente in stile * nix per coreutils, quindi dovresti eseguirli in Cygwin o simili


3
Il programma di installazione di coreutils per Windows dovrebbe occuparsi di tutte le dipendenze gnuwin32.sourceforge.net/packages/coreutils.htm
Nifle

1
gli unxutils non sono tecnicamente un sottoinsieme di coreutils. oltre alle versioni dei comandi. unxutils ha xxd quale coreutils e persino gnuwin32 non ha. Anche durante la scrittura, gnuwin32 ha una coda rotta -f, ma unxutils's tail.exe -f funziona bene. sourceforge.net/p/gnuwin32/bugs/242 Anche gnuwin32 ha i suoi coreutils gnuwin32.sourceforge.net/packages/coreutils.htm
barlop

2
UnxUtils funziona bene nella semplice riga di comando di Windows, senza bisogno di Cygwin (che probabilmente viene fornito con le sue utility di riga di comando Unix, comunque).
PhiLho,

1
@Nifle bene, sì, ma quelli unxutils non hanno dipendenze e [aggiungerei che il modo in cui il programma di installazione lo gestisce è] gli EXE gnuwin32 devono essere eseguiti nella stessa directory di qualsiasi poche DLL da cui dipendono, quindi il programma di installazione inserisce un set di file DLL nella directory bin.
barlop

1
Scrivi "Avresti bisogno di un ambiente in stile * nix per coreutils, quindi dovresti eseguirli in cygwin o simili" <- Non sei sicuro di cosa intendi. Unxutils viene eseguito in un ambiente Windows, nessuna shell * nix. E hanno cose non nei coreutils come wget e xxd, quindi non sono un sottoinsieme di coreutils. Inoltre, anche i comandi di cygwin possono essere tecnicamente eseguiti direttamente da cmd, al di fuori di cygwin.
barlop

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.