Curso emacs 8 (Acceder a la shell: eshell y ansi-term)

Para acceder a la shell del sistema podemos enviar la sesión emacs a segundo plano con C-z, lanzar los comandos que deseemos y volver a la sesión emacs con fg RET. Pero existen otras formas de invocar a la shell. La propia de emacs es M-x eshell que está enteramente escrita en elisp así como los comandos que ejecuta y que emulan los contenidos en el paquete coreutils disponible en cualquier distro. Eshell es  capaz de invocar casi cualquier función elisp cargada en Emacs pero ha de tenerse en cuenta que no es un emulador de terminal.

8-1_eshell

M-x eshell

Buscar un archivo a partir de una función elisp:

$ find-file archivo.txt

Permite crear alias de una forma muy simple. Por ejemplo para abrir dired:

$ alias d ‘dired $1’

Luego sólo tenemos que poner la letra “d” y pulsar intro para que nos abra nuestro $HOME. Para eliminar el alias:

$ alias d RET

Eshell funciona muy mal con comandos interactivos ya que son demasiado complejos para ser mostrados directamente y requieren un manejo especial. Un ejemplo podría ser el comando htop. Para que nos funcione correctamente con eshell, entre otras opciones, añadimos al archivo de configuración .emacs las lineas:

;;; Activar comandos visuales en eshell:
(defcustom eshell-visual-commands
“Comandos a los que activar visual-commands”
‘(“htop”))
(add-to-list ‘eshell-visual-commands “htop”)

Otras características de eshell es que podemos desplazar el cursor por la consola como si fuera un archivo de texto (C-p para subir, C-n para bajar y C-f y C-b desplazamiento lateral) y seleccionar, por ejemplo una MAC para copiarla (C-espacio C-e M-w) y pegarla en otro buffer (C-y), acceder al histórico de comandos con M-p y M-n y direccionar un comando a un buffer:

$ cat archivo.txt >> #.

8-2_eshell2

Para modificar el prompt y el mensaje de bienvenida de la eshell añadimos al archivo de configuración .emacs las lineas:

;;; Ajustar el prompt de eshell
;;; Para mostrar el usuario: (concat (getenv “USER”)
;;; Para mostrar el directorio actual: (concat (eshell/pwd)
(setq eshell-prompt-function
(lambda nil
(concat (eshell/pwd)
(if (= (user-uid) 0) ” # ” ” $ “))))
;;; Especificar ruta a la shell que vamos a usar:
(setq explicit-shell-file-name “/bin/bash”)
;;; mensaje de bienvenida al entrar a la eshell:
(setq eshell-banner-message “\n… entrando en emacs shell…\n\n”)

No olvidemos recargar la configuración.

8-3_prompt

Si no nos gusta el nombre (*eshell*) lo podemos modificar con:

M-x rename-buffer

Dejamos eshell y mencionamos otra terminal, más parecida a la clásica terminal de linux. Se trata de ansi-term, también escrita en emacs lips y que para estar plenamente funcional no precisa de más ajustes. Si lanzamos M-x ansi-term nos preguntará en el minibuffer por la shell a usar. Para que la abra directamente con bash y pulsando F5, podemos añadir las siguientes lineas al archivo de configuración .emacs:

;;; Entrar terminal ansi-term al pulsar F5 y con la shell bash:
(global-set-key (kbd “”) ‘(lambda ()(interactive)(ansi-term “/bin/bash”)))

Obviamente si nuestra shell favorita es zsh, ash, csh, ksh, tcsh o la que sea, la modificaremos en la linea.

8-4_htop

Sólo comentar que ansi-term tiene como prefijo C-x o sea que para renombrar el buffer:

C-x M-x rename-buffer

Lo dejamos aquí. En el próximo pedazo veremos el corrector ortográfico y wget.

Entregas anteriores:
Curso de emacs 7 http://www.lapipaplena.org/curso-emacs-7-alias-lanzadores-y-alguna-minucia/
Curso de emacs 6 http://www.lapipaplena.org/curso-de-emacs-6-gestor-de-extensiones-i-otros-ajustes/
Curso de emacs 5 http://www.lapipaplena.org/curso-emacs-5-sobre-urls-sudo-y-musica-con-emms
Curso de emacs 4 http://www.lapipaplena.org/curso-emacs-4-ayudas-y-colorines/
Curso de emacs 3 http://www.lapipaplena.org/curso-emacs-3-dired-el-navegador-de-archivos/
Curso de emacs 2 http://www.lapipaplena.org/curso-emacs-2-iniciando-emacs-y-moviendonos-con-soltura/
Curso de emacs 1 http://www.lapipaplena.org/curso-emacs-1-a-modo-de-pequena-introduccion/

Share

2 comments

  1. emacsboy dice:

    emacs_….—–^^^!!! el unico y verdadero OS
    interesante el truco para ver htop en eshell

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *