Diferença entre UnxUtils e GnuWin32?


17

Eu sou um usuário do Windows que deseja programas como grep e sed, juntamente com outros utilitários como ls, cut etc no meu prompt de comando. Me deparei com 2 pacotes que conseguiriam isso

Gostaria de saber qual é a diferença entre os dois, tanto em termos de recursos quanto em termos de desempenho, antes de escolher entre eles. Pelo que vi, o GnuWin32 é um super conjunto de UnxUtils. Isso está correto?

Nota por Barlop,
essa pergunta foi feita sobre coreutils e unxutils, mas como ele estava falando sobre grep e sed, é claro que ele queria perguntar sobre gnuwin32 e unxutils, e essa é uma pergunta muito mais útil e importante do que a errada. Se as pessoas quiserem reverter para coreutils e unxutils, eu ficaria feliz em fazer isso e postar outra pergunta para o gnuwin32 e unxutils. Além disso, qualquer resposta adequada à sua pergunta original iria corrigir ou responder a respeito do seu erro, mas também responderia o que ele queria dizer. Portanto, não há perda em corrigir sua pergunta.

Respostas:


15

O unxutils possui versões realmente antigas de alguns dos utilitários mais úteis. incluindo grep, por exemplo.

As versões do gnuwin32 também estão desatualizadas há muitos anos, embora não sejam tão antigas quanto os unxutils. O Gnuwin32 possui um número muito maior de utilitários. Obviamente, isso é uma grande vantagem.

Tenha em mente que o gnuwin32 tem essa grande vantagem sobre os unxutils.

Como um exemplo..

Os unxutils extremamente antigos

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

Copyright 1988...

O gnuwin32 bastante antigo

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

Copyright (C) 2009 ...

Contraste com o software que é mantido mais atualizado que o gnuwin32, por exemplo, cygwin

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

Com o unxutils, você pode encontrar problemas, pois usa versões realmente antigas e, ao procurar ajuda, as pessoas esperam que você tenha a versão mais recente deste ou daquele comando.

Existem algumas vantagens menores que o unxutils tem, o que torna o unxutils muito útil.

  • O unxutils possui xxd, o gnuwin32 não. (Observe, o VIM 7 também possui xxd, o cygwin)
  • gnuwin32 desde a escrita (2014) tem uma cauda quebrada -f, a cauda de unxutils -f é mais antiga, mas funciona. (mencionado aqui a cauda de Cygwin também funciona). Em duas ocasiões diferentes, encontrei bugs no gnuwin32 grep, que foram corrigidos nas versões posteriores do grep e o greg do cygwin foi muito mais tarde e ótimo (e pode ser executado diretamente do cmd.exe e não precisa ser executado no diretório cygwin shell).

  • o seguinte é uma vantagem menor, mas se você é muito preguiçoso ou apenas deseja usá-lo rapidamente, o unxutils é apenas um zip que você pode extrair e executar. O Gnuwin32 envolve um assistente para instalar vários bits, e até mesmo alguns utilitários individuais devem ser instalados separadamente, como uma instalação executável para o wget, uma para o grep, por exemplo (grep-xxxx-bin.exe). com unxutils, você apenas extrai do diretório wbin dentro do zip. Tenha em mente que são versões mais antigas, portanto, se possível, se não for muito preguiçoso, geralmente se verificaria se o gnuwin32 a possui.

  • O unxutils pode funcionar de forma independente, onde muitos binários equivalentes do gnuwin32 não podem. Portanto, se você não deseja ou não pode instalar o gnuwin32, pode usar um comando independente, do unxutils. Por exemplo, o tr.exe do gnuwin32 requer dois arquivos DLL em seu diretório ou ele diz que eles não estão lá e não serão executados. O sed do gnuwin32 não funciona de maneira independente, enquanto o unxutils tr.exe e o sed.exe funcionam de maneira independente.
  • unxutils possui gclip.exe e pclip.exe Eles são comandos para copiar para a área de transferência e colar da área de transferência. O gnuwin32 não parece ter nada parecido, e o Windows possui nativamente o clip.exe (para copiar para a área de transferência), mas nenhum comando para colá-lo como o pclip.

O link sourceforge do unxutils possui unxutils.zip e unxupdates.zip (este último é um subconjunto de unxutils.zip, mas com versões posteriores, embora antigas). por exemplo, unxutils sedou desde 1998 e unxupdates possui um desde 2003. Isso pode ajudar, por exemplo, o sed 1998 não possui a notação \ d ou \ x egeg \ d34 ou \ x22 para especificar aspas (mais fácil do que escapar de aspas). O unxupdates um é de 2003 e faz.

O gnuwin32 sed, até o momento, é de 2009. (O Gnuwin32 ainda está desatualizado, pois existe uma versão grep mesmo para 2014 http://ftp.gnu.org/gnu/grep/, mas o gnuwin32 está muito menos desatualizado do que unxutils (mesmo quando unxutils é considerado com 'unxupdates').

O http://unxutils.sourceforge.net/ site unxutils.zip está inoperante, mas está disponível https://archive.org/details/UnxUtils e oficialmente https://sourceforge.net/projects/unxutils/ e se você estiver indo para obtê-lo, faça o download unxupdates também

Comparando o gnuwin32 com o unxutils, geralmente observe o Gnuwin32, mas saiba que o unxutils tem algumas vantagens. O Gnuwin32 possui quase todos os comandos que o unxutils possui, além de muito mais.

Além disso, observe o Cygwin, ele tem uma enorme coleção de utilitários mantidos muito mais atualizados que o gnuwin32 (eles devem ser executados a partir do shell bash do cygwin, o que é bom para mim), geralmente você não precisa realmente olhar para algo antigo e não atualizado como unxutils, embora tenha pclip e gclip.

além do gnuwin32 e do unxutils, também existem o MinGW e o cygwin e o Windows SUA (que até o momento a MS mantém e atualiza) e GOW (que é pequeno, embora a página do github do GOW o mostre como atualizada pela última vez em 2014) e menor ainda, o BusyBox (famoso pelo Android, mas está disponível para Windows, aqui e ainda é muito pequeno. Os dois mais impressionantes para mim são o gnuwin32 e o cygwin (e o cygwin tem xxd e uma cauda funcional -f. Portanto, não preciso recorrer a unxutils) Com o cygwin, os programas devem realmente ser executados a partir do shell do cygwin, mas é um linux shell, por exemplo, bash shell e bash e outras conchas do linux são poderosas, portanto não há perda. Também lembre-se de que hoje em dia muitas pessoas usam máquinas virtuais linux em vez de cygwin ou gnuwin32, que realmente atualizam versões apropriadas dos comandos, em vez de portas do Windows que podem ser mais antigas e podem se comportar de maneira diferente com aspas.

Nota adicionadaO coreutils, também conhecido como gnu coreutils, é um conjunto de comandos executados no linux (..), e sem dúvida o GNU OS com Herd (um sistema operacional menos utilizado!), e provavelmente tem algumas implementações decentes feitas para outros sistemas operacionais * nix. O GNU Coreutils é bem conhecido e extremamente amplamente utilizado, útil e atualizado. Por outro lado, o unxutils é uma implementação / porta muito antiga de alguns comandos que as pessoas usam no linux ou no unix (que sem dúvida incluiria alguns comandos do coreutils), feitos para o sistema operacional Windows. Os dois nem mesmo seriam mencionados na mesma frase e a única razão pela qual eles estavam na pergunta original, foi devido a alguma confusão na pergunta original. O GnuWin32 possui uma implementação de coreutils para Windows, chamada Gnuwin32 coreutils, embora, como mencionado, o Gnuwin32 seja antigo / não atualizado, apenas não tão antigo / não atualizado, como unxutils.


3
além de gnuwin32 e unxutils, também existem MinGW e cygwin e Windows SUA e GOW. Os dois mais impressionantes para mim são o gnuwin32 e o cygwin (e o cygwin tem xxd e uma cauda funcional -f. Portanto, não preciso recorrer a unxutils) Com o cygwin, os programas devem realmente ser executados a partir do shell do cygwin, mas é um shell linux por exemplo, bash shell e bash e outras conchas do linux são poderosas, portanto não há perda.
barlop

Uma vantagem ainda existente do unxutils é o pclipcomando para colar o conteúdo da área de transferência.
barlop

provavelmente também bom ter um * nix VM configurar e bem integrado para que eles possam ler / escrever uns aos outros, então você pode ter as últimas * nix comandos e
barlop

6

Os unxutils são nativos do Windows e não têm dependências - mas não foram atualizados há algum tempo e são um subconjunto de coreutils. Você precisaria de um ambiente no estilo * nix para coreutils, portanto, seria necessário executá-los no cygwin ou similar


3
O instalador para coreutils para as janelas devem ter o cuidado de qualquer dependências gnuwin32.sourceforge.net/packages/coreutils.htm
Nifle

1
unxutils tecnicamente não são um subconjunto de coreutils. além de versões de comandos. O unxutils possui o xxd, que o coreutils e até o gnuwin32 não possuem. Também na escrita, o gnuwin32 tem uma cauda quebrada -f, mas o tail.exe do unxutils -f funciona bem. sourceforge.net/p/gnuwin32/bugs/242 Também o gnuwin32 tem seus próprios coreutils gnuwin32.sourceforge.net/packages/coreutils.htm
barlop

2
O UnxUtils funciona bem na linha de comando antiga e simples do Windows, sem a necessidade do Cygwin (que provavelmente vem com seus próprios utilitários de linha de comando Unix).
PhiLho

1
@ Nifle bem, sim, mas ainda assim os unxutils não têm dependências e [eu acrescentaria que a maneira como o instalador lida com isso] os EXEs do gnuwin32 precisam ser executados no mesmo diretório que quaisquer DLLs das quais eles dependem, então o instalador coloca um conjunto de arquivos DLL no diretório bin.
barlop

1
Você escreve "Você precisaria de um ambiente no estilo * nix para coreutils, portanto, seria necessário executá-los no cygwin ou similar" <- Não sei ao certo o que você quer dizer. Unxutils rodam em um ambiente Windows, não * nix shell. E eles têm coisas que não estão nos coreutils, como wget e xxd, portanto não são um subconjunto de coreutils. Além disso, mesmo os comandos do cygwin tecnicamente podem ser executados diretamente do cmd, fora do cygwin.
barlop

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.