Equivalente Unix do PowerShell?

22

Eu sempre achei estranho quando comandos shell complexos envolveram a análise de saída de texto com AWK . Basicamente, estamos convertendo dados estruturados em texto e analisando o texto novamente para voltar aos dados estruturados.

PowerShell é um shell do Windows que evita esse problema, permitindo que você canalize objetos digitados entre comandos do shell em vez de apenas texto .

Existem shells Unix que são baseados em objetos em vez de baseados em texto, como o PowerShell?

    
por Wim Coenen 12.08.2010 / 14:24

6 respostas

24

Não, é o contrário. Não há colheres ^ H ^ H ^ Dados estruturados. Existe apenas texto.

Uma grande parte da filosofia Unix é baseada na idéia de produzir texto e aceitar texto como entrada. Você pode considerar ler " A Arte da Programação Unix ", que tem uma boa explicação sobre isso.

Não me entenda mal: eu entendo seu ponto e sei o que você está tentando entender. Existem coisas como os interpretadores interativos de Ruby e Python, que podem ser usados como shell, mas não são tão amigáveis para tarefas básicas como o Bash. Tente e mude o diretório, por exemplo.

Além disso, usar objetos em um shell não é tudo. Se apenas o seu shell suportar isso, no Unix, você ficaria perdido. Todas as ferramentas padrão de manipulação de texto do Unix teriam que ser alteradas, como grep, awk, sed, etc.

Acho que houve uma tentativa de criar algo assim há alguns anos, mas não consigo lembrar o nome e não tenho ouvido falar dele há muito tempo. Provavelmente não vai decolar.

    
por 12.08.2010 / 14:45
10

Na verdade, existe um projeto chamado Pash que visa implementar o PowerShell (além do Mono), mas ele parece ter parado.

    
por 13.08.2010 / 03:25
4

Existe um projeto cujo objetivo é similar ao PowerShell: Hotwire . Ele combina sh regular com scripts python e janela / ambiente gráfico. Você poderia dar uma olhada.

Ele é baseado em pipeline orientado a objetos que você pode estender com seus próprios objetos agrupando programas existentes ou usando bibliotecas Python.

    
por 12.08.2010 / 15:30
3

O PowerShell se tornou open-source em 2016. Desde então, ele está ficando cada vez mais multi-plataforma. O código-fonte está disponível em GitHub e, portanto, instala pacotes para um número de sistemas UNIX semelhantes.

    
por 20.04.2017 / 20:23
1

Eu acho que você poderia realizar a maior parte disso escrevendo um monte de scripts interpretados (ou compilados), então invocando-os dentro do shell do interpretador, que retornará ou preservará seus objetos e assim por diante se você quiser.

Você pode fazer isso em pelo menos Ruby, Perl, Python, Haskell (por exemplo, GHCi), JavaScript (por exemplo, node.js), Matlab e certamente outros idiomas ...

    
por 21.08.2010 / 22:43
1

Outro pensamento três anos depois: é possível representar um objeto com um fluxo de texto usando XML ou JSON. Eu prefiro o JSON (mais simples), e, de fato, existem projetos para dar suporte ao JSON dos utilitários clássicos do NIX. Por exemplo: link

Um problema com o uso de um modelo de tipo de objeto para programas clássicos * NIX como o AWK é que eles realmente não têm suporte a OO. Por exemplo, embora o AWK tenha matrizes associativas, as matrizes não são multidimensionais (cada elemento em uma matriz do AWK deve ser um número ou uma cadeia de caracteres; uma matriz não pode ser um objeto de matriz no AWK).

    
por 02.02.2014 / 05:43

Tags