Notxor tiene un blog

Defenestrando la vida


Edición de archivos remotos con Emacs

El paquete TRAMP1 viene instalado por defecto en Emacs, no hay que instalar nada y es el paquete que nos permite editar ficheros que no se encuentran en nuestra máquina.

El caso es que no lo había utilizado, pero estos días he tenido algún problemilla con la configuración de mi nube que me han obligado a tener que trastear por espacios «lejanos», o remotos, escribiendo en ficheros situados en una máquina que no es la mía, aunque tenga acceso mediante ssh. Pensé: «Bueno, es el momento de usar TRAMP y escribir un artículo largo y sesudo de cómo funciona».

¡Qué triste! Pensaba que sería algo complicado, complejo y lleno de detalles que tener en mente para abrir un túnel ssh y modificar el fichero que queremos. Nada más lejos de la realidad: ¿Sabes cómo abrir un fichero con Emacs? Si la respuesta es «sí» ya sabes abrir un fichero remoto. Sólo necesitas comenzar el nombre del fichero con una pequeña información. Por poner un ejemplo vamos a ver los siguientes datos para conectar por ssh:

Para abrir un fichero en remoto lo único que tenemos que hacer es utilizar la famosa combinación C-x C-f. A continuación pide el nombre del fichero que queremos abrir, debemos teclear el siguiente nombre:

/ssh:nombre@misitio.com#12345:~nombre/fichero.txt

Emacs nos pedirá el password y después de teclearlo establecerá la conexión abriendo el fichero solicitado. Ya está, se ha terminado el artículo...

Algunos datos más para los curiosos

De forma general, podemos decir que la URL consta de los siguientes elementos:

/método:usuario@servidor:path/al/fichero

Además, si tenemos algún problema para recordar el nombre del fichero exacto, podemos utilizar completion pulsando <TAB>.

Lo que me recuerda que ya había utilizado TRAMP sin saberlo, para editar algún fichero local. Y algunos os preguntaréis: ¿Utilizar un chismático de edición remota para edición local? Pues sí. Recuerdo haber modificado el fichero /etc/hosts desde una sesión abierta de Emacs tecleando:

C-x C-f /sudo::/etc/hosts

Emacs me pidió el password de root y lo edité sin más complicaciones.

¿Cuáles protocolos tenemos disponibles?

He de confesar que para rellenar un poco un artículo que me estaba quedando un tanto desangelado, he mirado qué tipo de protocolos de comunicación o método de conexión se pueden utilizar:

  • rsh, ssh, plink (si estás utilizando PuTTY en windows), plinkx, telnet
  • su, sudo (que ya hemos visto), sg (switch group), doas (método utilizado por OpenBSD como sudo), krlogin, ksu
  • smbclient con una URL tal que /smb:usuario%dominio@servidor:/path/al/fichero.
  • rcp, scp, rsync, scpx
  • pscp, psftp, sftp, afp, fcp, nc, ftp
  • dav y davs por ejemplo para acceder a nuestra nube particular.
  • gdrive para acceder a Google Drive.
  • adb para acceder a un dispositivo con android.

Es decir, hay todo un abanico de conexiones que nos puede ser útiles a la hora de conectarnos con nuestros ficheros de texto.

Conclusiones

Este es otro paquete de los que ya viene con Emacs que me había pasado desapercibido y que después de haberlo probado creo que se convertirá en un habitual de mi caja de herramientas.

De momento sólo lo he utilizado esta vez y con el protocolo ssh, pero no descarto conectarme a otros ficheros mediante otros protocolos.

Nota al pie de página:

1

Transparent Remote (file) Access, Multiple Protocol


Comentarios

Debido a algunos ataques mailintencionados a través de la herramienta de comentarios, he decidido no proporcionar dicha opción en el Blog. Si alguien quiere comentar algo, me puede encontrar en Mastodon y en Diaspora con el nick de Notxor.

También se ha abierto un grupo en Telegram, para usuarios de esa red.

Disculpen las molestias.