Desarrollo multiplataforma
Bash
Conceptos básicos
- Shell: Interfaz de línea de comandos que interpreta y ejecuta los comandos que el usuario ingresa.
- Bash (Bourne Again Shell): Una versión mejorada del shell Bourne, muy popular en Linux y macOS.
- Terminal: Aplicación que permite interactuar con el shell.
- Prompt: Símbolo que indica que el shell está listo para recibir comandos (ej.
$,#).
# unable to lock database
ps aux | grep pacman
sudo rm /var/lib/pacman/db.lck
# busqueda
find . -name "*.fuse_hidden"
find /home/usuario/documentos -name "*.fuse_hidden"
find ruta_del_directorio -name "*.fuse_hidden"
# patrones de coincidencia
find . -name "*documento*"
find . -name "documento?.txt"
find . -iname "*Documento*"
# lista de archivos
grep "nombre" archivo1 archivo2 archivo3 ...
grep "archivo.txt" *
echo $XDG_SESSION_TYPE
Comandos esenciales
- Navegación de directorios
pwd: Muestra el directorio actual.ls: Lista archivos y carpetas.cd <ruta>: Cambia el directorio actual.mkdir <nombre>: Crea un nuevo directorio.rmdir <nombre>: Elimina un directorio vacío.
- Gestión de archivos
touch <archivo>: Crea un archivo vacío.cp <origen> <destino>: Copia archivos o directorios.mv <origen> <destino>: Mueve o renombra archivos/directorios.rm <archivo>: Elimina un archivo.rm -r <directorio>: Elimina un directorio y su contenido.
- Visualización y edición
cat <archivo>: Muestra el contenido de un archivo.less <archivo>: Permite navegar por el contenido de un archivo.nano <archivo>: Editor de texto en terminal.vim <archivo>: Editor de texto avanzado.
Gestión de procesos
ps: Lista procesos en ejecución.top: Muestra procesos en tiempo real.kill <PID>: Termina un proceso por su ID.killall <nombre_proceso>: Termina todos los procesos con ese nombre.&: Ejecuta un comando en segundo plano.
Redirecciones y pipes
- Redirecciones
>: Redirige la salida a un archivo, sobrescribiendo.>>: Redirige la salida a un archivo, agregando.<: Toma la entrada de un archivo.
- Pipes
|: Conecta la salida de un comando como entrada de otro.- Ejemplo:
ls -l | grep "txt"
Variables y scripts
- Variables
VAR="valor": Define una variable.echo $VAR: Muestra el valor de la variable.- Variables especiales:
$?: Código de salida del último comando.$$: PID del proceso actual.$#: Número de argumentos pasados al script.$1, $2, ...: Argumentos posicionales.
- Scripts
- Archivos de texto con comandos bash ejecutables.
- Primer línea:
#!/bin/bash - Permisos:
chmod +x script.sh - Ejecución:
./script.sh
Control de flujo
- Condicionales
if [ condición ]; then ... elif ... else ... fi- Ejemplo:
bash
if [ -f archivo.txt ]; then
echo "El archivo existe"
else
echo "No existe"
fi
- Bucles
for variable in lista; do ... donewhile [ condición ]; do ... done- Ejemplo:
bash
for i in {1..5}; do
echo "Número $i"
done
Permisos y usuarios
chmod: Cambia permisos de archivos/directorios.- Ejemplo:
chmod 755 archivo.sh
- Ejemplo:
chown: Cambia propietario y grupo.- Ejemplo:
chown usuario:grupo archivo.sh
- Ejemplo:
whoami: Muestra el usuario actual.sudo: Ejecuta comandos como superusuario.
Paquetes y sistemas
- Gestores de paquetes
- Debian/Ubuntu:
apt install <paquete> - Arch Linux:
pacman -S <paquete> - Red Hat/Fedora:
dnf install <paquete>
- Debian/Ubuntu:
- Actualización del sistema
apt update && apt upgradepacman -Syu
Comandos avanzados
grep: Busca patrones en archivos.awk: Procesamiento de texto avanzado.sed: Editar flujos de texto.find: Buscar archivos y directorios.tar: Comprimir y descomprimir archivos.zip/unzip: Comprimir y descomprimir archivos zip.ssh: Conexión remota segura.scp: Copiar archivos a través de SSH.
Recursos y referencias
- Bash Guide for Beginners
- Advanced Bash-Scripting Guide
- Bash Official Documentation
Renombrar múltiples archivos con Bash
- How to rename multiple files on Linux
- 8 Methods To Rename Multiple Files At Once In Linux
- Linux Rename Multiple Files At a Shell Prompt
Comandos de renombrado
rename 'y/A-Z/a-z/' *: Convierte todos los nombres de archivo a minúsculas.rename 'y/a-z/A-Z/' *: Convierte todos los nombres de archivo a mayúsculas.rename 's/\.log$/\.txt/' *.log: Cambia la extensión.loga.txt.rename 's/\b(\w)/\U$1/g' *: Capitaliza la primera letra de cada palabra en los nombres de archivo.
Utilidades de rename
- Diferentes utilidades de
renameexisten según la distribución (Perl rename vs util-linux rename). - Permiten operaciones complejas con expresiones regulares.
- Se pueden usar en scripts para automatizar procesos de renombrado.
Buenas prácticas en organización de código y equipos
- Mantener bloques únicos y autocontenidos.
- Al hacer pull request, englobar los cambios dentro de la carpeta correspondiente.
- Escalabilidad: organizar código y equipos pensando en el crecimiento del proyecto.
- Factores de colaboración: definir flujos de trabajo claros, revisiones de código y estándares compartidos.
Flujos de trabajo de Git
- Integración continua (CI):
- Ejecutar tests automatizados.
- Comprobaciones de calidad de código.
- Añadir requisitos obligatorios en las pull requests.
- Despliegue continuo (CD):
- Automatizar despliegues a producción.
- Notificar automáticamente a equipos (Slack, email) sobre nuevas versiones.
- Gestión de proyectos:
- Herramientas como Jira, Asana, Trello.
- Automatización de tickets o tareas según ramas desplegadas en producción.
Herramientas de control de calidad
- Detectan problemas de diseño, sintaxis y funcionalidad.
- Analizan el código y sugieren refactorizaciones.
- Ejemplos: linters, SonarQube.
- Automatización de tareas:
- Calcular el número de versión automáticamente con Git.
- Ejecutar scripts de validación antes de merges o despliegues.
Recursos adicionales
¿Te gusta este contenido? Suscríbete vía RSS