Różnica między UnxUtils a GnuWin32?


18

Jestem użytkownikiem systemu Windows, który chce programów takich jak grep i sed wraz z innymi narzędziami, takimi jak ls, cut itp. W wierszu polecenia. Natrafiłem na 2 pakiety, które by to osiągnęły

Chciałbym wiedzieć, jaka jest różnica między tymi dwiema cechami, a przede wszystkim wydajnością, zanim dokonam wyboru między nimi. Z tego, co widziałem, GnuWin32 jest super zestawem UnxUtils. Czy to jest poprawne ?

Zauważ, że Barlop
pytał o Coreutils i Unxutils, ale skoro mówił o grep i sed, jasne jest, że chciał zapytać o gnuwin32 i unxutils, i to jest o wiele bardziej przydatne i ważne pytanie niż błędne. Jeśli ludzie chcą przywrócić to do coreutils i unxutils, chętnie skorzystam z tego i zadam kolejne pytanie do gnuwin32 i unxutils. Każda poprawna odpowiedź na jego pierwotne pytanie poprawiłaby lub odpowiedziałaby na jego błąd, ale także odpowiedziałaby, co miał na myśli. Więc nie ma straty w poprawianiu jego pytania.

Odpowiedzi:


16

unxutils ma naprawdę stare wersje kilku najbardziej przydatnych narzędzi. na przykład grep.

Wersje gnuwin32 są również wiele lat nieaktualne, choć nie tak stare jak unxutils. Gnuwin32 ma znacznie większą liczbę narzędzi. To oczywiście duża zaleta.

Pamiętaj, że gnuwin32 ma tę przewagę nad unxutils.

Jako przykład..

Niezwykle stare unxutils

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

Copyright 1988...

Dość stary gnuwin32

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

Copyright (C) 2009 ...

Porównaj z oprogramowaniem, które jest bardziej aktualne niż gnuwin32, np. Cygwin

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

Dzięki unxutils możesz napotykać problemy, ponieważ używa on naprawdę starych wersji, a gdy szukasz pomocy, ludzie będą oczekiwać, że będziesz mieć najnowszą wersję tego lub innego polecenia.

Unxutils ma kilka mniejszych zalet, które sprawiają, że unxutils jest bardzo przydatny.

  • unxutils ma xxd, gnuwin32 nie. (Uwaga, VIM 7 ma również xxd, podobnie jak cygwin)
  • gnuwin32 w chwili pisania (2014) ma złamany ogon -f, ogon unxutils -f jest starszy, ale działa. (wspomniany tutaj ogon Cygwina również działa). Przy dwóch różnych okazjach napotkałem błędy w gnuwin32 grep, które zostały naprawione w późniejszych wersjach grep, a grep cygwina był znacznie późniejszy i w porządku (i można go uruchomić bezpośrednio z cmd.exe i nie trzeba go uruchamiać z powłoka cygwin).

  • poniższe jest mniejszą zaletą, ale jeśli jesteś bardzo leniwy lub po prostu chcesz go szybko użyć, to unxutils to tylko zip, możesz wyodrębnić pliki wykonywalne i przejść. Gnuwin32 wymaga kreatora do instalowania różnych bitów, a nawet niektóre indywidualne narzędzia muszą być instalowane osobno, tak jak plik wykonywalny instalacji dla wget, jeden dla grep np. (Grep-xxxx-bin.exe). z unxutils po prostu wypakowujesz z katalogu wbin w zipie. Pamiętaj, że są to starsze wersje, więc jeśli to możliwe, jeśli nie jest zbyt leniwy, ogólnie można sprawdzić, czy gnuwin32 go ma.

  • unxutils może działać samodzielnie, gdy wiele równoważnych plików binarnych gnuwin32 nie. Więc jeśli nie chcesz lub nie możesz zainstalować gnuwin32, możesz użyć samodzielnego polecenia z unxutils. Na przykład, tr.exe gnuwin32 wymaga dwóch plików dll w swoim katalogu lub mówi, że ich nie ma i nie będzie działać. gnuwin32's sed nie działa samodzielnie, podczas gdy unxutils tr.exe i sed.exe działają dobrze samodzielnie.
  • unxutils ma gclip.exe i pclip.exe Są to polecenia do kopiowania do schowka i wklejania ze schowka. gnuwin32 nie wydaje się mieć czegoś takiego, a Windows natywnie ma clip.exe (do skopiowania do schowka), ale nie ma polecenia, aby wkleić go jak pclip.

Łącze sourceforge unxutils zawiera unxutils.zip i unxupdates.zip (ten ostatni jest podzbiorem unxutils.zip, ale z późniejszymi, choć wciąż starymi wersjami). np. unxutils ma sed z 1998 roku, a unxupdates ma go z 2003 roku. To może pomóc np. sed 1998 nie ma notacji \ d lub \ x egeg \ d34 lub \ x22 do określania cudzysłowów (łatwiej niż unikanie cudzysłowów). Unxupdates pochodzi z 2003 roku i tak jest.

Gnuwin32 sed, w chwili pisania, pochodzi z 2009 roku. (Gnuwin32 jest wciąż nieaktualny, ponieważ istnieje wersja grep nawet dla 2014 http://ftp.gnu.org/gnu/grep/, ale gnuwin32 jest znacznie nieaktualny niż unxutils (nawet jeśli unxutils uważa się za „unxupdates”).

W http://unxutils.sourceforge.net/ unxutils.zip witryny jest w dół , ale jest dostępny https://archive.org/details/UnxUtils i oficjalnie https://sourceforge.net/projects/unxutils/ a jeśli jesteś zdobędziesz go, a następnie pobierz także unxupdates

Porównując gnuwin32 z unxutils, ogólnie rzecz biorąc, spójrz na Gnuwin32, ale wiedz, że unxutils ma pewne zalety. Gnuwin32 ma prawie wszystkie polecenia, które posiada unxutils, a także wiele więcej.

A także, spójrz na Cygwina, ma ogromną kolekcję narzędzi aktualizowanych znacznie bardziej niż gnuwin32, (powinny one być uruchamiane z powłoki bash cygwina, co jest dla mnie w porządku), na ogół nie musisz patrzeć na coś starożytnego i nieaktualizowanego jak unxutils, chociaż ma pclip i gclip.

oprócz gnuwin32 i unxutils, są także MinGW i cygwin oraz Windows SUA (które w chwili pisania MS wciąż utrzymują i byłyby aktualne) i GOW (który jest mały, chociaż strona github GOW pokazuje go jako ostatnia aktualizacja 2014) i jeszcze mniejszy, BusyBox (znany z Androida, ale jest dostępny dla systemu Windows, tutaj i nadal jest bardzo mały. Dwa najbardziej imponujące dla mnie to gnuwin32 i cygwin (a cygwin ma xxd i działający tail-f. Więc nie muszę uciekać się do unxutils) W cygwin programy powinny być naprawdę uruchamiane z powłoki cygwin, ale jest to linux shell np. bash Powłoka i bash oraz inne powłoki linux są potężne, więc nie ma strat. Należy również pamiętać, że obecnie wiele osób korzysta z maszyn wirtualnych z Linuksem zamiast cygwin lub gnuwin32, które naprawdę aktualizują odpowiednie wersje poleceń, a nie porty Windows, które mogą być starsze i mogą zachowywać się inaczej przy cudzysłowach.

Dodano notatkęcoreutils aka gnu coreutils, to kilka poleceń, które działają na Linuksie (..) i bez wątpienia system GNU z Herd (rzadziej używany system!), i prawdopodobnie ma pewne przyzwoite implementacje dla innych systemów operacyjnych * nix. GNU Coreutils jest dobrze znany i niezwykle szeroko stosowany, użyteczny i aktualizowany. Z drugiej strony unxutils jest bardzo starą implementacją / portem niektórych poleceń, których ludzie używają w Linuksie lub Uniksie (co niewątpliwie obejmowałoby niektóre polecenia coreutils), wykonywanych dla systemu operacyjnego Windows. Dwóch normalnie nie byłoby nawet wymienionych w tym samym zdaniu, a jedynym powodem, dla którego byli w pierwotnym pytaniu, było pewne zamieszanie w pierwotnym pytaniu. GnuWin32 ma implementację coreutils dla Windows, zwanych coreutils Gnuwin32, chociaż jak wspomniano, Gnuwin32 jest stary / nieaktualizowany, po prostu nie tak stary / nieaktualizowany, jak unxutils.


3
oprócz gnuwin32 i unxutils, są także MinGW i cygwin oraz Windows SUA i GOW. Dwa najbardziej imponujące dla mnie to gnuwin32 i cygwin (a cygwin ma xxd i działający tail-f. Więc nie muszę uciekać się do unxutils) W cygwin programy powinny być uruchamiane z powłoki cygwin, ale jest to powłoka linux np. bash shell i bash i inne powłoki linuxa są potężne, więc nie ma strat.
barlop

Jedną z dotychczas zachowanych zalet unxutils jest pclippolecenie wklejenia zawartości schowka.
barlop

prawdopodobnie również dobrze jest mieć skonfigurowaną i dobrze zintegrowaną maszynę wirtualną * nix, aby mogły one odczytywać / zapisywać sobie nawzajem, wtedy możesz mieć najnowsze komendy * nix i
barlop,

6

Unxutils są rodzime dla systemu Windows i nie mają żadnych zależności - ale od jakiegoś czasu nie były aktualizowane i są podzbiorem coreutils. Będziesz potrzebował środowiska w stylu * nix dla coreutils, więc musisz uruchomić je w cygwin lub podobnym


3
Instalator coreutils dla Windows powinien zająć się wszelkimi zależnościami gnuwin32.sourceforge.net/packages/coreutils.htm
Nifle

1
unxutils technicznie nie są podzbiorem coreutils. oprócz wersji poleceń. unxutils ma xxd, którego nie ma coreutils, a nawet gnuwin32. Również w momencie pisania gnuwin32 ma zepsuty ogon -f, ale tail.exe -f unxutils działa dobrze. sourceforge.net/p/gnuwin32/bugs/242 Również gnuwin32 ma własne coreutils gnuwin32.sourceforge.net/packages/coreutils.htm
barlop

2
UnxUtils działa dobrze w zwykłym starym wierszu poleceń systemu Windows, bez potrzeby Cygwin (który prawdopodobnie ma własne narzędzia uniksowe w linii poleceń).
PhiLho

1
@ No cóż, tak, ale nadal te unxutils nie mają żadnych zależności i [dodałbym, że sposób, w jaki instalator sobie z tym radzi jest taki], pliki gnuwin32 muszą być uruchamiane w tym samym katalogu, co kilka bibliotek DLL, od których są zależne, więc instalator umieszcza zestaw plików DLL w katalogu bin.
barlop

1
Piszesz: „Potrzebowałbyś środowiska w stylu * nix dla coreutils, więc musisz uruchomić je w cygwin lub podobnym” <- Nie jestem pewien, co masz na myśli. Unxutils działa w środowisku Windows, bez powłoki * nix. I mają rzeczy nie w coreutils, takie jak wget i xxd, więc nie są podzbiorem coreutils. Ponadto, nawet polecenia cygwin można technicznie uruchomić bezpośrednio z cmd, poza cygwin.
barlop

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.