que historial guardar ejecutar definir comandos comando bash_history activar shell elixir

shell - ejecutar - guardar historial de comandos linux



¿Cómo guardar/registrar la salida del shell iex para obtener un historial de comandos persistente? (2)

En Erlang / OTP-20 y superior

Desde Erlang / OTP-20rc2, el historial de Shell se admite de forma inmediata (aunque inicialmente está deshabilitado de forma predeterminada) a través de un puerto de esta biblioteca a la base de códigos Erlang / OTP. Habilite el shell en estas versiones configurando la variable de entorno del kernel shell_history en habilitado con la export ERL_AFLAGS="-kernel shell_history enabled" agregado a sus variables de entorno (consulte Opciones de configuración para ver más opciones).

- https://github.com/ferd/erlang-history

Pre Erlang / OTP-20:

He encontrado 2 maneras de hacerlo.

1. Historia de Erlang

erlang-history (eh) es un pequeño par de archivos que se pueden usar para parchear un sistema Erlang-OTP para agregar soporte para el historial en el shell de Erlang.

El historial admitido es el que está disponible a través de las flechas arriba / abajo en el teclado.

Instalación en Ubuntu Linux:

sudo su cd /usr/local/src git clone https://github.com/ferd/erlang-history.git cd erlang-history make install

Ahora cada REPL basado en Erlang ahora iniciado (y eso es IEx) debería usar erlang-history .

2. rlwrap

Como alternativa, puede probar un reforzador / reforzador REPL más genérico rlwrap que es un "contenedor de línea de lectura":

... una pequeña utilidad que utiliza la biblioteca readline de GNU para permitir la edición de entrada de teclado para cualquier comando.

rlwrap -a -A iex -S mix

(En caso de que estés usando Ubuntu Linux: sudo apt-get install rlwrap )

Le permite agregar muchas más funciones al REPL como, por ejemplo, el filtro rlwrap -a -z pipeto iex que le permite canalizar elementos a comandos de shell - muy útil para leer documentación, es decir: iex> h Stream | less iex> h Stream | less ( more )

Conozca las desventajas:

  • Rompe la finalización del código (es decir, la finalización de la pestaña) en IEx

¿Por qué esta característica tan útil - el historial de comandos - no está incluido en Elixir / Erlang?

Cuando use asdf vea this .

Acabo de empezar a trabajar con Elixir y he estado usando bastante el shell iex . ¿Es posible para mí guardar / registrar una "sesión" en un archivo?

Gracias.


No actualmente. Sin embargo, probablemente podrías escribir un pequeño plugin de iex para hacer esto por ti. Por ejemplo, tengo el siguiente archivo en ~/.iex.exs :

# .iex.exs defmodule IExHelpers do def reload! do Mix.Task.reenable "compile.elixir" Mix.Task.run "compile.elixir" end end iex = IExHelpers # $ iex -S mix # iex(2)> iex.reload! # :noop

Esto vuelve a compilar el proyecto actual y lo vuelve a cargar mientras aún se encuentra dentro de un shell iex -S mix con la iex -S mix . Probablemente podrías escribir algo para guardar el historial del shell actual en un archivo y leerlo al inicio, pero no estoy seguro de por dónde empezarías con eso.