Comandos esenciales de Linux: guía práctica de referencia

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

Etiquetas: grep AWK sed wc find

Publicado el 6-24 18:42