Dune: una shell realmente diferente

De vez en cuando me gusta indagar en los proyectos ubicados en Github, y aquí es donde he encontrado Dune. Y no, no tiene relación con la saga de libros de Frank Herbert, sino más bien a ese sitio donde vamos en verano a tostarnos al sol. Ya que el autor se refiere a este como a una «shell junto a la playa«

El proyecto tiene como intención crear una shell más cómoda que bash, ya que «carece de una especie de toque personal y también le falta una personalización rápida y fácil«. Para ello el autor se ha inspirado en Atom, con un sistema similar en lo que respecta a los widgets. Una de sus ventajas es que es muy personalizable y permite crear «su propio shell único«

Dune intenta ser un lenguaje para scripts, incluso ofrece algunas características de metaprogramación de nicho, como citas (tomadas de Lisp), sobrecarga de operadores e incluso macros.

Hay que tener en cuenta que Dune ha sido creado por un estudiante de segundo año, con la intención de que «fuera de divertido de usar», tal y como indica el autor: «¡Es como un pequeño sistema operativo en sí mismo

Empezar a trabajar con la shell Dune

Para realizar la instalación hay que descargar previamente Rust. Si ya lo tenemos instalado, probablemente lo necesitamos actualizar. Dune usa muchas funciones recientes de Rust.

En mi caso voy a utilizar un VPS que tengo que pruebas en mi proveedor de confianza Clouding.io, con la distribución Ubuntu 18.04.

Podemos realizar la instalación de Dune de su versión de desarrollo o la versión estable, para la versión de desarrollo lo podemos hacer de dos maneras, utilizando el propio comando «cargo» de Rust:

cargo install --git https://github.com/adam-mcdaniel/dune

O bien clonar el proyecto de Github y realizar la instalación sobre este:

git clone https://github.com/adam-mcdaniel/dune
cd dune
cargo install -f --path .

En mi caso me voy a decantar por la versión estable:

cargo install -f dune

Con un resultado en mi caso:

Instalación de versión estable mediante cargo

Una vez hecho esto podemos lanzar la aplicación escribiendo «dunesh«

dunesh

Y a continuación se nos dará la bienvenida y se nos preguntará si es la primera vez que utilizamos Dune:

Mensaje de bienvenida tras lanzar Dune

A partir de aquí se nos mostrará información (en inglés) de las ventajas de esta shell y un poco de historia sobre su autor e iniciaremos un tutorial.

Aspecto tutorial del tutorial

Una vez finalizado el tutorial, el aspecto del entorno es el siguiente:

Empezamos a trabajar

Un fichero importante que tenemos conocer es «.dune-prelude» Se trata de un archivo de inicio, almacenado en el dirctorio de nuestro usuario. Si no proporcionamos nuestro propio fichero de «preludio», se ejectuará el que viene por defecto. Este fichero es altamente customizable. Para ver un ejemplo, podemos ver el creado por el propio autor.

Además de las características antes descritas, Dune incorpora una biblioteca estándar de funciones a las que se accede escribiendo «math«, que muestra valores útiles y las funciones que se pueden utilizar. Si no utilizamos ninguna de esas funciones, la shell funcionará como Bash, solo con un esquema de colores y un prompt ligeramente diferente., además de los widgets divertidos que lo acompañan.

Uso de alias

Tal y como se observa en la imagen anterior, en lo que respecta al uso de Alias, Dune utiliza un tipo de símbolo (tipo de nombres de variables y rutas) para implementar programas de llamada. Siempre que una expresión de tipo símbolo se utiliza como un comando, se invoca a un programa. De esta manera podemos definir alias asignando una variable al nombre de un programa.

Por último, que no menos importante podemos utilizar macros, pipes y redirecciones.  Todo ello lo podemos consultar desde su página en Github.

Espero que esta entrada os haya parecido de interés. Nos vamos leyendo.