Mostrando entradas con la etiqueta Comandos. Mostrar todas las entradas
Mostrando entradas con la etiqueta Comandos. Mostrar todas las entradas

Comando touch

touch

El comando touch es una utilidad estándar en sistemas operativos Unix y Linux que se emplea principalmente para crear archivos vacíos nuevos o para actualizar las marcas de tiempo (fecha y hora de acceso y modificación) de archivos y directorios ya existentes sin alterar su contenido.

Categoría Sistema y gestión de archivos
Disponible en Linux, macOS y sistemas UNIX-like
Equivalente en Windows type nul > [archivo] (en CMD) o New-Item [archivo] (en PowerShell)
Sustituye a Métodos manuales o editores de texto para la generación rápida de ficheros vacíos de control o scripts.
¿Requiere permisos de administrador? No, por lo general solo se requieren permisos de escritura en el directorio donde se desea crear o modificar el archivo.

¿Qué significa su nombre?

El nombre TOUCH proviene del verbo en inglés "tocar". Su denominación hace referencia literal a la acción de "tocar" un archivo para alterar sus metadatos temporales de registro.

Con el paso del tiempo, su uso se popularizó masivamente entre los administradores de sistemas y desarrolladores como el atajo más rápido y limpio para inicializar ficheros en blanco.

¿Para qué sirve?

El comando touch sirve principalmente para dos propósitos fundamentales: el primero es la creación instantánea de uno o varios archivos de tamaño cero bytes; el segundo es modificar las marcas de tiempo de un fichero existente (forzando a que el sistema operativo registre la hora actual como la última vez que fue accedido o modificado).

Es una herramienta indispensable en el flujo de trabajo diario en la terminal, especialmente al programar scripts de automatización, preparar estructuras de proyectos vacías o verificar dependencias de compilación basadas en marcas temporales (como en archivos Makefile).

Sintaxis

touch [opciones] [nombre_archivo]

Las opciones o modificadores más habituales son:

Opción Descripción
-c o --no-create Evita que se cree un archivo nuevo si este no existe previamente.
-a Actualiza únicamente la marca de tiempo de acceso (access time) del archivo.
-m Actualiza únicamente la marca de tiempo de modificación (modification time) del archivo.
-t [YYYYMMDDhhmm] Permite establecer una fecha y hora específica en lugar de utilizar la hora actual del sistema.

Comandos más utilizados

Comando Descripción
touch archivo.txt Crea un archivo vacío llamado "archivo.txt" (o actualiza su fecha si ya existe).
touch a.txt b.txt c.txt Crea múltiples archivos vacíos de forma simultánea en una sola instrucción.
touch -c archivo.txt Actualiza la hora del archivo solo si este ya existe, sin crearlo por error.

Equivalencia con otros sistemas

Acción Linux (Bash) Windows (CMD) Windows (PowerShell)
Crear archivo vacío touch archivo.txt type nul > archivo.txt New-Item archivo.txt
Crear múltiples archivos touch f1.txt f2.txt (Varios comandos independientes) "f1.txt", "f2.txt" | % { New-Item $_ }

Ejemplos

Crear un único archivo vacío

touch apuntes.txt

Crear varios archivos al mismo tiempo

touch index.html style.css script.js

Actualizar la fecha y hora de un archivo existente

touch existente.txt

Ejemplo de salida

santi@SantiPC ~/Escritorio> touch nuevo_documento.txt
santi@SantiPC ~/Escritorio> ls -l nuevo_documento.txt
-rw-r--r-- 1 santi santi 0 ago  6 12:45 nuevo_documento.txt

¿Cómo interpretar la salida?

    Al ejecutar touch sobre un archivo que no existe, la terminal no devuelve ningún mensaje de texto explícito (lo que indica éxito silencioso). Al listar el archivo con ls -l, se comprueba que se ha generado con un tamaño exacto de 0 bytes y con la fecha y hora actuales del sistema.

Errores habituales

  • Intentar crear un archivo en una ruta o directorio donde no se tienen permisos de escritura, lo que genera un error de acceso denegado (Permission denied).
  • Confundir la creación de carpetas con la creación de ficheros, intentando usar touch para crear directorios (para lo cual se debe emplear el comando mkdir).

Conceptos relacionados

  • Inodo
  • Metadatos de archivos
  • Redirección de salida en Linux
  • Marcas de tiempo (Timestamps)

Comandos relacionados

  • mkdir
  • rm
  • cat
  • ls
  • stat

Curiosidades

Aunque hoy en día lo asociamos automáticamente con la creación rápida de archivos vacíos, su propósito original en los sistemas Unix históricos era puramente el de gestión de tiempos. Los programadores descubrieron rápidamente que invocarlo sobre un fichero inexistente forzaba al sistema operativo a crearlo debido a las reglas internas de apertura de descriptores de archivos, convirtiéndolo en un atajo utilísimo.

Prácticas propuestas

  1. Abre tu terminal y crea un archivo de texto vacío llamado prueba.txt utilizando el comando touch. Verifica su tamaño con ls -l.
  2. Comprueba qué ocurre al ejecutar ls -l antes y después de aplicar touch sobre un archivo ya existente respecto a la columna de la hora de modificación.
  3. Intenta crear múltiples archivos de diferentes extensiones (por ejemplo, test1.py, test2.sh y test3.html) ejecutando una única línea con touch.
  4. Utiliza el comando stat prueba.txt para observar detalladamente cómo han cambiado las marcas de tiempo de acceso (Access) y modificación (Modify) tras usar el comando.
  5. Compara la creación de ficheros mediante touch frente a abrirlos y guardarlos desde un editor de texto plano como nano.

Consejo: Utiliza touch siempre que necesites dejar preparada la estructura de ficheros de un proyecto de programación antes de empezar a escribir código en ellos.

Preguntas de reflexión:

  1. ¿Por qué el comando touch crea un archivo con un tamaño de 0 bytes por defecto?
  2. ¿Qué diferencia hay entre la marca de tiempo de acceso (Access) y la de modificación (Modify) al usar touch?
  3. ¿Qué utilidad tiene la opción -c (--no-create) en entornos de scripts o programación?
  4. ¿Por qué no se puede utilizar touch para crear una carpeta o directorio nuevo?
  5. ¿Qué información adicional muestra el comando stat en comparación con un simple ls -l?
  6. ¿Cómo se comporta la gestión de creación de archivos vacíos en Windows en comparación con Linux?
Haz clic aquí para ver las soluciones y explicaciones

1. ¿Por qué el comando touch crea un archivo con un tamaño de 0 bytes por defecto?

Porque la función principal del comando a nivel de sistema es inicializar un inodo vacío o actualizar marcas temporales, no escribir contenido dentro de él. El contenido se añade posteriormente mediante editores de texto o mediante técnicas de redirección de flujo (como > o >>).


2. ¿Qué diferencia hay entre la marca de tiempo de acceso (Access) y la de modificación (Modify) al usar touch?

La marca de acceso registra la última vez que el contenido del archivo fue leído o consultado, mientras que la marca de modificación registra cuándo se alteraron por última vez los datos del fichero. Por defecto, touch actualiza ambas marcas simultáneamente a la hora actual del sistema.


3. ¿Qué utilidad tiene la opción -c (--no-create) en entornos de scripts o programación?

Su utilidad principal es evitar la creación accidental de archivos nuevos si por algún error tipográfico en la ruta o en el nombre de la variable el archivo no se encontraba previamente en el disco. Garantiza que solo se actúe sobre ficheros que ya existen de antemano.


4. ¿Por qué no se puede utilizar touch para crear una carpeta o directorio nuevo?

Porque los directorios en los sistemas de archivos Linux poseen una estructura interna de metadatos de almacenamiento de ficheros completamente distinta a la de los archivos ordinarios. Para la creación de directorios vacíos el sistema cuenta con una herramienta especializada específica llamada mkdir.


5. ¿Qué información adicional muestra el comando stat en comparación con un simple ls -l?

El comando stat profundiza directamente en los metadatos del inodo del archivo, mostrando de forma desglosada y precisa los cambios exactos en los tiempos de acceso (Access), modificación (Modify) y cambio de estado (Change), además del número de inodo exacto, los bloques asignados y los permisos detallados en octal.


6. ¿Cómo se comporta la gestión de creación de archivos vacíos en Windows en comparación con Linux?

Mientras que en Linux disponemos de una herramienta limpia, rápida y nativa como touch integrada por defecto, en Windows (CMD) es necesario recurrir a trucos de redirección de flujo como type nul > archivo.txt o utilizar cmdlets específicos orientados a objetos como New-Item si se emplea la consola moderna de PowerShell.

Copiar y mover archivos desde el terminal de Linux

Objetivo:

Aprender a gestionar archivos y directorios desde el terminal de Linux utilizando comandos fundamentales como mkdir, cp, mv, rm y touch.

Escenario:

  • Herramientas: Terminal de Linux.
  • Conceptos clave: Estructura de directorios, rutas relativas y absolutas, distinción de mayúsculas y minúsculas, y manejo de espacios en nombres mediante comillas.

Instrucciones:

Fase 1: Creación de directorios (mkdir):

  • Ubicarse en el directorio de trabajo deseado (por ejemplo, el Escritorio).
  • Crear un directorio simple ejecutando:
mkdir carpetita
  • Crear múltiples directorios anidados en una sola instrucción utilizando la opción -p:
mkdir -p carpeta/otra_carpeta/musica/carpeta_prueba

Fase 2: Creación de archivos y copias (touch y cp):

  • Crear un archivo de texto vacío mediante el comando touch:
touch documento.txt
  • Copiar un archivo a otra ubicación usando el comando cp especificando el origen y el destino:
cp prueba fondos/

Fase 3: Mover y renombrar archivos (mv):

  • Mover un archivo entre directorios mediante el comando mv:
mv prueba fondos/
  • Utilizar el comando mv para renombrar un archivo en el mismo directorio:
mv prueba nuevo_nombre

Fase 4: Eliminación segura de archivos y directorios (rm):

  • Eliminar un archivo individual:
rm prueba
  • Eliminar directorios o archivos protegidos utilizando el modo recursivo y forzado:
rm -r carpetita

Verificación:

  • Comprobar el contenido de los directorios mediante el comando ls para confirmar que las operaciones de copia, movimiento, creación y borrado se han realizado correctamente.
  • Verificar el uso de la tecla tabulador para el autocompletado de nombres largos o con espacios.

Preguntas de reflexión:

  1. ¿Qué diferencia existe entre utilizar el comando cp y el comando mv?
  2. ¿Por qué es obligatorio utilizar comillas al trabajar con nombres de carpetas o archivos que contienen espacios en blanco?
  3. ¿Para qué sirve exactamente la opción -p al combinarla con el comando mkdir?
  4. ¿Qué función dual cumple el comando mv en el terminal de Linux?
  5. ¿Qué precauciones se deben tener al utilizar el comando rm -r en el terminal?
Haz clic aquí para ver las soluciones y explicaciones

1. ¿Qué diferencia existe entre utilizar el comando cp y el comando mv?

El comando cp (copy) duplica el archivo o directorio manteniendo el original en su ubicación de origen, mientras que el comando mv (move) traslada el archivo de una ubicación a otra, eliminándolo de su ubicación inicial.


2. ¿Por qué es obligatorio utilizar comillas al trabajar con nombres de carpetas o archivos que contienen espacios en blanco?

El terminal interpreta los espacios en blanco como separadores de argumentos o comandos. Si se introduce un nombre con espacios sin comillas, el sistema lo interpretará como múltiples elementos independientes y generará un error o comportamientos no deseados.


3. ¿Para qué sirve exactamente la opción -p al combinarla con el comando mkdir?

Permite crear una estructura completa de directorios anidados (directorios dentro de directorios) de una sola vez, creando automáticamente los directorios intermedios que no existan previamente.


4. ¿Qué función dual cumple el comando mv en el terminal de Linux?

Además de su función principal de mover archivos o directorios de una ruta a otra, el comando mv se utiliza también para renombrar archivos cuando se indica un nuevo nombre dentro de la misma ruta.


5. ¿Qué precauciones se deben tener al utilizar el comando rm -r en el terminal?

Es un comando muy potente y agresivo que elimina de forma recursiva archivos y directorios sin solicitar confirmación detallada por defecto, por lo que un uso incorrecto puede provocar la pérdida irreversible de datos importantes del sistema.





Ficha de Laboratorio: Gestión de Archivos y Directorios en Linux

Instrucciones de entrega:

  1. Rellena los campos de texto y responde a las cuestiones directamente en este formulario desde tu navegador.
  2. Una vez completada la ficha, pulsa el botón de imprimir que aparece al final.
  3. En el cuadro de diálogo de impresión, selecciona la opción "Guardar como PDF" o "Imprimir a PDF".
  4. Entrega el archivo PDF resultante a través de la plataforma del aula virtual.

Alumno/a:      Fecha:      Grupo / Clase:


1. Identificación del Entorno

Indica el directorio de trabajo actual y el nombre de la prueba realizada:

2. Cuestionario de Análisis de Comandos

  1. ¿Qué instrucción exacta utilizarías para crear una jerarquía de carpetas anidadas llamada carpeta/otra_carpeta/musica/carpeta_prueba en un solo comando?
  2. Explica la doble funcionalidad que ofrece el comando mv en el terminal de Linux según se emplee con rutas distintas o dentro del mismo directorio.
  3. ¿Por qué es necesario el uso de comillas dobles al escribir nombres con espacios y qué utilidad aporta la tecla tabulador durante la escritura de comandos?>

3. Verificación de Práctica

Indica el comando completo que emplearías para eliminar de forma recursiva y segura un directorio que contiene elementos:

Navegación Básica en el Terminal de Linux

Objetivo:

Familiarizarse con el intérprete de comandos de Linux, aprendiendo a identificar la ruta actual de trabajo, navegar entre directorios mediante rutas relativas y absolutas, utilizar modificiadores (opciones) para personalizr los resultados que nos devuelve la terminal y listar contenidos aplicando diferentes parámetros de formato y tamaño.

Escenario:

  • Herramientas: Terminal de Linux.
  • Conceptos clave: Estructura jerárquica de directorios, rutas relativas frente a absolutas, distinción estricta de mayúsculas/minúsculas y manejo de caracteres especiales como espacios en blanco.
  • Comandos principales: pwd (comprobar ruta actual), cd (cambiar de directorio) y ls (listar archivos y carpetas) con opciones -l (ver detalles), -h (tamaño legible para humanos), -S (ordenar de mayor a menor) y -r (invertir el orden).

Instrucciones:

  1. Abre la terminal: Inicia tu sesión en Linux y localiza la ventana de la terminal (por defecto suele abrirse en tu directorio personal o home).
  2. Verifica tu ubicación actual: Ejecuta el comando pwd para comprobar exactamente en qué ruta te encuentras dentro del sistema.
  3. Explora el contenido básico: Escribe el comando ls para listar todos los archivos y carpetas visibles de tu directorio actual.
  4. Navega hacia el escritorio: Utiliza el comando cd Escritorio (respetando mayúsculas) para cambiar de directorio y vuelve a comprobar tu ruta con pwd.
  5. Prueba los retrocesos: Ejecuta cd .. para retroceder un nivel hacia atrás y prueba el comando cd a secas para regresar directamente a tu directorio principal.
  6. Aplica opciones avanzadas de listado: Prueba a combinar el comando de listado con modificadores, escribiendo ls -l para ver detalles de permisos y fechas, y ls -lh para hacer el tamaño de los archivos legible para humanos.
  7. Ordena por tamaño: Escribe el comando ls -lhS dentro de un directorio con varios archivos para listar los elementos ordenados automáticamente de mayor a menor tamaño.
  8. Invertir el orden: Añade la opción -r para invertir el orden. Escribe el comando ls -lhSr dentro de un directorio con varios archivos para listar los elementos ordenados automáticamente en orden inverso.

Ejemplo de salida del comando ls -lhS en la terminal:

total 248540
-rw-r--r--  1 santi santi  154 MB ago  5 18:30 video_curso.mp4
drwxr-xr-x  2 santi santi  4.0 KB ago  5 12:00 Documentos
-rw-r--r--  1 santi santi  245 KB ago  5 10:15 apuntes.pdf
-rw-r--r--  1 santi santi  1.2 KB ago  5 09:00 notas.txt

Significado de cada columna en la salida:

  • Primera columna (Tipo y Permisos - ej. -rw-r--r--): Indica si el elemento es un archivo (-) o un directorio (d), seguido de los permisos de lectura(r), escritura (w) y ejecución (x) para el propietario, el grupo y los demás usuarios.
  • Segunda columna (Enlaces - ej. 1 o 2): Representa la cantidad de enlaces duros que apuntan a ese archivo o directorio (en carpetas, suele contar cuántos subdirectorios internos contiene).
  • Tercera y cuarta columna (Propietario y Grupo - ej. santi santi): Usuario dueño del archivo y grupo de pertenencia.
  • Quinta columna (Tamaño - ej. 154 MB): Tamaño del archivo o carpeta adaptado de forma legible gracias a -h y ordenado de mayor a menor por la opción S.
  • Sexta columna (Fecha y hora - ej. ago 5 18:30): Muestra el mes,el día y la hora de la última vez que el archivo fue modificado.
  • Séptima columna (Nombre - ej. video_curso.mp4): Nombre del archivo o directorio.

Verificación:

  • Comprobar que se puede ir a la carpeta home por varios métodos:
    • con el comando cd
    • con el comando ~ (virgulilla: AltGr + 4)
    • con el comando cd ~ ("cd virgulilla")
  • El directorio actual es ./
  • El directorio padre es ../
  • Volver al directorio anterior con cd - ("cd menos")

Preguntas de reflexión:

  1. ¿Qué diferencia práctica existe entre utilizar el comando cd .. frente a escribir únicamente cd en la terminal?
  2. ¿Para qué sirve exactamente el uso de un guion (-) al combinarlo con comandos como ls y qué función cumple añadir las letras l y h?
  3. ¿Por qué es tan importante respetar estrictamente las mayúsculas y minúsculas al escribir nombres de directorios en Linux (como por ejemplo Escritorio)?
Haz clic aquí para ver las respuestas y explicaciones

1. ¿Qué diferencia práctica existe entre utilizar el comando cd .. frente a escribir únicamente cd en la terminal?

El comando cd .. desplaza al usuario exactamente un nivel hacia atrás en la jerarquía de directorios (al directorio padre). En cambio, introducir cd a secas actúa como un atajo absoluto que redirige de inmediato al usuario al directorio principal o de inicio (home) del usuario actual, independientemente de la profundidad en la que se encuentre.


2. ¿Para qué sirve exactamente el uso de un guion (-) al combinarlo con comandos como ls y qué función cumple añadir las letras l y h?

El guion se utiliza para introducir opciones o modificadores que alteran el comportamiento predeterminado de un comando. La opción -l (long) solicita un formato de lista detallada que incluye permisos, número de enlaces, usuario propietario, tamaño y fecha de modificación, mientras que la opción -h (human-readable) convierte los valores numéricos de bytes a unidades comprensibles para las personas (como KB, MB o GB).


3. ¿Por qué es tan importante respetar estrictamente las mayúsculas y minúsculas al escribir nombres de directorios en Linux (como por ejemplo Escritorio)?

A diferencia de otros sistemas operativos que no distinguen entre mayúsculas y minúsculas en sus rutas de usuario, los sistemas basados en Linux son case-sensitive (sensibles a mayúsculas). Esto significa que el sistema interpreta Escritorio, escritorio y ESCRITORIO como tres carpetas o ubicaciones completamente diferentes, por lo que un error de tecleo impedirá que el comando se ejecute con éxito.


Ficha de Laboratorio: Navegación Básica en el Terminal de Linux

Instrucciones de entrega:

  1. Rellena los campos de texto y responde a las cuestiones directamente en este formulario desde tu navegador.
  2. Una vez completada la ficha, pulsa el botón de imprimir que aparece al final.
  3. En el cuadro de diálogo de impresión, selecciona la opción "Guardar como PDF" o "Imprimir a PDF".
  4. Entrega el archivo PDF resultante a través de la plataforma del aula virtual.

Alumno/a:      Fecha:      Grupo / Clase:


1. Identificación del Entorno

Indica la distribución de Linux utilizada y el directorio de inicio (home) asignado a tu usuario:

2. Cuestionario de Análisis del Terminal

  1. ¿Qué diferencia práctica existe entre utilizar el comando cd .. frente a escribir únicamente cd en la terminal?
  2. Sitúate en la carpeta home y ejecuta el comando ls. Pega aquí la salida obtenida en la terminal:
  3. ¿Para qué sirve el uso de un guion (-) al combinarlo con comandos como ls?
  4. ¿Para qué sirve la opción l?
  5. ¿Para qué sirve la opción h?
  6. ¿Para qué sirve la opción S?
  7. ¿Por qué es tan importante respetar estrictamente las mayúsculas y minúsculas al escribir nombres de directorios en Linux (como por ejemplo Escritorio)?
  8. Práctica de Listados Avanzados

    Escribe el comando exacto que utilizarías en la terminal para listar los archivos detallados, con tamaños legibles para humanos y ordenados de mayor a menor tamaño:

  9. Pega aquí la salida obtenida después de ejecutar el comando:

Comando awk

awk

El comando awk es un potente lenguaje de programación orientado a la extracción, procesamiento, filtrado y estructuración de textos basados en flujos o ficheros delimitados por campos o columnas, siendo una de las herramientas de análisis más versátiles en entornos Unix y Linux.

Categoría Procesamiento de texto y análisis de datos en la terminal
Disponible en Linux, macOS y sistemas operativos tipo Unix
Equivalente en Windows Scripts avanzados en PowerShell (utilizando métodos como Split o selección de propiedades), o utilidades de análisis de texto de terceros.
Sustituye a La escritura de scripts complejos en lenguajes pesados para tareas sencillas de extracción tabular de columnas en ficheros de registro.
¿Requiere permisos de administrador? No, salvo que se ejecute para procesar archivos de registro o configuración protegidos ubicados en directorios del sistema (como /var/log o /etc).

¿Qué significa su nombre?

AWK es un acrónimo formado por las iniciales de los apellidos de sus tres creadores en los laboratorios Bell en 1977: Aho, Weinberger y Kernighan.

Representa tanto el nombre de la utilidad de procesamiento como el propio lenguaje estructurado que utiliza para analizar patrones en flujos de datos estructurados.

¿Para qué sirve?

El comando awk sirve para procesar archivos de texto estructurados dividiéndolos automáticamente en registros (habitualmente líneas) y campos (columnas separadas por espacios, tabuladores u otros delimitadores). Permite realizar operaciones aritméticas, filtrados condicionales avanzados y transformaciones complejas de columnas al vuelo sin necesidad de programar un script largo.

Es la herramienta definitiva para extraer datos tabulares específicos de salidas de comandos del sistema (como df, ps o free), generando informes limpios y personalizados de forma rápida y eficiente.

Sintaxis

awk 'condición { acción }' [fichero...]

Las variables internas y patrones más habituales son:

Variable o Patrón Descripción
$0 Representa la línea completa que se está procesando en el flujo actual.
$1, $2, $3... Representan la primera, segunda, tercera y sucesivas columnas (campos) de la línea actual.
NR (Number of Record) Variable interna que almacena el número de registro o línea actual que se está analizando.
NF (Number of Field) Variable interna que indica el número total de columnas o campos detectados en la línea actual.
-F [delimitador] Opción de sintaxis externa para definir un separador de campos personalizado (por ejemplo, -F":" para ficheros como /etc/passwd).

Comandos más utilizados

Comando Descripción
awk '{print $1}' fichero.txt Imprime únicamente la primera columna de cada línea del archivo.
awk -F":" '{print $1, $6}' /etc/passwd Utiliza los dos puntos como separador para mostrar el usuario y su directorio personal.
awk '$3 > 1000' datos.txt Filtra y muestra únicamente aquellas líneas donde el valor numérico de la tercera columna sea mayor a 1000.
awk 'NR >= 2 && NR <= 5' fichero.txt Extrae y muestra de forma exacta las líneas comprendidas entre la 2 y la 5.

Equivalencia con otros sistemas

Acción Linux (awk) Linux alternativo Windows (PowerShell)
Imprimir columna específica awk '{print $2}' file cut -d' ' -f2 file Get-Content file | ForEach-Object { ($_.Split())[1] }
Filtrar por condición numérica awk '$2 > 50' file No directo (requiere bucles) Get-Content file | Where-Object { $_.Split()[1] -gt 50 }
Cambiar delimitador de columnas awk -F',' '{print $1}' file cut -d',' -f1 file Import-Csv file | Select-Object -ExpandProperty Col1

Ejemplos

Imprimir la primera y la última columna de un listado de procesos

ps aux | awk '{print $1, $11}'

Filtrar y mostrar usuarios del sistema utilizando un delimitador personalizado (dos puntos)

awk -F':' '{print "Usuario:", $1, "- Shell:", $7}' /etc/passwd

Utilizar una condición lógica para filtrar filas según el valor numérico de una columna

ls -l | awk '$5 > 1024 {print $9, "ocupa", $5, "bytes"}'

Emplear las variables internas de control de líneas (NR y NF)

awk 'NR <= 3 {print NR, "-> Columnas:", NF, "-> Línea:", $0}' /etc/hosts

Ejemplo de salida

root /bin/bash
daemon /usr/sbin/nologin
bin /usr/sbin/nologin
sys /usr/sbin/nologin
sync /bin/sync

¿Cómo interpretar la salida?

  • Campos seleccionados: muestra de manera limpia únicamente las columnas solicitadas en la orden print, ignorando el resto de datos de la línea original.
  • Formateo integrado: permite combinar cadenas de texto estáticas y variables dinámicas (como $1 o separadores de formato) para estructurar informes legibles al instante.

Errores habituales

  • Olvidar delimitar el script de awk entre comillas simples (' '), lo que provoca que el intérprete de comandos de la terminal intente evaluar incorrectamente los símbolos de dólar ($1, $2) como variables del shell.
  • No definir correctamente el separador de campos con la opción -F cuando se procesan ficheros estructurados que no utilizan espacios en blanco por defecto (como los archivos separados por comas o por dos puntos).

Conceptos relacionados

  • Procesamiento de flujos estructurados
  • Campos y registros
  • Expresiones regulares en awk
  • Comando cut
  • Comando sed

Comandos relacionados

  • sed
  • grep
  • cut
  • tr
  • sort

Curiosidades

Aunque a menudo se utiliza simplemente como una utilidad rápida de la terminal para extraer columnas, awk es en realidad un lenguaje de programación completo con capacidad para declarar variables, utilizar bucles condicionales, funciones matemáticas y arrays asociativos, lo que le otorga una potencia desproporcionada para resolver problemas complejos de análisis de datos en pocas líneas.

Prácticas propuestas

  1. Ejecuta el comando básico df -h en tu máquina virtual para ver el espacio en disco, y utiliza awk para mostrar únicamente la primera columna (sistema de archivos) y la cuarta columna (espacio disponible).
  2. Investiga cómo utilizar la opción -F para procesar el archivo del sistema /etc/passwd y extraer únicamente los nombres de usuario y sus rutas de directorio personal asignadas.
  3. Crea un fichero de texto plano de pruebas con varias columnas numéricas y utiliza awk para aplicar un filtro lógico que imprima solo las filas donde una columna específica supere un determinado valor umbral.
  4. Utiliza las variables internas NR y NF en un comando awk para numerar las líneas de un archivo de texto e indicar cuántas columnas componen cada registro.
  5. Compara la sintaxis y la complejidad de extraer una columna concreta de un archivo utilizando awk frente a la herramienta clásica de corte de campos cut.

Consejo: Recuerda siempre envolver el código de programación de awk entre comillas simples; de esta forma evitarás que tu terminal intente interpretar los símbolos de columna ($1, $2) antes de pasárselos a la utilidad.

Haz clic aquí para ver las soluciones y explicaciones

1. Ejecuta el comando básico df -h en tu máquina virtual para ver el espacio en disco, y utiliza awk para mostrar únicamente la primera columna (sistema de archivos) y la cuarta columna (espacio disponible).

Para combinar ambos comandos mediante un flujo (pipe) y extraer las columnas deseadas, se ejecuta: df -h | awk '{print $1, $4}'. Esto filtrará la salida tabular por defecto del comando de espacio en disco mostrando de forma limpia los campos correspondientes.


2. Investiga cómo utilizar la opción -F para procesar el archivo del sistema /etc/passwd y extraer únicamente los nombres de usuario y sus rutas de directorio personal asignadas.

Dado que /etc/passwd utiliza los dos puntos (:) como separador de campos, se emplea el parámetro -F indicando dicho carácter y seleccionando la primera ($1) y la sexta ($6) columna: awk -F':' '{print $1, $6}' /etc/passwd.


3. Crea un fichero de texto plano de pruebas con varias columnas numéricas y utiliza awk para aplicar un filtro lógico que imprima solo las filas donde una columna específica supere un determinado valor umbral.

Para filtrar líneas de manera condicional, se coloca la regla numérica antes de la acción entre llaves. Por ejemplo, para filtrar un archivo llamado datos.txt donde la segunda columna sea mayor de 50, se utiliza: awk '$2 > 50 {print $0}' datos.txt (o simplemente awk '$2 > 50' datos.txt, ya que la acción de imprimir la línea completa es el comportamiento predeterminado).


4. Utiliza las variables internas NR y NF en un comando awk para numerar las líneas de un archivo de texto e indicar cuántas columnas componen cada registro.

Combinando las variables internas de número de registro (NR) y número de campos (NF) junto con el texto completo ($0), la sintaxis sería: awk '{print "Línea:", NR, "| Columnas:", NF, "| Contenido:", $0}' fichero.txt. Esto genera un informe detallado de la estructura interna del archivo.


5. Compara la sintaxis y la complejidad de extraer una columna concreta de un archivo utilizando awk frente a la herramienta clásica de corte de campos cut.

Mientras que cut es una herramienta extremadamente sencilla y directa cuando las columnas están separadas por un delimitador estricto (por ejemplo, cut -d':' -f1 fichero), awk es mucho más potente y flexible porque no le afectan los espacios múltiples consecutivos (a diferencia de cut, que requiere configuraciones adicionales si los separadores varían en longitud o se basan en espacios en blanco dinámicos).





 

Comando autoremove

autoremove

El comando o modificador autoremove (empleado habitualmente a través de interfaces como apt-get autoremove o apt autoremove) es una instrucción de mantenimiento fundamental en sistemas basados en Debian y Ubuntu para limpiar y desinstalar de forma automática todas aquellas dependencias huérfanas —librerías y paquetes adicionales— que ya no son necesarias porque el programa principal que las requería fue eliminado previamente.

Categoría Gestión de software y mantenimiento del sistema
Disponible en Sistemas basados en Debian / Ubuntu y derivados (ecosistema APT)
Equivalente en Windows Herramientas de limpieza del sistema o desinstaladores avanzados que escanean y borran archivos temporales o dependencias de usuario huérfanas.
Sustituye a La búsqueda e identificación manual y tediosa de paquetes de librerías residuales en desuso.
¿Requiere permisos de administrador? Sí, al modificar el sistema de archivos global y eliminar componentes instalados, exige privilegios de superusuario (sudo).

¿Qué significa su nombre?

AUTOREMOVE proviene de la unión de auto (automático) y remove (quitar/desinstalar).

Su nombre describe perfectamente su propósito: automatizar la retirada de software innecesario del sistema, evitando que se queden ocupando espacio en el disco duro librerías fantasma que ya no prestan servicio a ninguna aplicación activa.

¿Para qué sirve?

El comando autoremove sirve para mantener el sistema operativo limpio y optimizado. Cuando instalas un programa complejo en Linux, APT suele descargar de forma automática numerosas dependencias y librerías auxiliares necesarias para su funcionamiento. Sin embargo, cuando desinstalas ese programa (por ejemplo, usando remove), esas dependencias secundarias a menudo se quedan en el equipo porque el sistema no sabe si otro software las está usando.

Ejecutar periódicamente autoremove permite escanear todo el árbol de dependencias del sistema, identificar qué paquetes ya no tienen ningún programa principal asociado (dependencias huérfanas) y eliminarlos de manera segura para recuperar espacio en disco.

Sintaxis

sudo apt-get autoremove [opciones]

Las opciones o modificadores complementarios más habituales son:

Opción o Modificador Descripción
--purge Modificador opcional muy recomendado (ej. sudo apt-get autoremove --purge) que asegura que, al eliminar las dependencias huérfanas, también se borren por completo sus archivos de configuración.
-y o --yes Acepta de forma automática y sin interrupciones la confirmación interactiva para proceder con la limpieza.
apt autoremove Versión simplificada y moderna utilizando la interfaz unificada de APT con mejoras estéticas en la terminal.

Comandos más utilizados

Comando Descripción
sudo apt-get autoremove Busca y elimina todas las dependencias huérfanas detectadas en el sistema.
sudo apt autoremove --purge Limpia dependencias huérfanas y borra de manera definitiva sus ficheros de configuración asociados.
sudo apt-get --purge autoremove Variante clásica equivalente para la purga automática de software rezagado.

Equivalencia con otros sistemas

Acción Linux (APT / Debian) Linux (Red Hat / Fedora) Windows
Eliminar dependencias huérfanas sudo apt-get autoremove sudo dnf autoremove Limpieza de disco del sistema operativo / liberador de espacio
Limpieza profunda con purgado sudo apt autoremove --purge No aplica directamente (DNF gestiona configs distinto) Utilidades de terceros para limpieza profunda

Ejemplos

Comprobar y eliminar dependencias huérfanas de forma estándar

sudo apt-get autoremove

Ejecutar la limpieza automática aceptando las confirmaciones sin preguntar

sudo apt-get -y autoremove

Limpiar dependencias huérfanas eliminando también sus archivos de configuración

sudo apt autoremove --purge

Ejemplo de salida

Leyendo lista de paquetes... Hecho
Creando árbol de dependencias... Hecho
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes NUEVOS: (ninguno)
Los siguientes paquetes se ELIMINARÁN:
  libapr1 libaprutil1 apache2-data
0 actualizados, 0 nuevos se instalarán, 3 para eliminar y 0 no actualizados.
Se liberarán 5.200 kB de espacio en disco.

¿Cómo interpretar la salida?

  • Paquetes a eliminar: lista detallada de los paquetes o librerías secundarias que han sido clasificados como huérfanos y que van a ser retirados del sistema.
  • Volumen de espacio recuperado: indica de manera precisa cuántos kilobytes o megabytes de almacenamiento volverán a estar disponibles en el disco duro tras completar la operación de limpieza.

Errores habituales

  • Olvidar ejecutar este comando de forma periódica tras desinstalar aplicaciones pesadas, lo que provoca la acumulación innecesaria de gigabytes de librerías obsoletas ocupando espacio oculto en el sistema.
  • Confundir el propósito de autoremove pensando que sirve para actualizar aplicaciones, cuando en realidad su única función es la gestión de residuos de desinstalación.

Conceptos relacionados

  • Dependencias huérfanas
  • Gestor de paquetes APT
  • Árbol de dependencias
  • Mantenimiento del sistema
  • Comando remove

Comandos relacionados

  • apt-get remove
  • apt-get purge
  • apt-get clean
  • dpkg

Curiosidades

Cuando instalas software en Linux, el gestor de paquetes lleva un registro interno (metadatos) de qué elemento solicitó cada librería. Al desinstalar un programa con remove, si el contador de referencias de una librería secundaria llega a cero y ningún otro software la reclama, APT la etiqueta automáticamente como candidata para ser barrida por el comando autoremove.

Prácticas propuestas

  1. Instala en tu máquina virtual un programa complejo que arrastre numerosas dependencias auxiliares (por ejemplo, el servidor web Apache o un entorno gráfico ligero).
  2. Desinstala el programa principal utilizando exclusivamente la orden clásica remove, observando cómo las librerías secundarias se quedan en el sistema operativo.
  3. Ejecuta el comando sudo apt-get autoremove para comprobar cómo el sistema detecta de forma inteligente las dependencias huérfanas que dejó el programa anterior y procede a eliminarlas.
  4. Prueba a utilizar la variante combinada sudo apt autoremove --purge para asegurarte de que el proceso de limpieza elimina también cualquier resto de configuración residual asociado a dichas librerías.
  5. Investiga qué otros comandos de mantenimiento del almacenamiento existen en APT (como apt-get clean o apt-get autoclean) y en qué se diferencian de la labor que realiza autoremove.

Consejo: Adquiere el hábito de añadir el modificador --purge al ejecutar la limpieza automática (sudo apt autoremove --purge); te garantizará que no queden archivos de configuración fantasma de librerías que ya ni siquiera forman parte de tu equipo.

Haz clic aquí para ver las soluciones y explicaciones

1. Instala en tu máquina virtual un programa complejo que arrastre numerosas dependencias auxiliares (por ejemplo, el servidor web Apache o un entorno gráfico ligero).

Para realizar la prueba, se ejecuta la instalación de un paquete con múltiples requisitos internos, como sudo apt install apache2. Durante el proceso, el terminal mostrará una lista de paquetes adicionales y librerías que se descargarán obligatoriamente para satisfacer las dependencias del servicio.


2. Desinstala el programa principal utilizando exclusivamente la orden clásica remove, observando cómo las librerías secundarias se quedan en el sistema operativo.

Al ejecutar sudo apt remove apache2, el sistema desinstala el binario principal del servidor web, pero de manera deliberada deja intactas todas las librerías auxiliares que se instalaron en su momento, ya que el comando estándar no presupone que el usuario quiera deshacerse de ellas si no se le indica expresamente.


3. Ejecuta el comando sudo apt-get autoremove para comprobar cómo el sistema detecta de forma inteligente las dependencias huérfanas que dejó el programa anterior y procede a eliminarlas.

Al lanzar sudo apt-get autoremove, APT analiza el árbol de referencias del sistema, detecta que las librerías que trajo Apache ya no tienen ningún programa principal que las soporte y muestra una lista detallada de dichos elementos huérfanos listos para ser eliminados del disco duro.


4. Prueba a utilizar la variante combinada sudo apt autoremove --purge para asegurarte de que el proceso de limpieza elimina también cualquier resto de configuración residual asociado a dichas librerías.

Añadiendo el modificador --purge al comando de limpieza automática (sudo apt autoremove --purge), se le ordena a APT que no solo desinstale los paquetes huérfanos detectados, sino que también borre de manera definitiva cualquier fichero de configuración residual que estas hubieran podido dejar en el sistema.


5. Investiga qué otros comandos de mantenimiento del almacenamiento existen en APT (como apt-get clean o apt-get autoclean) y en qué se diferencian de la labor que realiza autoremove.

Mientras que autoremove se encarga de eliminar paquetes y librerías instaladas que se han quedado sin uso (dependencias huérfanas), comandos como apt-get clean o autoclean actúan exclusivamente sobre la caché de ficheros .deb descargados que se almacenan localmente en el directorio /var/cache/apt/archives/, borrando los paquetes instalados previamente para liberar espacio en disco sin desinstalar absolutamente nada del sistema operativo.


 

Comando remove

remove

El comando o modificador remove (empleado habitualmente a través de interfaces como apt-get remove o apt remove) es la instrucción estándar en sistemas basados en Debian y Ubuntu para desinstalar uno o varios paquetes de software del sistema operativo, eliminando los binarios ejecutables pero conservando los archivos de configuración locales del usuario.

Categoría Gestión de software y mantenimiento del sistema
Disponible en Sistemas basados en Debian / Ubuntu y derivados (ecosistema APT)
Equivalente en Windows Desinstalar una aplicación desde la sección de Configuración de Windows o empleando winget uninstall [programa].
Sustituye a Métodos rudimentarios de borrado manual de archivos ejecutables dentro del sistema de ficheros Unix.
¿Requiere permisos de administrador? Sí, al modificar el software instalado a nivel global del sistema, exige privilegios de superusuario (sudo).

¿Qué significa su nombre?

REMOVE es el término en inglés que significa quitar, remover o retirar.

En el contexto de la gestión de paquetes, define la acción de retirar los componentes funcionales del programa del sistema operativo de manera segura, permitiendo dar marcha atrás fácilmente si se decide conservar la parametrización previa.

¿Qué sirve?

El parámetro remove sirve para desinstalar aplicaciones que ya no se necesitan, liberando el espacio ocupado por los binarios, las librerías principales y la documentación del programa. Su principal característica distintiva frente a opciones avanzadas como purge es que respeta y mantiene intactos los ficheros de configuración (habitualmente en /etc).

Esta opción de diseño previene la pérdida accidental de ajustes personalizados si el usuario decide volver a instalar la misma aplicación más adelante, facilitando una transición rápida sin tener que reconfigurar el servicio desde cero.

Sintaxis

sudo apt-get remove [nombre_paquete]

Las opciones o modificadores complementarios más habituales son:

Opción o Modificador Descripción
apt remove [paquete] Versión simplificada del comando utilizando la interfaz unificada y moderna de APT.
--purge Modificador opcional que se puede añadir al comando remove (es decir, apt-get remove --purge) para forzar la eliminación de los archivos de configuración en el mismo proceso.
-y o --yes Acepta automáticamente de manera predeterminada todas las confirmaciones interactivas del terminal durante la desinstalación.

Comandos más utilizados

Comando Descripción
sudo apt-get remove nano Desinstala el editor de textos Nano conservando sus ficheros de configuración locales.
sudo apt remove firefox Elimina el navegador web Firefox utilizando la interfaz moderna de APT.
sudo apt-get remove --purge apache2 Desinstala el servidor web y elimina su configuración en un solo paso combinando la orden.

Equivalencia con otros sistemas

Acción Linux (APT / Debian) Linux (Red Hat / Fedora) Windows (PowerShell / Winget)
Desinstalar aplicación (conservando configs) sudo apt-get remove [paquete] sudo dnf remove [paquete] winget uninstall [programa]
Desinstalar sin confirmación interactiva sudo apt-get -y remove [paquete] sudo dnf -y remove [paquete] winget uninstall --silent [programa]

Ejemplos

Desinstalar un paquete de utilidad general conservando sus ajustes

sudo apt-get remove htop

Desinstalar múltiples aplicaciones de forma simultánea en una sola línea

sudo apt remove vlc gimp

Desinstalar un programa y purgar su configuración combinando parámetros

sudo apt-get remove --purge curl

Ejemplo de salida

Leyendo lista de paquetes... Hecho
Creando árbol de dependencias... Hecho
Leyendo la información de estado... Hecho
Los siguientes paquetes se ELIMINARÁN:
  htop
0 actualizados, 0 nuevos se instalarán, 1 para eliminar y 0 no actualizados.
Se liberarán 350 kB de espacio en disco.

¿Cómo interpretar la salida?

  • Paquetes a eliminar: lista de forma clara el software exacto que va a ser retirado del sistema operativo por orden expresa del usuario.
  • Conteo de acciones: muestra un resumen numérico indicando cuántos elementos se actualizarán, instalarán o eliminarán.
  • Espacio liberado: calcula de forma estimada el volumen de almacenamiento que se recuperará en el disco duro tras completar la desinstalación de los binarios.

Errores habituales

  • Asumir que ejecutar remove borrará por completo la aplicación del sistema y buscar posteriormente los ficheros de configuración antiguos en directorios del sistema sin recordar que estos se mantienen guardados.
  • Olvidar comprobar si la desinstalación de un paquete arrastra o afecta a dependencias compartidas que otros programas del sistema necesiten para funcionar correctamente.

Conceptos relacionados

  • Gestor de paquetes APT
  • Desinstalación de software
  • Archivos de configuración residuales
  • Comando purge
  • Estado de paquetes en dpkg (rc)

Comandos relacionados

  • apt-get purge
  • apt autoremove
  • dpkg
  • apt-cache

Curiosidades

Cuando ejecutas el comando remove en distribuciones basadas en Debian, el paquete no desaparece de forma absoluta de las bases de datos internas del sistema; su estado cambia a Installed-config-files (conocido comunmente como estado rc). Esto le indica al gestor de paquetes que el programa ya no está operativo, pero que sus preferencias de usuario siguen vigentes en el disco.

Prácticas propuestas

  1. Instala una utilidad ligera de consola en tu máquina virtual (como el visualizador de procesos htop o el árbol de directorios tree).
  2. Ejecuta el comando sudo apt-get remove sobre el paquete instalado y comprueba el mensaje de salida que muestra el terminal respecto al espacio liberado.
  3. Verifica en el sistema de archivos si tras la desinstalación con remove han quedado rastros de directorios o configuraciones asociadas al programa en las rutas correspondientes.
  4. Vuelve a instalar el paquete y prueba a utilizar la variante combinada sudo apt-get remove --purge para observar la diferencia directa en el comportamiento del gestor.
  5. Compara el proceso de desinstalación estándar en Linux utilizando APT frente a la ejecución equivalente mediante un gestor de paquetes moderno en Windows como winget.

Consejo: Utiliza siempre remove por defecto si tienes dudas sobre si en el futuro volverás a necesitar una aplicación, ya que te permitirá conservar todos tus ajustes personalizados sin esfuerzo.

Haz clic aquí para ver las soluciones y explicaciones

1. Instala una utilidad ligera de consola en tu máquina virtual (como el visualizador de procesos htop o el árbol de directorios tree).

Para realizar la práctica, se instala la herramienta ejecutando en el terminal el comando correspondiente con privilegios de administrador: sudo apt install htop, comprobando que se descarga e instala correctamente.


2. Ejecuta el comando sudo apt-get remove sobre el paquete instalado y comprueba el mensaje de salida que muestra el terminal respecto al espacio liberado.

Al lanzar sudo apt-get remove htop, el terminal muestra una tabla de resumen indicando que el paquete será eliminado y desglosando de manera estimada la cantidad exacta de kilobytes o megabytes de espacio en disco que se van a recuperar.


3. Verifica en el sistema de archivos si tras la desinstalación con remove han quedado rastros de directorios o configuraciones asociadas al programa en las rutas correspondientes.

Dado que herramientas sencillas como htop apenas generan configuraciones globales complejas en /etc, el comando habrá retirado el binario por completo. Sin embargo, en aplicaciones de servicio más complejas, se comprobaría que los ficheros de configuración del directorio /etc permanecen intactos.


4. Vuelve a instalar el paquete y prueba a utilizar la variante combinada sudo apt-get remove --purge para observar la diferencia directa en el comportamiento del gestor.

Reinstalando el paquete y ejecutando la orden conjunta con la opción --purge, se le indica explícitamente a APT que ejecute una desinstalación estándar pero aplicando de forma inmediata el borrado total de ficheros de configuración asociados, emulando el comportamiento del comando purge puro.


5. Compara el proceso de desinstalación estándar en Linux utilizando APT frente a la ejecución equivalente mediante un gestor de paquetes moderno en Windows como winget.

Mientras que APT en Linux permite un control granular y avanzado separando la retirada de binarios (remove) de la destrucción de configuraciones (purge), herramientas en Windows como winget uninstall [programa] gestionan la desinstalación invocando directamente al desinstalador nativo de la aplicación o paquete ejecutable, sin una separación estandarizada a nivel de sistema de archivos de configuraciones huérfanas.


 

Comando purge

purge

El comando o modificador purge (en el contexto de los sistemas de gestión de paquetes basados en Debian como apt-get purge o apt purge) es una instrucción avanzada de desinstalación que elimina por completo un paquete de software del sistema operativo, incluyendo no solo sus binarios y dependencias asociadas, sino también todos los archivos de configuración globales y locales generados durante su uso.

Categoría Gestión de software y limpieza de sistemas
Disponible en Sistemas basados en Debian / Ubuntu y derivados (ecosistema APT)
Equivalente en Windows Desinstalación completa de una aplicación borrando manualmente las carpetas residuales restantes en directorios como AppData o ProgramData tras usar winget uninstall.
Sustituye a El comando clásico remove cuando se requiere eliminar totalmente cualquier rastro de configuración anterior.
¿Requiere permisos de administrador? Sí, al modificar el sistema de archivos de forma permanente y eliminar componentes globales, exige privilegios de superusuario (sudo).

¿Qué significa su nombre?

PURGE proviene del término en inglés que significa purgar, limpiar o depurar a fondo.

En el contexto de la administración de sistemas Unix, describe una limpieza radical y sin contemplaciones, diseñada para no dejar rastro de que la aplicación haya estado instalada jamás en el equipo.

¿Para qué sirve?

El parámetro purge sirve para realizar una desinstalación profunda de un paquete de software. Mientras que una desinstalación estándar (como remove) deja intactos los archivos de configuración en directorios como /etc por si se desea reinstalar el programa en el futuro, purge se encarga de borrar dichos ficheros de configuración de forma irreversible.

Es una herramienta muy útil cuando un programa se ha corrompido, cuando queremos solucionar problemas de configuración persistentes reinstalándolo desde cero, o cuando necesitamos liberar espacio recuperando la configuración por defecto de los servicios del sistema.

Sintaxis

sudo apt-get purge [nombre_paquete]

Las opciones asociadas o complementarias más habituales son:

Opción o Comando Descripción
apt purge [paquete] Versión simplificada y moderna del comando de purgado utilizando la interfaz unificada de APT.
dpkg --purge [paquete] Herramienta de bajo nivel utilizada por APT para forzar el borrado de archivos de configuración de un paquete a nivel de motor de Debian.
dpkg -l | grep "^rc" Comando auxiliar muy útil para listar todos los paquetes que han sido desinstalados previamente con remove pero cuyos archivos de configuración residuales (marcas rc) siguen ocupando espacio en el sistema.

Comandos más utilizados

Comando Descripción
sudo apt-get purge apache2 Desinstala por completo el servidor web Apache borrando todos sus ficheros de configuración.
sudo apt purge nginx Elimina el servidor Nginx y sus archivos de configuración mediante el comando APT moderno.
sudo apt-get purge --auto-remove [paquete] Elimina el paquete seleccionado junto con todas las dependencias huérfanas que dejó asociadas.

Equivalencia con otros sistemas

Acción Linux (APT / Debian) Linux (Red Hat / Fedora) Windows
Desinstalación profunda (borrando configs) sudo apt-get purge [paquete] sudo dnf remove [paquete] (suele limpiar configs) Desinstalador oficial o limpieza manual en AppData
Listar archivos de configuración huérfanos dpkg -l | grep "^rc" No aplicable (RPM gestiona distinto) Uso de herramientas de terceros (limpiadores de registro)
Purgar múltiples paquetes residuales sudo apt purge $(dpkg -l | grep "^rc" | awk '{print $2}') No aplica No aplica

Ejemplos

Purgar un servicio web para eliminar sus configuraciones personalizadas

sudo apt-get purge apache2

Purgar múltiples paquetes utilizando la interfaz moderna

sudo apt purge mysql-server mysql-client

Listar todos los paquetes que dejaron configuraciones residuales en el sistema

dpkg -l | grep "^rc"

Ejemplo de salida

Leyendo lista de paquetes... Hecho
Creando árbol de dependencias... Hecho
Leyendo la información de estado... Hecho
Los siguientes paquetes serán ELIMINADOS:
  apache2* apache2-data* apache2-utils*
0 aktualizados, 0 nuevos se instalarán, 3 para eliminar y 0 no actualizados.
Se liberarán 4.500 kB de espacio en disco.

¿Cómo interpretar la salida?

  • Asterisco junto al nombre (*): en la salida de APT, la presencia de un asterisco al lado de los paquetes indica explícitamente que van a ser purgados por completo, borrando tanto los binarios como sus configuraciones locales.
  • Espacio liberado: muestra la cantidad exacta de memoria recuperada en el disco duro tras la eliminación definitiva de los archivos residuales.

Errores habituales

  • Confundir remove con purge y asumir que al desinstalar un programa se borran automáticamente todas sus configuraciones, lo que puede provocar que al reinstalarlo más adelante se mantengan fallos previos heredados.
  • Ejecutar purge por error sobre paquetes críticos o de dependencias del sistema operativo sin comprobar qué archivos de configuración asociados se van a destruir de forma permanente.

Conceptos relacionados

  • Gestor de paquetes APT
  • Archivos de configuración
  • Comando dpkg
  • Dependencias huérfanas
  • Directorio /etc

Comandos relacionados

  • apt-get remove
  • apt autoremove
  • dpkg
  • dpkg-query

Curiosidades

En el ecosistema de gestión de paquetes de Debian, cuando un paquete se desinstala mediante remove, su estado interno en la base de datos de dpkg pasa a denominarse rc (Installed-config-files, es decir, instalado solo con archivos de configuración restantes). El comando purge limpia este registro por completo, haciendo que el paquete desaparezca totalmente de la base de datos del sistema.

Prácticas propuestas

  1. Instala una aplicación de servicios ligera en tu máquina virtual (como el servidor web Apache o Nginx) y verifica que genera archivos de configuración en el directorio /etc.
  2. Desinstala el paquete anterior utilizando exclusivamente la opción clásica remove y comprueba si el directorio de configuración en /etc sigue existiendo en el sistema.
  3. Vuelve a instalar el paquete y ahora ejecute la opción de desinstalación profunda mediante sudo apt-get purge. Comprueba que los directorios y archivos de configuración han desaparecido por completo.
  4. Utiliza el comando de consulta de bajo nivel dpkg -l | grep "^rc" para comprobar si quedan rastros de configuración de paquetes eliminados previamente en tu distribución.
  5. Investiga cómo se pueden combinar comandos para automatizar la limpieza y el purgado masivo de todos los paquetes residuales que tengan el estado rc en un sistema Debian.

Consejo: Utiliza purge en lugar de remove siempre que estés probando configuraciones complejas de servicios y quieras asegurarte de empezar desde cero en futuras instalaciones, evitando que queden parámetros antiguos molestos.

Haz clic aquí para ver las soluciones y explicaciones

1. Instala una aplicación de servicios ligera en tu máquina virtual (como el servidor web Apache o Nginx) y verifica que genera archivos de configuración en el directorio /etc.

Tras instalar por ejemplo Apache con sudo apt install apache2, se puede comprobar la existencia de su carpeta de configuración navegando o listando el contenido con ls -l /etc/apache2, donde se observarán los archivos principales de directivas del servicio.


2. Desinstala el paquete anterior utilizando exclusivamente la opción clásica remove y comprueba si el directorio de configuración en /etc sigue existiendo en el sistema.

Al ejecutar sudo apt remove apache2, el sistema elimina los binarios pero preserva los archivos de configuración en /etc/apache2 como medida de precaución. Si se lista dicho directorio, se confirmará que los ficheros siguen intactos.


3. Vuelve a instalar el paquete y ahora ejecute la opción de desinstalación profunda mediante sudo apt-get purge. Comprueba que los directorios y archivos de configuración han desaparecido por completo.

Reinstalando y ejecutando sudo apt-get purge apache2, el gestor de paquetes borra tanto el programa como la carpeta /etc/apache2. Al intentar listar el directorio de configuración posteriormente, el sistema indicará que la ruta ya no existe.


4. Utiliza el comando de consulta de bajo nivel dpkg -l | grep "^rc" para comprobar si quedan rastros de configuración de paquetes eliminados previamente en tu distribución.

Este comando filtra la lista global de paquetes gestionados por dpkg buscando aquellos cuya marca comience por rc (Removed/Config-files), permitiendo identificar visualmente qué aplicaciones ya no están activas pero mantienen archivos residuales ocupando espacio.


5. Investiga cómo se pueden combinar comandos para automatizar la limpieza y el purgado masivo de todos los paquetes residuales que tenham el estado rc en un sistema Debian.

Se puede automatizar el borrado masivo extrayendo los nombres de los paquetes con el estado rc mediante dpkg y pasándoselos como argumento de purgado a apt utilizando una sustitución de comandos: sudo apt purge $(dpkg -l | grep "^rc" | awk '{print $2}'). Esto limpia por completo cualquier residuo de configuraciones antiguas del sistema en una sola ejecución.


 

Comando sed

sed

El comando sed (abreviatura de Stream Editor, o editor de flujos) es una potente utilidad de la línea de comandos en sistemas Unix y Linux diseñada para procesar, filtrar, transformar y modificar textos de manera automatizada y sin necesidad de abrir un editor interactivo.

Categoría Procesamiento de texto y automatización
Disponible en Linux, macOS y sistemas operativos tipo Unix
Equivalente en Windows Scripts de PowerShell (Get-Content ... | ForEach-Object), editores de texto mediante bucles o utilidades de terceros.
Sustituye a Ediciones manuales repetitivas en archivos de configuración masivos mediante editores de texto visuales.
¿Requiere permisos de administrador? No, salvo que se intente modificar o sobrescribir un archivo del sistema ubicado en directorios protegidos (como /etc).

¿Qué significa su nombre?

SED proviene de la contracción en inglés de Stream Editor (Editor de flujos).

Su nombre define con precisión su cometido: actúa como un filtro que procesa un flujo de datos (entrada estándar o un archivo línea por línea) aplicando transformaciones al vuelo.

¿Para qué sirve?

El comando sed sirve para realizar operaciones de búsqueda y sustitución de textos, eliminar o insertar líneas de manera selectiva, y automatizar modificaciones complejas en ficheros de texto plano mediante expresiones regulares. Es una herramienta indispensable en la caja de herramientas de cualquier administrador de sistemas para la edición desatendida de archivos de configuración.

A diferencia de los editores interactivos tradicionales, sed procesa todo el archivo en memoria o mediante un búfer temporal de una sola pasada (a menos que se usen comandos de salto avanzados), lo que lo hace extremadamente rápido para procesar ficheros de registro gigantescos o scripts de despliegue automatizados.

Sintaxis

sed [opciones] 'script' [fichero...]

Las opciones y modificadores más habituales son:

Opción o Modificador Descripción
-n Suprime la impresión automática del búfer; se suele combinar con el comando de impresión p para mostrar solo las líneas filtradas.
-e [script] Permite encadenar múltiples comandos o reglas de edición en una misma ejecución.
-i Modifica y guarda los cambios directamente sobre el archivo original de forma permanente (edición in situ).
s/patrón/reemplazo/ Sustituye la primera coincidencia del patrón especificado por el texto de reemplazo en cada línea.
g (global) Modificador que se añade al final de una sustitución para aplicarla a todas las coincidencias de la línea, no solo a la primera.

Comandos más utilizados

Comando Descripción
sed 's/antiguo/nuevo/g' fichero.txt Sustituye todas las apariciones de la palabra "antiguo" por "nuevo" en todo el documento.
sed -i 's/error/ok/g' config.cfg Modifica directamente el archivo de configuración sobrescribiéndolo con los cambios aplicados.
sed '3d' fichero.txt Elimina visualmente la tercera línea del archivo durante el procesamiento.
sed -n '5,10p' fichero.txt Muestra únicamente el rango de líneas comprendido entre la 5 y la 10.

Equivalencia con otros sistemas

Acción Linux (sed) Linux alternativo Windows (PowerShell)
Sustituir texto en archivo sed -i 's/a/b/g' file awk '{gsub(/a/,"b"); print}' (Get-Content file) -replace 'a','b' | Set-Content file
Imprimir líneas específicas sed -n '2,5p' file awk 'NR>=2 && NR<=5' Get-Content file | Select-Object -Index 1..4
Eliminar líneas en blanco sed '/^$/d' file grep -v '^$' file Get-Content file | Where-Object {$_ -ne ''}
Eliminar patrón de líneas sed '/patron/d' file grep -v 'patron' file Get-Content file | Where-Object {$_ -notmatch 'patron'}

Ejemplos

Sustituir una cadena de texto en un flujo

echo "Hola mundo Linux" | sed 's/mundo/Sistemas/'

Sustituir todas las coincidencias de una palabra en un archivo completo de manera global

sed 's/puerto=80/puerto=8080/g' /etc/servidor.conf

Modificar un archivo de texto de forma permanente guardando los cambios

sed -i 's/desactivado/activado/g' entorno.env

Mostrar únicamente un rango determinado de líneas (ej. de la línea 10 a la 20)

sed -n '10,20p' syslog.log

Ejemplo de salida

# Configuración general del demonio SSH
Port 22
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication yes
X11Forwarding yes

¿Cómo interpretar la salida?

  • Flujo modificado: el resultado muestra las líneas del archivo de texto original con las reglas de sustitución o filtrado aplicadas en tiempo real.
  • Supresión con -n: si se emplea la opción -n, el terminal permanecerá completamente silencioso salvo para aquellas líneas que coincidan explícitamente con las reglas de impresión (como el modificador p).
  • Silencio en opción -i: cuando se utiliza el parámetro de guardado in situ, el comando no devuelve nada por pantalla si la ejecución se ha completado de forma correcta.

Errores habituales

  • Olvidar añadir el modificador global g al final de una orden de sustitución, lo que provoca que sed reemplace únicamente la primera coincidencia que encuentra en cada línea y omita las demás.
  • Modificar un archivo crítico del sistema utilizando la opción -i sin haber realizado previamente una copia de seguridad o un respaldo del fichero original.

Conceptos relacionados

  • Expresiones regulares (Regex)
  • Editor de flujos
  • Flujos estándar (E/S)
  • Comando awk
  • Comando grep
  • Edición in situ

Comandos relacionados

  • awk
  • grep
  • tr
  • cut
  • patch

Curiosidades

A pesar de haber sido desarrollado a principios de la década de 1970 en los laboratorios Bell por Lee E. McMahon como una evolución de los editores de línea anteriores, sed sigue siendo una herramienta fundamental e insustituible en los scripts de despliegue actuales debido a su extrema ligereza, su velocidad de procesamiento en memoria y su total compatibilidad con cualquier entorno POSIX.

Prácticas propuestas

  1. Crea un archivo de texto llamado texto.txt con varias líneas repetidas que contengan la palabra "linux". Utiliza sed para sustituir todas las apariciones de "linux" por "UNIX" en pantalla.
  2. Ejecuta el mismo comando anterior añadiendo la opción -i para comprobar cómo se modifican los datos de manera permanente dentro del archivo físico.
  3. Emplea el comando sed combinado con la opción de borrado d para eliminar todas las líneas en blanco de un archivo de registro de pruebas.
  4. Utiliza el comando sed -n junto con un rango de números de línea para extraer y visualizar únicamente un fragmento específico de un fichero de configuración.
  5. Compara la sintaxis y la complejidad de utilizar sed para reemplazar un texto con respecto a realizar la misma operación mediante un script equivalente en PowerShell si dispones de Windows.
  6. Investiga cómo utilizar barras verticales u otros caracteres delimitadores alternativos (como sed 's#antiguo#nuevo#') cuando la ruta que deseas sustituir contiene barras diagonales de directorios.

Consejo: Acostúmbrate a probar primero tus expresiones de sustitución con sed imprimiendo por pantalla (sin la opción -i) para verificar que el resultado es exactamente el esperado antes de aplicarlo de forma permanente sobre archivos importantes del sistema.

Haz clic aquí para ver las soluciones y explicaciones

1. Crea un archivo de texto llamado texto.txt con varias líneas repetidas que contengan la palabra "linux". Utiliza sed para sustituir todas las apariciones de "linux" por "UNIX" en pantalla.

Para realizar esta tarea de forma global en cada línea, se ejecuta el comando indicando el patrón de sustitución con el modificador final g: sed 's/linux/UNIX/g' texto.txt. Esto procesará el archivo y volcará el resultado transformado directamente en la consola.


2. Ejecuta el mismo comando anterior añadiendo la opción -i para comprobar cómo se modifican los datos de manera permanente dentro del archivo físico.

Añadiendo el parámetro de edición in situ, el comando queda de la siguiente forma: sed -i 's/linux/UNIX/g' texto.txt. Al ejecutarlo, sed sobrescribirá automáticamente el archivo original guardando los cambios de forma persistente en el disco duro sin mostrar salida por pantalla.


3. Emplea el comando sed combinado con la opción de borrado d para eliminar todas las líneas en blanco de un archivo de registro de pruebas.

Para suprimir las líneas vacías utilizando expresiones regulares, se emplea el comando de borrado asociado al patrón de línea nula: sed '/^$/d' fichero.txt. El símbolo ^ indica el principio de línea y $ el final, por lo que coincidirá exactamente con las líneas que no contengan ningún carácter.


4. Utiliza el comando sed -n junto con un rango de números de línea para extraer y visualizar únicamente un fragmento específico de un fichero de configuración.

Combinando la opción de supresión de impresión automática -n con el comando de impresión p, la sintaxis para mostrar por ejemplo de la línea 5 a la 10 sería: sed -n '5,10p' configuracion.conf. De esta manera se evita imprimir el resto del documento.


5. Compara la sintaxis y la complejidad de utilizar sed para reemplazar un texto con respecto a realizar la misma operación mediante un script equivalente en PowerShell si dispones de Windows.

Mientras que en Linux sed resuelve la sustitución de forma muy concisa y directa con una sola línea de parámetros (sed -i 's/a/b/g' file), PowerShell en Windows requiere un pipeline explícito que lea el contenido, aplique el operador de reemplazo y vuelva a volcar los datos: (Get-Content file) -replace 'a','b' | Set-Content file.


6. Investiga how utilizar barras verticales u otros caracteres delimitadores alternativos (como sed 's#antiguo#nuevo#') cuando la ruta que deseas sustituir contiene barras diagonales de directorios.

Por defecto, sed utiliza la barra diagonal / como delimitador del comando de sustitución. Si se intenta modificar una ruta de directorio (por ejemplo, cambiar /var/www por /srv/www), las barras de la ruta chocarían con el comando, obligando a escapar cada barra con una barra invertida (\/). Cambiando el carácter delimitador inicial por otro símbolo válido como la almohadilla (#), la sintaxis se simplifica enormemente: sed 's#/var/www#/srv/www#g'.