UnxUtils和GnuWin32之间的区别?


17

我是Windows用户,希望在命令提示符下使用grep和sed等程序以及ls,cut等其他实用程序。我遇到了两个可以完成此任务的软件包

我想知道在选择功能之前,两者在功能方面,更重要的是在性能方面有什么区别。从我看到的内容来看,GnuWin32是UnxUtils的超级集合。它是否正确 ?

Barlop注意到,
这个问题是关于coreutils和unxutils的,但是由于他是在谈论grep和sed,很明显,他的意思是要问gnuwin32和unxutils,这是一个比错误的问题更为有用和重要的问题。如果人们想将其还原为coreutils和unxutils,那么我很乐意与此并为gnuwin32和unxutils发布另一个问题。同样,对他的原始问题的任何正确答案都将纠正或回答有关他的错误,也可以回答他的意思。因此,纠正他的问题没有损失。

Answers:


15

unxutils确实是一些最有用的实用程序的旧版本。例如包括grep。

gnuwin32版本也已经过时了许多年,尽管还不如unxutils早。Gnuwin32具有大量实用程序。这显然是一个主要优势。

请记住,与unxutils相比,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 ...

与保持更新的软件(例如cygwin)比gnuwin32保持最新

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

使用unxutils时,您会遇到问题,因为它使用的确实是旧版本,并且在寻求帮助时,人们会期望您拥有此命令或该命令的最新版本。

unxutils具有一些较小的优点,这使unxutils非常有用。

  • unxutils有xxd,gnuwin32没有。(请注意,VIM 7也具有xxd,cygwin也是如此)
  • 截至撰写本文(2014)时,gnuwin32的尾巴-f断开了,unxutils的尾巴-f较旧但有效。(这里提到的 Cygwin的尾巴也可以使用)。在两次不同的情况下,我都遇到了gnuwin32 grep中的错误,该错误已在更高版本的grep中修复,而cygwin的grep则更晚了并且很好(可以直接从cmd.exe运行,而不必从cygwin外壳)。

  • 以下是较小的优势,但是如果您很懒惰,或者只是想快速使用它,那么unxutils只是一个zip文件,您可以提取可执行文件并运行。Gnuwin32包含一个用于安装各种位的向导,甚至某些单独的实用程序也必须单独安装,例如wget的安装可执行文件,grep的安装可执行文件,例如(grep-xxxx-bin.exe)。使用unxutils,您只需从zip的wbin目录中提取它们即可。请记住,尽管它们是较旧的版本,所以如果可能的话,即使不是太懒,通常也会看gnuwin32是否拥有它。

  • unxutils可以独立工作,而许多等效的gnuwin32二进制文件则不能。因此,如果您不想或无法安装gnuwin32,则可以从unxutils独立使用命令。例如,gnuwin32的tr.exe在其目录中需要两个dll文件,或者说它们不存在并且无法运行。gnuwin32的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从1998年开始发行,而unxupdates从2003年开始发行。这可以帮助例如1998 sed没有\ d或\ x表示法,例如\ d34或\ x22来指定引号(比转义引号更容易)。unxupdates是2003年以来做的。

截至撰写本文时,gnuwin32 sed是从2009年开始的。(Gnuwin32的版本仍然过时,因为即使2014年也有grep版本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更先进的实用程序(它们应该从cygwin的bash shell运行,对我来说很好),您通常不需要真正看一下一些古老的东西,例如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 shell运行,但是它是linux shell,例如bash shell和bash以及其他linux shell功能强大,因此不会造成任何损失。还请记住,当今许多人使用linux虚拟机来代替cygwin或gnuwin32,而cygwin或gnuwin32确实是最新版本的命令,而不是Windows端口,后者可能会更旧,并且使用引号的行为可能有所不同。

添加了注释-coreutils又名gnu coreutils,是一堆在linux(..)上运行的命令,毫无疑问是带有Herd的GNU OS(一种使用较少的OS!),并且可能已经为其他* nix操作系统做了一些不错的实现。GNU Coreutils是众所周知的,并且被广泛使用,有用和更新。另一方面,unxutils是人们在linux或unix上使用的某些命令的非常旧的实现/端口(无疑将包括一些coreutils命令),这些命令是为Windows OS完成的。通常在同一句子中甚至不会提到这两者,并且之所以将它们包含在原始问题中,唯一的原因是由于原始问题中有些混乱。GnuWin32确实具有Windows的coreutils实现,称为Gnuwin32 coreutils,尽管如前所述,Gnuwin32是旧/未更新的,只是不如unxutils旧/未更新的。


3
除了gnuwin32和unxutils,还有MinGW和cygwin以及Windows SUA和GOW。对我来说最令人印象深刻的两个是gnuwin32和cygwin(而且cygwin具有xxd和有效的尾部-f。因此,我不必求助于unxutils)使用cygwin,程序实际上应该从cygwin shell运行,但是它是linux shell例如bash shell和bash和其他linux shell功能强大,因此不会造成任何损失。
barlop

unxutils尚存的优点之一是它具有pclip粘贴剪贴板内容的命令。
barlop 2015年

* nix VM的设置和良好集成也可能很好,这样它们就可以彼此读/写,那么您可以拥有最新的* nix命令和
barlop 16-10-17

6

Unxutils是Windows本机的,没有依赖关系-但是已经有一段时间没有更新了,并且是coreutils的子集。您需要一个* nix风格的coreutils环境,因此您需要在cygwin或类似版本中运行它们


3
对于窗户的coreutils安装人员应采取的任何相关的护理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(无论如何,Cygwin可能都带有自己的Unix命令行实用程序)。
PhiLho

1
@Nifle很好,是的,但是unxutils仍然没有依赖关系,并且[我要补充说安装程序处理它的方式是] gnuwin32 EXE必须与它们所依赖的DLL不在同一个目录中运行,因此安装程序会在bin目录中放置一组DLL文件。
barlop 2015年

1
您写道:“ Coreutils需要一个* nix风格的环境,因此您需要在cygwin或类似版本中运行它们” <-不确定您的意思。Unxutils在Windows环境中运行,没有* nix shell。而且它们没有诸如wget和xxd之类的coreutils中包含的东西,因此它们不是coreutils的子集。同样,从技术上说,甚至cygwin命令都可以直接从cygwin外部的cmd运行。
barlop 2015年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.