grep: Búsqueda y filtrado de texto
Utilizado comúnmente para buscar patrones dentro de archivos o salidas de comandos. Ejemplos prácticos:
- Ver procesos Java:
ps -ef | grep java - Obtener solo el ID del proceso Java:
ps -ef | grep java | grep -v grep | awk '{print $2}'
| Opción | Descripción |
|---|---|
| -c | Muestra el número de líneas que coinciden con el patrón. |
| -i | Ignora diferencias entre mayúsculas y minúsculas. |
| -l | Muestra solo los nombres de archivos que contienen coincidencias. |
| -n | Mostrar la línea junto con su número. |
| -v | Selecciona líneas que NO coinciden con el patrón (exclusión). |
| -w | Coincidencia exacta de palabrsa completas. |
| -r | Búsqueda recursiva en directorios. |
ln: Creación de enlaces simbólicos
Permite crear accesos directos a archivos o directorios.
ln -s /usr/local/redis /home/yuxiaobin/redis
Este comando crea un enlace simbólico llamado redis en /home/yuxiaobin/ que apunta al directorio /usr/local/redis.
Nota: El flag -s indica enlace simbólico; sin él, se crea un enlace duro (no compatible con directorios).
iptables: Configuración temopral de reglas de firewall
# Ver listado de reglas
iptables -L -n
# Abrir puerto TCP temporalmente
iptables -A INPUT -p tcp --dport 61616 -j ACCEPT
# Persistir regla tras reinicio
vi /etc/rc.d/init.d/iptables
service iptables restart
firewall-cmd: Gestión de firewalls con systemd
# Estado del servicio
firewall-cmd --state
# Detener el servicio
systemctl stop firewalld.service
# Deshabilitar inicio automático
systemctl disable firewalld.service
# Añadir puerto permanentemente
sudo firewall-cmd --add-port=8002/tcp --permanent
read: Capturar entrada desde terminal
Permite solicitar datos al usuario durante la ejecución del script.
#!/bin/bash
echo "Ingrese el nombre de la rama:"
read branch_name
if [ -z "$branch_name" ]; then
branch_name="master"
fi
echo "Rama seleccionada: $branch_name"
git checkout "$branch_name"
Con mensaje personalizado:
read -p "¿Desea continuar? (y/n): " respuesta
if [[ "$respuesta" == "y" || "$respuesta" == "Y" ]]; then
echo "Procediendo..."
elif [[ "$respuesta" == "n" || "$respuesta" == "N" ]]; then
echo "Operación cancelada."
else
echo "Entrada inválida."
fi
Argumentos en scripts: Uso de $1, $2...
Recibir parámetros al llamar al script.
#!/bin/bash
if [ -z "$1" ]; then
echo "Uso: $0 <nombre>"
else
echo "Hola $1, ¿cómo estás hoy?"
fi
</nombre>
for: Bucle para iterar sobre elementos
Ejemplo: mover y copiar archivos SQL que contienen "11" en su nombre.
#!/bin/bash
for file in $(ls . | grep '.sql' | grep '11'); do
mv copy/$file copy/${file}.bak
cp $file copy/
done
Funcionamiento: - Busca archivos .sql que contengan "11". - Renombra sus versiones en copy/ añadiendo .bak. - Copia los originales a la carpeta copy/.
useradd: Crear nuevos usuarios
Crear un nuevo usuario con configuraciones predeterminadas.
useradd tomcat -U -m -s /bin/bash
passwd tomcat
Esto crea un usuario llamado tomcat, con grupo asociado, directorio personal y shell por defecto. Se requiere establecer contraseña con passwd.
awk: Procesamiento avanzado de datos estructurados
Herramienta poderosa para aálisis de texto, especialmente con archivos CSV o tabulados.
- Imprimir toda la línea:
awk '{print $0}' archivo.csv - Usar separador personalizado:
awk -F ',' '{print $1}' archivo.csv - Número de campos (NF) y filas (NR): ```
awk -F ',' '{total += $8} END {print "Total:", total, "Promedio:", total/NR}' archivo.csv
- Filtrar por expresión regular: ```
awk -F '\t' '/The/ {print $15}' libro.tsv
- Comparación exacta: ```
awk -F ',' '$7 == "Marítimo" {print $1, $2, $3, $7}' datos.csv
- Variables y cálculos acumulativos: ```
awk -F ',' '{total += $8; printf "%s\t%s\t%-5s\t%s\n", $1, substr($2,1,2), $3, $NF} END {printf "Total: %s\tPromedio: %.2f\n", total, total/NR}' datos.csv
Complementos útiles
- Mostrar primeras 200 líneas de un archivo:
head xxx.log -n 200 - Reemplazar texto en líneas específicas con sed:
sed -i '1,10s/12.02.00/11.2.0.4/g' xxx.dmp