🔄
dos2unix
Conversión de ficheros DOS/Windows → UNIX/Linux
📦 Instalación requerida: sudo apt install dos2unix recode
dos2unix elimina los caracteres de retorno de carro (\r o CR) al final de cada línea. Windows/DOS usa \r\n (CR+LF) mientras que Linux/UNIX usa solo \n (LF).
| Comando / Sintaxis | Descripción |
| dos2unix <entrada> <salida> | Convierte el fichero de entrada y guarda el resultado en un nuevo fichero de salida. |
| dos2unix <fichero> | Convierte el fichero in-place (sobrescribe el original). |
| dos2unix -n filedos.txt fileunix.txt | Conversión con flag -n (new file): mantiene el original intacto. |
Ejemplos prácticos
1
Crear fichero con formato DOS (simulación)
Creamos un fichero de texto y añadimos \r para simular el formato CR-LF de DOS.
echo "Linea 1" > filedos.txt
echo "Linea 2" >> filedos.txt
sed -i 's/$/\r/' filedos.txt
cat filedos.txt
cat -A filedos.txt
^M = representación visible del carácter \r (Retorno de Carro). $ = representación visible de \n (Nueva Línea). cat normal ignora el \r porque los sistemas UNIX lo tratan como carácter no imprimible.
Para confirmar con dump octal:
| Parte del archivo | Formato UNIX original | Después del sed (DOS) |
| Fin de línea | \n (octal: \012) | \r\n (octal: \015\012) |
2
Convertir DOS → UNIX (nuevo fichero)
dos2unix -n filedos.txt fileunix.txt
3
Convertir in-place (uso más común)
unix2dos — UNIX → DOS/Windows
Hace la operación inversa: añade \r antes de cada \n, creando el formato CR-LF de Windows.
| Comando / Sintaxis | Descripción |
| unix2dos <entrada> <salida> | Convierte y guarda en un nuevo fichero de salida. |
| unix2dos <fichero> | Convierte el fichero in-place (sobrescribe el original). |
echo "Este archivo esta en formato UNIX." > fileunix.txt
unix2dos -n fileunix.txt filedos.txt
cat -A filedos.txt
# Salida: Este archivo esta en formato UNIX.^M$
🔡
recode
Conversión de codificación de caracteres y formato general
recode es una herramienta versátil para convertir codificaciones de caracteres (ISO-8859-1 ↔ UTF-8) y formatos (texto plano → HTML, LaTeX, etc.).
📦 Instalación: sudo apt install recode
| Opción | Descripción |
| <origen>..<destino> | Especifica el tipo de conversión (ej: latin1..utf8, ..HTML). |
| -l | Lista todas las conversiones de codificación y formato disponibles. |
| < / > | Redirección de entrada/salida (recode procesa stdin/stdout por defecto). |
Ejemplos prácticos
echo "Este es el titulo" > page.txt
echo "" >> page.txt
echo "Contenido de la pagina." >> page.txt
recode ..HTML < page.txt > page.html
echo "El camión de Jose mañana." > archivo_latin1.txt
iconv -f UTF-8 -t ISO-8859-1 archivo_latin1.txt > archivo_latin1_final.txt
rm archivo_latin1.txt
recode latin1..utf8 archivo_latin1_final.txt
file archivo_latin1_final.txt
# archivo_latin1_final.txt: UTF-8 Unicode text
🖥️
Información del Sistema
Arquitectura, kernel, hardware, /proc y fecha/hora
📦 Dependencias: sudo apt install dmidecode hdparm pciutils usbutils
I. Arquitectura, Kernel y Componentes
| Comando | Descripción | Ejemplo |
| arch | Muestra la arquitectura de la máquina (ej. x86_64). | arch |
| uname -m | Muestra la arquitectura del hardware de la máquina. | uname -m |
| uname -r | Muestra la versión del kernel Linux en uso. | uname -r |
| cat /proc/version | Muestra la versión completa del kernel junto con el compilador GCC usado. | cat /proc/version |
| dmidecode -q | Muestra detalles de los componentes del sistema (BIOS, placa base, CPU, RAM) leyendo la tabla DMI/SMBIOS. | sudo dmidecode -q |
II. Dispositivos PCI y USB
| Comando | Descripción | Ejemplo |
| lspci -tv | Muestra los dispositivos conectados al bus PCI (GPU, tarjetas de red, controladores SATA) en formato árbol. | lspci -tv |
| lsusb -tv | Muestra los dispositivos conectados al bus USB (teclado, ratón, pendrives, impresoras) en formato árbol. | lsusb -tv |
III. Discos Duros y Rendimiento
| Comando | Descripción | Ejemplo |
| hdparm -i /dev/sda | Muestra las características de identificación del disco duro (modelo, número de serie, firmware). | sudo hdparm -i /dev/sda |
| hdparm -tT /dev/sda | Prueba de velocidad: lectura de caché y buffer (-T) y del disco directamente (-t). | sudo hdparm -tT /dev/sda |
IV. Ficheros /proc — Estado del Kernel en Tiempo Real
Los ficheros en /proc son pseudo-archivos que reflejan el estado actual del kernel y del sistema. No ocupan espacio en disco.
cat /proc/cpuinfo
Información detallada de la CPU: modelo, núcleos, caché, flags de instrucciones.
cat /proc/meminfo
Uso de memoria RAM: total, libre, buffers, caché, swap.
cat /proc/swaps
Ficheros y particiones swap activos con su tamaño y uso.
cat /proc/mounts
Sistema de ficheros montado actualmente (más detallado que mount).
cat /proc/interrupts
Interrupciones de hardware asignadas a la CPU por dispositivo.
cat /proc/net/dev
Adaptadores de red y estadísticas de tráfico por interfaz (bytes y paquetes).
V. Fecha y Hora del Sistema
📦 Instalar ncal: sudo apt install ncal
| Comando | Descripción | Ejemplo |
| date | Muestra la fecha y hora actual del sistema. | date |
| cal 2011 | Muestra el almanaque completo del año 2011. | cal 2011 |
| cal 07 2011 | Muestra el almanaque para el mes de julio (07) de 2011. | cal 07 2011 |
| date MMDDhhmmYYYY.ss | Ajusta la fecha y hora del sistema. Formato: Mes, Día, hora, minuto, Año, segundos. | sudo date 041217002011.00 |
| clock -w | Guarda la hora del sistema (software) en el reloj de hardware (BIOS/CMOS). | sudo clock -w |
⚡
Apagado, Reinicio y Cierre de Sesión
shutdown · halt · reboot · init · logout
🔐 Permisos: Todos los comandos de apagado y reinicio requieren sudo.
I. Comandos de Apagado (Halt)
⛔ Apagado inmediato
sudo shutdown -h now
sudo halt
sudo init 0
sudo telinit 0
Todos equivalentes — shutdown -h now es el método recomendado.
⏰ Apagado planificado
sudo shutdown -h 17:00
sudo shutdown -h +30 "Mensaje"
sudo shutdown -c
-c cancela cualquier apagado programado.
| Comando | Descripción | Requisitos |
| shutdown -h now | Apagado inmediato — método preferido y moderno. | sudo |
| halt | Apagado inmediato. Equivalente a shutdown -h now. | sudo |
| init 0 | Cambia al runlevel 0 (definido para apagar el sistema). | sudo |
| telinit 0 | Enlace simbólico a init 0. Mismo efecto. | sudo |
| shutdown -h hours:minutes & | Apagado planificado a hora específica. & lo ejecuta en segundo plano. | sudo |
| shutdown -h +minutes | Apagado en X minutos. Envía aviso a todos los usuarios. | sudo |
| shutdown -c | Cancela cualquier apagado planificado. | sudo |
Ejemplos — Apagado planificado
sudo shutdown -h 17:00
sudo shutdown -h +30 "El servidor se apagará en 30 minutos para mantenimiento."
sudo shutdown -c
II. Comandos de Reinicio
🔁 Reinicio inmediato
sudo shutdown -r now
sudo reboot
sudo init 6
shutdown -r now es el método recomendado.
🚪 Cerrar sesión
logout
O usa Ctrl+D. Solo cierra la sesión actual — no apaga la máquina.
| Comando | Descripción | Requisitos |
| shutdown -r now | Reinicio inmediato — método recomendado. | sudo |
| reboot | Reinicio inmediato. Equivalente a shutdown -r now. | sudo |
| init 6 | Cambia al runlevel 6 (definido para reiniciar el sistema). | sudo |
III. Cierre de Sesión
💡 Diferencia clave: logout solo cierra la sesión del usuario actual en esa terminal. No apaga el sistema ni afecta a otros usuarios.
🔍
grep — Global Regular Expression Print
Búsqueda de patrones en ficheros y texto
Primero creamos los ficheros de ejemplo para practicar todos los casos:
echo "Linux es un sistema operativo potente." > documento.txt
echo "Aprenderemos a usar GREP hoy." >> documento.txt
echo "grep busca texto rapido." >> documento.txt
echo "Ubuntu 24.04 es la version actual." >> documento.txt
echo "ERROR: Fallo de conexion en el puerto 80." > logs.log
echo "INFO: Usuario jose ha iniciado sesion." >> logs.log
echo "WARN: Memoria libre baja (90MB)." >> logs.log
echo "ERROR: El disco esta lleno (99%)." >> logs.log
I. Uso Básico y Opciones Fundamentales
básicoBusca el patrón en el archivo
-iIgnora mayúsculas/minúsculas
-vLíneas que NO coinciden
-wPalabra completa
-nNúmero de línea
grep "grep" documento.txt
grep busca texto rapido.
grep -i "linux" documento.txt
Linux es un sistema operativo potente.
grep -v "ERROR" logs.log
INFO: Usuario jose ha iniciado sesion.
WARN: Memoria libre baja (90MB).
grep -w -n "es" documento.txt
1:Linux es un sistema operativo potente.
II. Opciones de Contexto y Formato
-cCantidad de líneas que coinciden
-lSolo nombre del fichero
-A NN líneas DESPUÉS (After)
-B NN líneas ANTES (Before)
-C NN líneas ALREDEDOR (Context)
grep -c "ERROR" logs.log
2
grep -A 2 "Fallo de conexion" logs.log
ERROR: Fallo de conexion en el puerto 80.
INFO: Usuario jose ha iniciado sesion.
WARN: Memoria libre baja (90MB).
grep -C 1 "WARN" logs.log
INFO: Usuario jose ha iniciado sesion.
WARN: Memoria libre baja (90MB).
ERROR: El disco esta lleno (99%).
III. Búsqueda Recursiva y Múltiples Archivos
-rBusca recursivamente en subdirectorios
*Busca en todos los ficheros del directorio actual
--excludeOmite ficheros específicos
grep "Ubuntu" *
documento.txt:Ubuntu 24.04 es la version actual.
grep -r "jose"
./logs.log:INFO: Usuario jose ha iniciado sesion.
grep -r --exclude=logs.log "es"
./documento.txt:Linux es un sistema operativo potente.
./documento.txt:grep busca texto rapido.
./documento.txt:Ubuntu 24.04 es la version actual.
IV. Expresiones Regulares — BRE y ERE
Por defecto, grep usa BRE (Basic Regular Expressions). Para patrones avanzados con +, ? o |, usa -E (Extended).
-EExpresiones Regulares Extendidas (ERE) — activa |, +, ?
-FTexto fijo — desactiva regex, más rápido
^patronPatrón al inicio de línea
patron$Patrón al final de línea
grep -E "ERROR|WARN" logs.log
ERROR: Fallo de conexion en el puerto 80.
WARN: Memoria libre baja (90MB).
ERROR: El disco esta lleno (99%).
grep "^INFO" logs.log
INFO: Usuario jose ha iniciado sesion.
grep "potente.$" documento.txt
Linux es un sistema operativo potente.
BRE vs ERE:
En BRE, los metacaracteres como |, +, ? deben escaparse con \.
Con -E (ERE) se usan directamente sin escape: grep -E "ERROR|WARN"
V. Conjuntos de Caracteres — [ ] y [^ ]
Primero creamos el fichero de prueba:
echo "Texto de prueba A1" > numeros_letras.txt
echo "Texto de prueba B2" >> numeros_letras.txt
echo "Texto de prueba C3" >> numeros_letras.txt
echo "Texto de prueba D4" >> numeros_letras.txt
echo "Linea sin numeros ni mayusculas" >> numeros_letras.txt
echo "Palabra-clave" >> numeros_letras.txt
echo "Palabra_clave" >> numeros_letras.txt
echo "FIN" >> numeros_letras.txt
1. Corchetes [ ] — Conjunto de caracteres
| Sintaxis | Descripción |
| [abc] | Coincide si el carácter es a, b o c. |
| [0-9] | Coincide con cualquier dígito del 0 al 9. |
| [A-Za-z] | Coincide con cualquier letra (mayúscula o minúscula). |
| [BD][24] | B o D seguido de 2 o 4. |
grep " [BD][24]" numeros_letras.txt
Texto de prueba B2
Texto de prueba D4
grep "[0-9]$" numeros_letras.txt
Texto de prueba A1
Texto de prueba B2
Texto de prueba C3
Texto de prueba D4
grep "[aeiou]" numeros_letras.txt
Texto de prueba A1 ...(todas excepto "FIN")
2. Negación [^ ] — Todo EXCEPTO el conjunto
Cuando ^ aparece inmediatamente tras el corchete de apertura, invierte el conjunto: coincide con cualquier carácter excepto los listados.
| Sintaxis | Descripción |
| [^abc] | Cualquier carácter que NO sea a, b o c. |
| [^0-9] | Cualquier carácter que NO sea un dígito. |
| [^A-Za-z0-9 ] | Caracteres especiales/puntuación (no letra, número ni espacio). |
grep "[^0-9]$" numeros_letras.txt
Linea sin numeros ni mayusculas
Palabra-clave
Palabra_clave
FIN
grep "[^A-Za-z0-9 ]" numeros_letras.txt
Palabra-clave
Palabra_clave
grep "[^ ]clave" numeros_letras.txt
Palabra-clave
Palabra_clave
VI. Resumen Completo de Opciones grep
-iIgnora mayúsculas/minúsculas
-vInversión: NO coincide
-nNúmero de línea
-wPalabra completa
-cCuenta coincidencias
-lSolo nombre del fichero
-rRecursivo
-ERegex extendidas (ERE)
-FTexto fijo (sin regex)
-A NN líneas después
-B NN líneas antes
-C NN líneas de contexto
^patronInicio de línea
patron$Final de línea
[abc]Conjunto de caracteres
[^abc]Negación del conjunto
--excludeExcluir ficheros
💡 Combinando opciones: grep -rni "error" /var/log/ busca recursivamente, ignorando mayúsculas y mostrando número de línea — ideal para análisis de logs.