Edición de archivos remotos con Emacs
El paquete TRAMP
1 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
:
- Usuario:
nombre
- Servidor:
misitio.com
- Puerto:
12345
- Password: abcABC_123456
- Fichero:
~/fichero.txt
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 porOpenBSD
comosudo
),krlogin
,ksu
smbclient
con unaURL
tal que/smb:usuario%dominio@servidor:/path/al/fichero
.rcp
,scp
,rsync
,scpx
pscp
,psftp
,sftp
,afp
,fcp
,nc
,ftp
dav
ydavs
por ejemplo para acceder a nuestra nube particular.gdrive
para acceder a Google Drive.adb
para acceder a un dispositivo conandroid
.
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.
Footnotes:
Transparent Remote (file) Access, Multiple Protocol
Comentarios