Comandos esenciales de Linux: guía práctica de referencia
Herramientas de búsqueda y procesamiento de texto
grep
grep (global search regular expression and print line) es una potente herramienta de búsqueda de texto que permite localizar patrones usando expresiones regulares e imprimir las líneas que coinciden.
Opciones principales
-a No ignorar datos binarios.
-A<n> Mostrar también las n líneas posteriores a la coincidencia.
-b Mostrar también las n líneas anteriores a la coincidencia.
-c Contar el número de líneas que coinciden.
-C<n> Mostrar n líneas antes y después de la coincidencia.
-d<acción> Especificar comportamiento para directorios.
-e<patrón> Usar patrón como expresión de búsqueda.
-E Interpretar patrón como expresión regular extendida.
-f<archivo> Obtener patrones desde un archivo.
-F Interpretar patrón como lista de cadenas fijas.
-G Interpretar patrón como expresión regular básica.
-h No mostrar nombre de archivo en resultados.
-H Mostrar nombre de archivo en resultados.
-i Ignorar diferencias entre mayúsculas y minúsculas.
-l Listar solo nombres de archivos con coincidencias.
-L Listar solo nombres de archivos sin coincidencias.
-n Mostrar número de línea.
-q Modo silencioso, sin salida.
-R/-r Búsqueda recursiva en directorios.
-s Suprimir mensajes de error.
-v Invertir coincidencia (mostrar líneas que no coinciden).
-w Coincidencia de palabras completas.
-x Coincidencia de líneas completas.
-o Mostrar solo la parte coincidente.
wc
wc (word count) permite contar bytes, palabras o líneas de un archivo. Si no se especifiac archivo o se usa "-", lee desde la entrada estándar.
Sintaxis
wc [opciones] [archivo]
Opciones
-c Mostrar solo conteo de bytes.
-l Mostrar solo conteo de líneas.
-w Mostrar solo conteo de palabras.
awk
awk es un lenguaje de programación diseñado para procesar texto y datos en sistemas Linux/Unix. Puede recibir datos desde la entrada estándar, archivos o la salida de otros comnados. Soporta funciones definidas por el usuario y expresiones regulares dinámicas.
Formato de comandos
awk [opciones] 'script' var=valor archivo(s)
awk [opciones] -f scriptfile var=valor archivo(s)
Opciones comunes
- -F fs Especifica el separador de campos de entrada (p. ej., -F:).
- -v var=valor Asigna una varible definida por el usuario.
- -f scriptfile Lee comandos awk desde un archivo.
- -m[fr] val Establece límites internos (mf: bloques máximos; mr: registros máximos).
Estructura básica de un script awk
awk 'BEGIN{ print "inicio" } pattern{ comandos } END{ print "fin" }' archivo
Un script awk consta de tres bloques opcionales:
- BEGIN: Se ejecuta antes de leer cualquier línea.
- pattern: Se ejecuta para cada línea que coincide con el patrón.
- END: Se ejecuta después de procesar todas las líneas.
Ejemplo
echo -e "Línea A\nLínea B" | awk 'BEGIN{ print "Inicio" } { print } END{ print "Fin" }'
Variables internas de awk
$n Campo n del registro actual.
$0 Línea de texto completa del registro actual.
ARGC Número de argumentos de línea de comandos.
ARGIND Índice del archivo actual en la línea de comandos.
ARGV Array con argumentos de línea de comandos.
CONVFMT Formato de conversión numérica (predeterminado: %.6g).
ENVIRON Array asociativo con variables de entorno.
ERRNO Descripción del último error del sistema.
FIELDWIDTHS Lista de anchos de campo separados por espacios.
FILENAME Nombre del archivo de entrada actual.
FNR Número de registro relativo al archivo actual.
FS Separador de campos (predeterminado: espacio).
IGNORECASE Si es verdadero, ignora mayúsculas/minúsculas.
NF Número de campos en el registro actual.
NR Número de registro (línea) actual.
OFMT Formato de salida numérica (predeterminado: %.6g).
OFS Separador de campos de salida (predeterminado: espacio).
ORS Separador de registros de salida (predeterminado: nueva línea).
RS Separador de registros (predeterminado: nueva línea).
RSTART Posición inicial de la cadena coincidente con match().
RLENGTH Longitud de la cadena coincidente con match().
SUBSEP Separador de subíndices de array (predeterminado: \034).
sed
sed (stream editor) es un editor de flujo utilizado para transformar texto, ideal para trabajar con expresiones regulares.
Formato de comandos
sed [opciones] 'comando' archivo(s)
sed [opciones] -f scriptfile archivo(s)
Opciones
-e<script> Ejecuta script desde la opción.
-f<archivo> Ejecuta script desde archivo.
-h, --help Muestra ayuda.
-n, --quiet Modo silencioso (solo muestra resultados procesados).
-V, --version Muestra versión.
Comandos de sed
a\ Inserta texto debajo de la línea actual.
i\ Inserta texto encima de la línea actual.
c\ Reemplaza líneas seleccionadas con nuevo texto.
d Elimina líneas seleccionadas.
D Elimina la primera línea del bloque de patrón.
s Reemplaza caracteres especificados.
h Copia contenido del bloque de patrón al buffer.
H Agrega contenido del bloque de patrón al buffer.
g Reemplaza texto del bloque de patrón con buffer.
G Agrega buffer después del texto del bloque de patrón.
l Lista caracteres no imprimibles.
n Lee la siguiente línea de entrada.
N Agrega siguiente línea al bloque de patrón.
p Imprime líneas del bloque de patrón.
P Imprime primera línea del bloque de patrón.
q Sale de sed.
b etiqueta Rama a etiqueta en el script.
r archivo Lee líneas desde archivo.
t etiqueta Rama condicional (si hubo sustitución).
T etiqueta Rama condicional (si no hubo sustitución).
w archivo Escribe y agrega bloque de patrón al archivo.
W archivo Escribe primera línea del bloque al archivo.
! Invierte selección.
= Imprime número de línea actual.
# Comentario hasta nueva línea.
Indicadores de sustitución en sed
g Reemplazo global en toda la línea.
p Imprime la línea.
w Escribe la línea en un archivo.
x Intercambia texto del bloque de patrón con buffer.
y Traduce caracteres (no usa expresiones regulares).
\1 Referencia a subcadena capturada.
& Referencia a cadena coincidente.
Metacaracteres de sed
^ Inicio de línea (ej: /^sed/).
$ Fin de línea (ej: /sed$/).
. Cualquier carácter excepto nueva línea.
* Cero o más repeticiones.
[] Rango de caracteres (ej: /[Ss]ed/).
[^] Caracteres fuera del rango.
\(..\) Captura de subcadena.
& Referencia a coincidencia completa.
\< Inicio de palabra.
\> Fin de palabra.
x\{m\} Exactamente m repeticiones de x.
x\{m,\} Al menos m repeticiones de x.
x\{m,n\} Entre m y n repeticiones de x.
Gestión de archivos y directorios
Comandos básicos
ls Lista contenido del directorio.
tree Muestra directorios en forma de árbol.
cp Copia archivos o directorios.
mv Mueve o renombra archivos/directorios.
rmdir Elimina directorios vacíos.
mkdir Crea directorios.
rm Elimina archivos o directorios (-r para recursivo).
pwd Muestra ruta absoluta del directorio actual.
dirs Muestra pila de directorios actual.
pushd Agrega directorio a la pila.
popd Elimina directorio de la pila.
ln Crea enlaces (hard o simbólicos con -s).
install Instala o actualiza software.
Gestión de permisos
chmod Cambia permisos de archivos/directorios.
chown Cambia propietario y grupo.
chgrp Cambia grupo.
Compresión y empaquetado
tar -zxvf archivo.tar.gz Descomprime tar.gz.
gzip Comprime archivos (extensión .gz).
unzip archivo.zip Descomprime archivos zip.
Opciones de unzip
-c Muestra resultado en pantalla con conversión.
-f Actualiza archivos existentes.
-l Lista contenido del zip.
-p Similar a -c sin conversión.
-t Verifica integridad del zip.
-u Actualiza y extrae archivos nuevos.
-v Muestra información detallada.
-z Muestra solo comentarios del zip.
-a Conversión necesaria para archivos de texto.
-b Sin conversión de caracteres.
-C Distingue mayúsculas/minúsculas en nombres.
-j Ignora rutas de directorios originales.
-L Convierte nombres a minúsculas.
-n No sobrescribe archivos existentes.
-o Sobrescribe sin preguntar.
-P<pass> Usa contraseña.
-q Modo silencioso.
-d<dir> Directorio de destino.
-x<arch> Excluye archivos específicos.
Gestión de procesos y sistema
top Muestra información de CPU y memoria.
ps Reporta estado de procesos.
kill Termina procesos (SIGTERM=15, SIGKILL=9).
crontab Programa tareas periódicas.
sleep Pausa por tiempo especificado.
service Gestiona servicios del sistema.
chkconfig Configura servicios en niveles de ejecución.
Red y comunicaciones
netstat Muestra estado de red del sistema.
telnet Conexión remota (insegura, reemplazada por SSH).
ssh Conexión remota segura con cifrado.
wget Descarga archivos desde URL (con reanudación automática).
mail Herramienta de correo electrónico desde terminal.
Gestión de paquetes
rpm Gestor de paquetes RPM.
yum Gestor de paquetes basado en RPM (Fedora, RedHat, SUSE).
yum install mysql-server Instala paquete.
yum remove libnuma.so.1 Elimina paquete.
Variables de entorno y configuración
source /etc/profile Recarga variables de entorno.
vim /etc/profile Edita archivo de perfil del sistema.
# Modos de vim:
# i Modo inserción
# shift+q Salir
# x Guardar y salir
# q! Salir sin guardar (forzado)
# wq Guardar y salir
Estructuras de control en scripts
case
case valor in
patron1)
comando1
comando2
;;
patron2)
comando1
comando2
;;
esac
if
if [ condicion ]; then
comandos
else
comandos
fi
Operadores de comparación numérica
| Operador | Significado |
|---|---|
| -eq | Igual |
| -ne | Distinto |
| -gt | Mayor que |
| -ge | Mayor o igual |
| -lt | Menor que |
| -le | Menor o igual |
for
for var in item1 item2 ...; do
comandos
done
while
while condicion; do
comandos
done
Comandos útiles adicionales
cat Muestra contenido de archivos.
vi/vim Editor de texto.
more Visualizador de archivos paginado.
tail Muestra últimas líneas de un archivo (10 por defecto).
comm Compara dos archivos (intersección, diferencia).
find Busca archivos (ej: find / -name mysql.sock).
whereis Localiza binarios, fuentes y manuales.
read Lee entrada del usuario en scripts.
Ejemplos prácticos de instalación y configuración
# Cambiar de directorio
cd /usr/local/mysql
# Crear directorio
mkdir /ruta/directorio
# Descomprimir
tar -zxvf jdk-8u144-linux-x64.tar.gz
# Copiar archivo
cp jdk-8u144-linux-x64.tar.gz /usr/local/java/
# Eliminar archivo
rm -rf jdk-8u144-linux-x64.tar.gz
# Editar perfil del sistema
vim /etc/profile
# Recargar variables de entorno
source /etc/profile
# Instalar paquete
yum install mysql-server
# Eliminar paquete
yum remove libnuma.so.1
# Crear enlace simbólico
ln -s /usr/local/apache-maven-3.3.9/ maven
# Buscar ubicación de mysql
whereis mysql
find / -name mysql.sock
# Cambiar permisos de directorio
chown -R root:root /var/lib/mysql
chown -R root /usr/local/mysql/data
chgrp -R root /usr/local/mysql/data
# Ver permisos
ls -la /usr/local/mysql/data
# Mostrar directorio actual
pwd
# Inicializar MySQL
mysqld --initialize --user=mysql
bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
# --basedir: ruta de instalación de MySQL
# --datadir: ruta donde se almacenan los datos
# Reiniciar servicio MySQL
service mysqld restart
# Ver procesos de MySQL
ps -aux|grep mysql
# Ver paquetes instalados de MySQL
rpm -qa|grep -i mysql
# Eliminar paquete específico
rpm -ev MySQL-client-5.5.25a-1.rhel5
# Agregar mysqld al PATH
ln -s /usr/local/mysql/mysql-5.7.13-linux-glibc2.5-x86_64/bin/
# Ver servicios configurados
chkconfig --list
chkconfig --list atd
# Deshabilitar servicio en niveles 1-5
chkconfig --levels 12345 NetworkManager off
# Ver servicios activos
chkconfig --list |grep on
# Detener servicio temporalmente
service sshd stop
# Ver estado de un servicio
service nombre status