Administración de servidores GNU/Linux

Clase 7: Edición de archivos de texto en la terminal

Módulo 1 — Operación de Sistemas Operativos GNU/Linux

Temas de la clase 7

Exportar a PDF

Objetivos de la clase

Al finalizar esta clase vas a poder:

  • Abrir, buscar, modificar y guardar un archivo con Nano.
  • Reconocer los modos de Vi/Vim y volver al modo normal.
  • Desplazarte y realizar cambios básicos con Vi/Vim.
  • Guardar el trabajo o salir descartando los cambios.
  • Reconocer qué herramientas quedan disponibles en un entorno mínimo.
  • Crear y transformar texto sin abrir un editor.
En la clase anterior aprendimos a leer y buscar. Ahora vamos a modificar archivos sin perder de vista qué cambió.

Una herramienta para cada tarea

Esta tabla sirve para ubicar las herramientas que ya vimos y las que aparecen hoy.

NecesidadHerramienta
Recorrer un archivo sin modificarloless / more
Editar con atajos visiblesNano
Editar mediante modos y órdenesVi/Vim
Crear o agregar una línea conocidaecho con > o >>
Repetir una sustituciónsed
Comprobar qué cambiódiff -u

Editores de texto en Linux

Una herramienta básica para administrar el sistema

En Linux, casi todo se presenta como archivos

La configuración del sistema, los servicios, los usuarios y muchas aplicaciones se describen mediante archivos de texto.

También usamos texto para escribir scripts, documentar cambios y preparar datos que después leerá otro programa.


/etc/ssh/sshd_config
/etc/hosts
/etc/fstab
                    
Administrar Linux exige poder leer y editar texto desde la terminal.

Cuando no hay entorno gráfico

En un servidor solemos trabajar por SSH o desde una consola. En recuperación y en contenedores mínimos podemos tener todavía menos herramientas.

  • A veces está Nano.
  • Otras veces encontramos Vi o Vim.
  • En una imagen mínima puede no estar instalado ninguno.

command -v nano vi less more
                    

Antes de depender de una herramienta, conviene comprobar si realmente existe en ese entorno.

Leer o editar

TareaOpciones
Mostrar un archivo cortocat
Recorrer un archivo largoless o more
Modificar textoNano, Vi, Vim u otro editor
Escribir una línea conocidaecho y una redirección
Primero vemos qué necesitamos hacer. Después elegimos la herramienta disponible.

GNU nano

Atajos y mensajes a la vista

La pantalla de Nano


nano archivo.txt
                            
  • Arriba aparecen la versión y el nombre del archivo.
  • El asterisco indica que hay cambios sin guardar.
  • Abajo quedan visibles los atajos principales.
Nano editando archivo.txt en una terminal

Los atajos están a la vista

Atajos principales que Nano muestra al pie de la pantalla

^ representa Ctrl. Por ejemplo, ^O significa Ctrl+O.

La ayuda cambia según la versión y el estado del editor. Por eso conviene mirar siempre las dos líneas inferiores.

Moverse y buscar

AtajoAcción
FlechasMover el cursor
Ctrl+A / Ctrl+EComienzo / final de la línea
Ctrl+F o Ctrl+WBuscar texto
Alt+F o Alt+WBuscar la coincidencia siguiente
Ctrl+CMostrar la posición del cursor

Desde Nano 8, Ctrl+F inicia la búsqueda hacia adelante. Ctrl+W también funciona y aparece en muchas versiones anteriores.

Después del atajo, Nano pide el texto en la barra inferior.

Cortar, copiar y pegar

AtajoAcción
Alt+AIniciar o finalizar una selección
Alt+6Copiar la selección o la línea
Ctrl+KCortar la selección o la línea
Ctrl+UPegar
Alt+U / Alt+EDeshacer / rehacer

Si la terminal interpreta Alt de otra manera, la ayuda visible de Nano permite confirmar el atajo.

Guardar y salir

AtajoAcción
Ctrl+OGuardar. Nano pide el nombre del archivo.
Ctrl+XSalir
Ctrl+GAbrir la ayuda
Ctrl+CMostrar la posición del cursor

Si hay cambios pendientes, Nano pregunta si queremos guardarlos.

Conviene leer la pregunta antes de responder. El editor indica qué acción está por realizar.

Consultas

abrir → buscar → modificar → guardar → salir

De Vi a Vim

Una idea de los años setenta que todavía usamos

Vi nació como editor visual

Bill Joy desarrolló Vi en Berkeley durante la década de 1970. El programa surgió a partir de ex, un editor que trabajaba principalmente con líneas.

Las nuevas terminales permitían mover el cursor y actualizar distintas partes de la pantalla. De allí viene el nombre vi, abreviatura de visual.


:w
:q
                    

Las órdenes con : todavía conservan la relación con ex.

En nuestra VM, vi abre Vim


vi archivo.txt
                            

Vim significa Vi IMproved. Conserva el modelo y los comandos básicos de Vi, pero agrega funciones más modernas.

Esto puede cambiar en otro sistema. Incluso una imagen mínima como debian:latest puede no traer vi instalado.

Pantalla inicial de Vim al ejecutar vi en la máquina virtual

El modelo de Vi/Vim

La misma tecla puede hacer cosas distintas según el modo

Cuatro modos para empezar

ModoPara qué sirveCómo entrarCómo volver a Normal
NormalMoverse y ejecutar accionesAl abrir Vim o con EscYa estamos en Normal
InserciónEscribir textoi, a u oEsc
VisualSeleccionar textov o VEsc
Línea de órdenesGuardar, salir y otras órdenes:Enter ejecuta; Esc cancela
Vim interpreta las teclas según el modo activo. Si no sabés dónde estás, presioná Esc y volvés al modo normal.

El modo cambia lo que hace el teclado

En modo normal, escribir x borra un carácter. No escribe la letra «x».

Con i entramos en modo inserción. Vim suele mostrar -- INSERT -- en la parte inferior.

Con Esc dejamos de escribir y volvemos al modo normal.

Vim con un archivo abierto para practicar sus modos

Entrar en modo inserción

ComandoDónde comienza a escribir
iAntes del cursor
aDespués del cursor
oNueva línea debajo

Después de escribir, Esc regresa al modo normal.

“Insert mode” es un estado del editor. No es una orden que se escriba después de :.

Desplazamiento en modo normal

ComandoMovimiento
FlechasMover el cursor en las cuatro direcciones
h j k lIzquierda, abajo, arriba y derecha
0 / $Comienzo / final de la línea
gg / GPrimera / última línea

Las flechas también funcionan. Los movimientos propios de Vi se incorporan de a poco.

Borrar, copiar y pegar

ComandoAcción
xBorrar el carácter bajo el cursor
ddCortar la línea
yyCopiar la línea
pPegar después del cursor
uDeshacer

Vi llama yank a la copia. Por eso el comando comienza con y.

Selección visual

  1. Desde el modo normal, v selecciona caracteres y V selecciona líneas completas.
  2. Movemos el cursor para ampliar la selección.
  3. y copia, d corta y Esc cancela.
  4. De vuelta en modo normal, p pega.
El modo visual no es un editor separado: es una forma de seleccionar antes de ejecutar una acción.

Buscar dentro del archivo

ComandoAcción
/textoBuscar hacia adelante
nCoincidencia siguiente
NCoincidencia anterior

/puerto
                    

Buscar no modifica el contenido. Desde la coincidencia podemos movernos o iniciar una edición.

¿Cómo salir de vi?

Historieta en inglés con tres formas absurdas de salir de Vim

Esc vuelve al modo normal.

:q sale cuando no hay cambios pendientes.

:q! sale descartando los cambios pendientes.

Guardar y salir

OrdenAcción
:wGuardar
:qSalir si no hay cambios pendientes
:q!Salir y descartar los cambios
:wqGuardar y salir
:xGuardar si hubo cambios y salir

Las órdenes con : se escriben desde el modo normal y se confirman con Enter.

! fuerza una operación del editor. No concede permisos ni reemplaza a sudo.

Lo mínimo para no quedar atrapado


Esc       volver al modo normal
i         comenzar a escribir
/texto    buscar
:w        guardar
:q        salir
:q!       salir sin guardar
                    
Con esto alcanza para abrir un archivo, hacer un cambio sencillo y salir con control.

Consultas

modo normal → movimiento u operación → inserción → Esc → guardar o descartar

No siempre hace falta un editor

Leer, crear o transformar texto con lo que haya disponible

En un contenedor mínimo

En una imagen como debian:latest podemos encontrarnos sin Nano, sin Vi y hasta sin less.


command -v nano vi less more
more /etc/os-release
                    

more es más sencillo que less, pero alcanza para recorrer un archivo pantalla por pantalla. Para un archivo corto también podemos usar cat.

Además, la shell y sus redirecciones permiten crear o agregar contenido sin abrir un editor.

Crear contenido con >


echo 'puerto=8080' > servidor.conf
                    

La shell envía la salida de echo al archivo.

  • Si el archivo no existe, lo crea.
  • Si ya existe, reemplaza todo su contenido.

more servidor.conf
                    

Agregar contenido con >>


echo 'entorno=pruebas' >> servidor.conf
echo 'registro=activo' >> servidor.conf
                    
OperadorResultado
>Crea el archivo o reemplaza el contenido
>>Crea el archivo o agrega al final
Antes de usar >, revisá el nombre del archivo de destino.

Una sustitución con sed


sed 's/puerto=8080/puerto=9090/' servidor.conf
                    

s / texto anterior / texto nuevo /
                    

La orden muestra el resultado transformado en la terminal.

En este ejemplo, el archivo original no cambia.

Transformar y comparar


sed 's/puerto=8080/puerto=9090/' servidor.conf \
  > servidor.conf.nuevo
                    

diff -u servidor.conf servidor.conf.nuevo
                    

Si la comparación muestra exactamente lo esperado, podemos decidir si corresponde reemplazar la versión anterior.


mv servidor.conf.nuevo servidor.conf
                    

Entrada y salida con el mismo nombre


# Incorrecto: puede vaciar el archivo
sed 's/8080/9090/' servidor.conf > servidor.conf
                    

La shell prepara la redirección antes de iniciar sed. Por eso puede vaciar el archivo antes de que el programa alcance a leerlo.


sed 's/8080/9090/' servidor.conf > servidor.conf.nuevo
                    
En esta clase siempre usamos un nombre nuevo y comparamos el resultado.

Editar o transformar

SituaciónOpción
Solo necesitamos leer y no está lesscat o more
Hay que leer el contexto y hacer varios cambiosNano o Vi/Vim
Conocemos todo el contenidoRedirección con >
Solo hay que agregar una líneaRedirección con >>
El reemplazo debe repetirsesed
Queremos revisar antes de reemplazarArchivo nuevo y diff -u

Resumen de la clase

  • Muchos aspectos del sistema se administran mediante archivos de texto.
  • En una terminal remota o un contenedor mínimo, las herramientas disponibles pueden cambiar.
  • Nano muestra los atajos y permite escribir de forma directa.
  • Vi/Vim separa el desplazamiento, la edición y las órdenes mediante modos.
  • Esc vuelve al modo normal. :w, :q y :q! permiten guardar o salir.
  • cat y more permiten consultar archivos sin abrir un editor.
  • > reemplaza el contenido. >> agrega al final.
  • sed puede producir una versión transformada sin abrir un editor.
  • Una copia y diff -u permiten revisar el cambio antes de aceptarlo.

Actividad práctica

La práctica usa copias de /etc/services y /etc/hosts dentro de ~/laboratorio-clase7.

Editores de texto

Shell y herramientas de texto

Volver al índice del curso