Різниця між UnxUtils та GnuWin32?


18

Я користувач Windows, який хоче, щоб у моєму командному рядку такі програми, як grep і sed, а також інші утиліти, такі як ls, cut тощо. Я натрапив на два пакети, які могли б це досягти

Мені хотілося б знати, в чому різниця між цими двома властивостями, які мають більшу ефективність, і, що важливіше, є ефективними, перш ніж вибрати між ними. З того, що я бачив, GnuWin32 - це супер набір UnxUtils. Це правильно ?

Зауважив Барлоп, у
цьому питанні було запитання про coreutils та unxutils, але оскільки він говорив про grep і sed, зрозуміло, що він мав намір запитати про gnuwin32 та unxutils, і це набагато корисніше та важливіше питання, ніж помилкове. Якщо люди хочуть повернути його до coreutils та unxutils, я би радий піти з цим і надіслати ще одне питання щодо gnuwin32 та unxutils. Крім того, будь-яка правильна відповідь на його первісне запитання виправила б або відповіла щодо його помилки, але також відповіла б, що він мав на увазі. Тож немає жодних втрат у виправленні його питання.

Відповіді:


16

unxutils має дійсно старі версії з купою деяких найкорисніших утиліт. включаючи греп, наприклад.

Версії gnuwin32 також застаріли багато років, хоча і не майже старі, як утиліти. Gnuwin32 має набагато більшу кількість утиліт. Очевидно, це головна перевага.

Майте на увазі, що gnuwin32 має таку головну перевагу перед непридатними засобами.

Як приклад..

Надзвичайно старі unxutils

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

Copyright 1988...

Досить старий gnuwin32

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

Copyright (C) 2009 ...

На відміну від програмного забезпечення, яке оновлюється більш актуально, ніж gnuwin32, наприклад cygwin

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

За допомогою unxutils ви можете зіткнутися з проблемами, оскільки він використовує справді старі версії, і, шукаючи допомоги, люди будуть сподіватися, що у вас буде остання версія тієї чи іншої команди.

Є деякі менші переваги, які мають unxutils, що робить unxutils дуже корисними.

  • unxutils має xxd, gnuwin32 - ні. (Зауважте, VIM 7 також має xxd, як і cygwin)
  • gnuwin32, як писали (2014), має зламаний хвіст -f, хвіст unxutils -f старший, але працює. ( тут згаданий хвіст Кігвіна також працює). У двох різних випадках я зіткнувся з помилками в gnuwin32 grep, які були виправлені у більш пізніх версіях grep та greg cygwin, були набагато пізніше і чудово (і їх можна запускати прямо з cmd.exe і не потрібно запускати з цигувінова оболонка).

  • нижче - це менша перевага, але якщо ви дуже ліниві або просто хочете скористатися нею, то unxutils - це лише поштовий індекс, який ви можете витягти виконуваними файлами та перейти. Gnuwin32 залучає майстра для встановлення різних бітів, і навіть деякі окремі утиліти повинні бути встановлені окремо, як програма для налаштування wget, одна для grep, наприклад (grep-xxxx-bin.exe). за допомогою unxutils ви просто витягуєте їх з каталогу wbin в межах zip. Майте на увазі, хоча вони старіші версії, тому, якщо можливо, якщо не надто ледачий, то, як правило, можна побачити, чи є в gnuwin32.

  • unxutils може працювати окремо, коли безліч еквівалентних бінарних файлів gnuwin32 не можуть. Тож якщо ви не хочете або не можете встановити gnuwin32, тоді ви можете використовувати команду окремо від unxutils. Наприклад, tr.exe gnuwin32 потребує двох файлів dll у своєму каталозі, або він говорить, що їх немає і не запускається. sed не працює автономно, тоді як unxutils tr.exe і sed.exe працюють нормально.
  • unxutils має gclip.exe та pclip.exe Вони є командами для копіювання у буфер обміну та вставки з буфера обміну. gnuwin32, схоже, не має нічого подібного, і Windows споконвічно має clip.exe (скопіювати у буфер обміну), але не має команди вставляти його як pclip.

У посиланні unxutils sourceforge є unxutils.zip та unxupdates.zip (останній є підмножиною unxutils.zip, але з пізнішими, хоча ще старими версіями). наприклад, unxutils має sed з 1998 року, а unxupdates - 2003 року. Це може допомогти, наприклад, 1998 sed не має \ d або \ x позначення egeg \ d34 або \ x22 для визначення лапок (простіше, ніж уникнути лапок) ,. Недоступні дані - з 2003 року.

Як пишеться, gnuwin32 sed починається з 2009 року. (Gnuwin32's все ще застарілий, оскільки існує греп- версія навіть для 2014 року http://ftp.gnu.org/gnu/grep/, але gnuwin32's значно менше застаріла ніж unxutils (навіть коли unxutils вважається "unxupdates").

У http://unxutils.sourceforge.net/ unxutils.zip сайту вниз , але доступний https://archive.org/details/UnxUtils і офіційно https://sourceforge.net/projects/unxutils/ і якщо ви збираюся отримати його, то завантажте і unxupdates

Порівнюючи gnuwin32 з unxutils, як правило, дивіться на Gnuwin32, але знайте, що unxutils має деякі переваги. Gnuwin32 має майже всі команди, які мають unxutils, плюс багато іншого.

А також, погляньте на Cygwin, у нього є величезна колекція утиліт, що зберігаються набагато актуальніше, ніж gnuwin32, (їх слід запускати з башти-файлу Cygwin, що на мене добре), вам взагалі не потрібно дивитися на це щось старе і не оновлюване, як unxutils, хоча у ньому є pclip та gclip.

окрім gnuwin32 та unxutils, є також MinGW та cygwin та Windows SUA (які, як писали, MS досі підтримують і були б актуальними) та GOW (що мало, хоча сторінка GOW Github показує це як останнє оновлення 2014 року) та все ж менший розмір, BusyBox (відомий андроїд, але він доступний для Windows, тут і ще дуже маленький. Дві найбільш вражаючі для мене характеристики - це gnuwin32 та cygwin (а ​​у cygwin є xxd та робочий хвіст -f. Тому мені не потрібно вдаватися до unxutils) Що стосується cygwin, програми дійсно повинні запускатися із оболонки cygwin, але це її linux shell, наприклад, bash shell та bash та інші Linux-оболонки, є потужними, тому втрат там немає. Також майте на увазі, що в даний час багато людей використовують віртуальні машини linux замість cygwin або gnuwin32, які дійсно оновлюють належні версії команд, а не порти Windows, які можуть бути старшими і можуть поводитися по-різному з цитатами.

Додано Примітка-coreutils aka gnu coreutils - це купа команд, які виконуються на Linux (..), і, без сумніву, GNU OS з Herd (менш широко використовуваною ОС!), і, ймовірно, має деякі гідні реалізації, виконані для інших * nix ОС. GNU Coreutils добре відомий і надзвичайно широко використовується, корисний і оновлений. З іншого боку unxutils - це дуже давня реалізація / порт деяких команд, які люди використовують на Linux або unix (що, без сумніву, включають деякі команди coreutils), зроблені для ОС Windows. Вони, як правило, не згадуються в одному реченні, і єдина причина, чому вони були в первісному питанні, була обумовлена ​​деякою плутаниною в первісному питанні. У GnuWin32 є реалізація coreutils для Windows, звана Gnuwin32 coreutils, хоча, як було сказано, Gnuwin32 є старим / не оновленим, так само не старим / не оновленим, як unxutils.


3
окрім gnuwin32 та unxutils, є також MinGW та cygwin та Windows SUA та GOW. Дві найбільш вражаючі для мене - gnuwin32 і cygwin (а ​​у cygwin є xxd та робочий хвіст -f. Тому мені не потрібно вдаватися до unxutils) Що стосується cygwin, програми дійсно повинні запускатися із оболонки cygwin, але це оболонка linux наприклад, bash shell і bash та інші оболонки Linux потужні, тому втрат там немає.
барлоп

Однією з переваг нестандартних програм є те, що вона має pclipкоманду вставити вміст буфера обміну.
барлоп

також, ймовірно, добре мати налаштування * nix VM та добре інтегруватись, щоб вони могли читати / писати один одному, тоді ви можете мати останні * * команди nix та
barlop

6

Unxutils є рідними вікнами і не мають залежностей, але вони не оновлювались протягом певного часу і є підмножиною coreutils. Вам знадобиться середовище стилю * nix для coreutils, тому вам потрібно запустити їх у cygwin чи подібних


3
Установник для coreutils для Windows повинен піклуватися про будь-які залежності gnuwin32.sourceforge.net/packages/coreutils.htm
Nifle

1
технічні речовини не є підмножиною основних ядер. крім версій команд. unxutils має xxd, який не має coreutils, а навіть gnuwin32. Крім того, як писати, gnuwin32 має зламаний хвіст -f, але unxutils tail.exe -f працює чудово. sourceforge.net/p/gnuwin32/bugs/242 Також gnuwin32 має власні coreutils gnuwin32.sourceforge.net/packages/coreutils.htm
barlop

2
UnxUtils прекрасно працює у звичайному старому командному рядку Windows, немає необхідності в Cygwin (який, мабуть, придумує власні утиліти командного рядка Unix, все одно).
PhiLho

1
@Nifle добре, так, але все-таки нетипічні не мають залежностей, і [я додав би, що спосіб, з яким це працює інсталятор], gnuwin32 EXE повинен запускатися в одному каталозі, як і всі кілька DLL-файлів, від яких вони залежать, так інсталятор розміщує набір файлів DLL у каталозі bin.
барлоп

1
Ви пишете "Вам знадобиться середовище стилю * nix для coreutils, тому вам потрібно буде запустити їх у cygwin чи подібних" <- Не впевнений, що ви маєте на увазі. Unxutils працюють у середовищі Windows, без * nix оболонки. І у них є речі не в coreutils, такі як wget і xxd, тому вони не є підмножиною coreutils. Крім того, навіть cygwin команди технічно можна запускати прямо з cmd, поза cygwin.
барлоп

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.