it-swarm-es.tech

¿Unix equivalente a PowerShell?

Siempre me ha parecido incómodo cuando los comandos de Shell complejos implican analizar la salida de texto con AWK . Básicamente, estamos convirtiendo datos estructurados en texto y luego analizando el texto nuevamente para volver a los datos estructurados.

PowerShell es un Shell de Windows que evita ese problema al permitirle canalizar objetos escritos entre comandos de Shell en lugar de solo texto.

¿Hay shells de Unix que estén basados ​​en objetos en lugar de basados ​​en texto, como PowerShell?

21
Wim Coenen

No, es al revés. No hay datos estructurados de cuchara ^ H ^ H ^ H. Solo hay texto.

Una gran parte de la filosofía de Unix se basa en la idea de generar texto y aceptar texto como entrada. Es posible que desee considerar leer " El arte de la programación Unix ", que tiene una buena explicación sobre esto.

No me malinterpretes: entiendo tu punto y sé a qué estás tratando de llegar. Hay cosas como los intérpretes interactivos de Ruby y Python, que se pueden usar como Shell, pero no son tan amigables para las tareas básicas como lo es Bash. Intente cambiar de directorio, por ejemplo.

Además, usar objetos en un Shell no es todo eso. Si solo su Shell lo admite, en Unix, estaría perdido. Todas las herramientas estándar de manipulación de texto de Unix tendrían que ser modificadas, como grep, awk, sed, etc.

Creo que ha habido un intento de crear algo como esto hace unos años, pero no recuerdo el nombre y no he oído hablar de él en mucho tiempo. Probablemente no despegue.

24
wzzrd

En realidad, hay un proyecto llamado Pash que tiene como objetivo implementar PowerShell (además de Mono), pero parece haberse estancado.

10
Mark Probst

PowerShell se convirtió en código abierto en 2016. Desde entonces, se ha vuelto cada vez más multiplataforma. El código fuente está disponible en GitHub y también lo están los paquetes de instalación para varios sistemas similares a UNIX.

4
user147505

Hay un proyecto, cuyo objetivo comparte similitud con PowerShell: Hotwire . Combina sh regular con python scripting y entorno de ventana/gráfico. Podrías echarle un vistazo.

Se basa en canalización orientada a objetos que puede ampliar con sus propios objetos envolviendo programas existentes o usando Python bibliotecas.

4
elmarco

Creo que podría lograr la mayor parte de eso escribiendo un montón de scripts interpretados (o compilados), luego invocándolos dentro del Shell del intérprete, que devolverá o preservará sus objetos y así sucesivamente si lo desea.

Puede hacer esto en al menos Ruby, Perl, Python, Haskell (por ejemplo, GHCi), JavaScript (por ejemplo, node.js), Matlab y ciertamente otros lenguajes ...

1
Kevin Cantu

Otro pensamiento tres años después: es posible representar un objeto con un flujo de texto usando XML o JSON. Prefiero JSON (más simple) y, de hecho, hay proyectos que brindan soporte JSON a las utilidades clásicas * NIX. Por ejemplo: https://github.com/step-/JSON.awk

Un problema con el uso de un modelo de tipo de objeto para programas clásicos * NIX como AWK es que realmente no tienen soporte OO. Por ejemplo, mientras AWK tiene arreglos asociativos, los arreglos no son múltiples -dimensional (cada elemento en una matriz AWK tiene que ser un número o una cadena; una matriz no puede ser un objeto de matriz en AWK).

1
samiam