17

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

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

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

3 ответа3

15

У 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. Например, trn gnuwin32 требует двух файлов 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. OSs. GNU Coreutils хорошо известен и чрезвычайно широко используется, полезен и обновлен. С другой стороны, unxutils - это очень старая реализация / порт некоторых команд, которые люди используют в Linux или Unix (которые, без сомнения, включают в себя некоторые команды coreutils), выполняемые для ОС Windows. Они обычно даже не упоминаются в одном и том же предложении, и единственная причина, по которой они были в первоначальном вопросе, заключалась в некоторой путанице в исходном вопросе. GnuWin32 имеет реализацию coreutils для Windows, которая называется Gnuwin32 coreutils, хотя, как уже упоминалось, Gnuwin32 является старым / не обновленным, просто не таким старым / не обновленным, как unxutils.

6

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

1

Coreutils из GnuWin32 имеет «вырезать»; см. http://gnuwin32.sourceforge.net/packages/coreutils.htm

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .