Разница между UnxUtils и GnuWin32?


18

Я пользователь Windows, и мне нужны такие программы, как grep и sed, а также другие утилиты, такие как ls, cut и т. Д. В моей командной строке. Я наткнулся на 2 пакета, которые бы выполнить это

Я хотел бы знать, в чем разница между этими двумя характеристиками и, что более важно, с точки зрения производительности, прежде чем выбирать между ними. Из того, что я видел, GnuWin32 - это супер набор UnxUtils. Это верно ?

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

Ответы:


16

У unxutils есть действительно старые версии нескольких самых полезных утилит. в том числе grep например.

Версии gnuwin32 также давно устарели, хотя и не так стары, как unxutils. Gnuwin32 имеет гораздо большее количество утилит. Это, очевидно, главное преимущество.

Имейте в виду, что gnuwin32 имеет это главное преимущество перед unxutils.

В качестве примера..

Чрезвычайно старый 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 старше, но работает. (упомянутый здесь хвост Cygwin также работает). В двух разных случаях я сталкивался с ошибками в gnuwin32 grep, которые были исправлены в более поздних версиях grep, а grep cygwin был намного позже и исправлен (и может быть запущен прямо из cmd.exe и не должен запускаться из оболочка cygwin).

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

  • unxutils может работать автономно, где множество эквивалентных двоичных файлов gnuwin32 не могут. Поэтому, если вы не хотите или не можете установить gnuwin32, вы можете использовать отдельную команду из unxutils. Например, для gnuwin32 tr.exe требуются два dll-файла в его каталоге, или он говорит, что их там нет и они не будут работать. sed gnuwin32 не работает автономно, в то время как unxutils tr.exe и sed.exe отлично работают автономно.
  • У unxutils есть gclip.exe и pclip.exe. Это команды для копирования в буфер обмена и вставки из буфера обмена. gnuwin32, похоже, не имеет ничего подобного, и в Windows изначально есть clip.exe (для копирования в буфер обмена), но нет команды для его вставки, как pclip.

Ссылка unxutils sourceforge имеет unxutils.zip и unxupdates.zip (последний является подмножеством unxutils.zip, но с более поздними, хотя и старыми версиями). Например, unxutils вышел с 1998 года, а unxupdates - с 2003 года. Это может помочь, например, у sed 1998 года нет \ d или \ x нотации egeg \ d34 или \ x22 для указания кавычек (проще, чем экранирование кавычек). Unxupdates один из 2003 и делает.

Gnuwin32 sed, на момент написания статьи, выпущен в 2009 году. (Gnuwin32 еще не устарел, поскольку есть версия grep даже для 2014 года http://ftp.gnu.org/gnu/grep/, но версия gnuwin32 гораздо менее устарела чем 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 (они должны запускаться из оболочки bash cygwin, что мне подходит), вам вообще не нужно смотреть на что-то древнее и не обновленное, как unxutils, хотя в нем есть pclip и gclip.

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

Добавлено примечаниеcoreutils, также известный как gnu coreutils, представляет собой набор команд, которые выполняются в linux (..) и, без сомнения, в ОС GNU с 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 и bash, а также другие оболочки linux являются мощными, так что здесь нет потерь.
Барлоп

Еще одно преимущество unxutils в том, что у него есть pclipкоманда для вставки содержимого буфера обмена.
Барлоп

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

6

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


3
Установщик для coreutils для Windows должен позаботиться о любых зависимостях gnuwin32.sourceforge.net/packages/coreutils.htm
Nifle

1
unxutils технически не является подмножеством coreutils. помимо версий команд. У 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).
Филу,

1
@ Хорошо, да, но все же у unxutils нет никаких зависимостей, и [я бы добавил, что способ, с которым справляется установщик, это), EXE-файлы gnuwin32 должны запускаться в том же каталоге, что и те несколько 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.