Guía de Scripting en Bash y PowerShell
Indíce
- ¿Qué es el Scripting en Bash?
- Sintaxis Básica de Bash
- Comandos Comunes de Bash
- Introducción al Scripting en PowerShell
- Sintaxis Básica de PowerShell
- Comandos Comunes de PowerShell
- Comparativa entre Bash y PowerShell
1. ¿Qué es el Scripting en Bash?
El scripting en Bash se refiere a la escritura de secuencias de comandos (scripts) en el lenguaje de shell de Bash. Bash es el intérprete de comandos predeterminado en la mayoría de las distribuciones de Linux y Unix. Los scripts de Bash permiten automatizar tareas repetitivas, administrar sistemas y ejecutar comandos del sistema operativo mediante secuencias programadas.
Características principales de Bash:
- Interactividad: Permite la ejecución de comandos uno por uno.
- Automatización: Permite crear scripts para tareas repetitivas.
- Compatibilidad: Funciona en sistemas Unix y Linux.
- Lenguaje de programación: Bash es un lenguaje de scripting que incluye estructuras de control, variables, funciones y más.
Uso de Bash en sistemas Linux/Unix:
- Es ampliamente utilizado en servidores para administrar sistemas y realizar tareas de mantenimiento.
- Ideal para la automatización de tareas administrativas como copias de seguridad, actualización de sistemas, etc.
2. Sintaxis Básica de Bash
Variables en Bash
Las variables en Bash se definen sin necesidad de especificar su tipo.
#!/bin/bash
nombre="Juan"
echo "Hola, $nombre!"
Para variables de solo lectura:
readonly PI=3.1416
echo "El valor de PI es $PI"
Para eliminar una variable:
unset nombre
Estructuras de Control
Condicional if
#!/bin/bash
num=10
if [ $num -gt 5 ]; then
echo "El número es mayor que 5"
else
echo "El número es 5 o menor"
fi
case (Switch en otros lenguajes)
#!/bin/bash
echo "Ingrese un número: "
read num
case $num in
1) echo "Elegiste uno";;
2) echo "Elegiste dos";;
*) echo "Opción no válida";;
esac
Bucles en Bash
Bucle for
#!/bin/bash
for i in {1..5}; do
echo "Número: $i"
done
Bucle while
#!/bin/bash
contador=1
while [ $contador -le 5 ]; do
echo "Iteración $contador"
((contador++))
done
Bucle until
#!/bin/bash
contador=1
until [ $contador -gt 5 ]; do
echo "Iteración $contador"
((contador++))
done
Funciones en Bash
#!/bin/bash
mi_funcion() {
echo "Hola desde la función!"
}
mi_funcion
Función con parámetros
#!/bin/bash
suma() {
resultado=$(( $1 + $2 ))
echo "La suma es: $resultado"
}
suma 5 7
Función con retorno de valor
#!/bin/bash
multiplica() {
echo $(( $1 * $2 ))
}
resultado=$(multiplica 3 4)
echo "El resultado de la multiplicación es: $resultado"
3. Comandos comunes de Bash
ls - Listar archivos y directorios
ls # Lista archivos y directorios
ls -l # Lista con detalles
ls -a # Muestra archivos ocultos
cd - Cambiar de directorio
cd /ruta/destino # Cambia al directorio especificado
cd .. # Sube un nivel
cd ~ # Va al directorio home
echo - Imprimir texto en la terminal
echo "Hola, mundo" # Muestra el mensaje
grep - Buscar patrones en archivos
grep "texto" archivo.txt # Busca "texto" en archivo.txt
grep -i "texto" archivo.txt # Búsqueda sin distinguir mayúsculas/minúsculas
pwd - Mostrar directorio actual
pwd # Muestra la ruta completa del directorio actual
mkdir - Crear un directorio
mkdir nuevo_directorio # Crea un directorio nuevo
rm - Eliminar archivos o directorios
rm archivo.txt # Elimina un archivo
rm -r directorio/ # Elimina un directorio y su contenido
cp - Copiar archivos o directorios
cp archivo.txt /ruta/destino # Copia un archivo
cp -r carpeta/ /ruta/destino # Copia un directorio
mv - Mover o renombrar archivos
mv archivo.txt /ruta/destino # Mueve un archivo
mv viejo_nombre.txt nuevo_nombre.txt # Renombra un archivo
cat - Mostrar contenido de archivos
cat archivo.txt # Muestra el contenido del archivo
find - Buscar archivos
find /ruta -name "archivo.txt" # Busca archivo.txt en /ruta
4. Introducción al Scripting en PowerShell
¿Qué es PowerShell?
PowerShell es un lenguaje de scripting y una interfaz de línea de comandos desarrollado por Microsoft. Se basa en .NET y permite automatizar tareas del sistema, administrar configuraciones y ejecutar comandos de manera eficiente.
Sistemas operativos compatibles
PowerShell está disponible en: - Windows (preinstalado desde Windows 7 y Server 2008 R2) - Linux (mediante PowerShell Core) - macOS (mediante PowerShell Core)
Características principales
- Basado en objetos: A diferencia de otros intérpretes de comandos, PowerShell maneja objetos en lugar de texto.
- Cmdlets: Comandos especializados para realizar tareas específicas.
- Automatización: Permite la creación de scripts avanzados para gestionar sistemas y redes.
- Integración con .NET: Facilita la extensibilidad y el acceso a recursos del sistema.
- Remoting: Ejecuta comandos en máquinas remotas de manera segura.
5. Sintaxis Básica de PowerShell
Variables
Las variables en PowerShell se definen con el prefijo $.
$nombre = "Juan"
$edad = 30
Write-Output "Nombre: $nombre, Edad: $edad"
Estructuras de Control
Condicional if-else
$numero = 10
if ($numero -gt 5) {
Write-Output "El número es mayor que 5"
} else {
Write-Output "El número es 5 o menor"
}
Bucle for
for ($i = 1; $i -le 5; $i++) {
Write-Output "Iteración $i"
}
Bucle while
$contador = 1
while ($contador -le 3) {
Write-Output "Contador: $contador"
$contador++
}
Funciones
Las funciones en PowerShell se definen con function.
function Saludar {
param([string]$nombre)
Write-Output "Hola, $nombre!"
}
Saludar "Carlos"
6. Comandos Comunes de PowerShell
PowerShell es una potente herramienta de línea de comandos que permite administrar sistemas y automatizar tareas. A continuación, se presentan algunos de los comandos más utilizados en PowerShell junto con ejemplos prácticos de cómo se usan.
Get-Command
El comando Get-Command se utiliza para obtener una lista de todos los cmdlets, funciones y alias disponibles en PowerShell.
Ejemplo:
Get-Command *proceso*
Set-Item
El comando Set-Item se utiliza para cambiar el valor de un elemento, como un archivo, una carpeta o una variable.
#Este comando cambiará el contenido de "archivo.txt" al texto "Nuevo contenido del archivo"
Set-Item -Path "C:\\Mis Archivos\\archivo.txt" -Value "Nuevo contenido del archivo"
#Este comando cambiará el valor de la variable $miVariable a "Nuevo valor"
$miVariable = "Valor inicial"
Set-Item -Path Variable:\\miVariable -Value "Nuevo valor"
Get-Help
El comando Get-Help se utiliza para obtener información detallada sobre cualquier cmdlet, función o comando en PowerShell.
Get-Help Get-Command #Mostrará detalles de cómo usar el cmdlet Get-Command
Get-Help Get-Command -Examples #Mostrará ejemplos de uso del cmdlet
Get-Item
El comando Get-Item se utiliza para obtener información sobre un archivo, carpeta o registro.
Get-Item -Path "C:\\Mis Archivos\\archivo.txt"
Set-Location
El comando Set-Location se utiliza para cambiar el directorio actual.
Set-Location -Path "C:\\Mis Archivos"
Get-Process
El comando Get-Process se utiliza para obtener información sobre los procesos que se están ejecutando en el sistema.
Get-Process #General
Get-Process -Name "notepad" #Un proceso específico
Stop-Process
El comando Stop-Process se utiliza para detener un proceso en ejecución.
Stop-Process -Name "notepad"
Get-Service
El comando Get-Service se utiliza para obtener información sobre los servicios de Windows que están instalados en el sistema.
Get-Service #General
Get-Service -Name "wuauserv" #Un servicio específico
Start-Service
El comando Start-Service se utiliza para iniciar un servicio detenido.
Start-Service -Name "wuauserv"
New-Item
El comando New-Item se utiliza para crear nuevos archivos o carpetas.
New-Item -Path "C:\\Mis Archivos" -Name "NuevoArchivo.txt" -ItemType "File" #Archivo
New-Item -Path "C:\\Mis Archivos" -Name "NuevaCarpeta" -ItemType "Directory" #Carpeta
7. Comparativa entre Bash y PowerShell
A continuación se muestra una breve comparación entre Bash y PowerShell, destacando las principales diferencias y similitudes.
| Característica | Bash | PowerShell |
|---|---|---|
| Sistema operativo principal | Principalmente Linux y macOS, pero también en Windows con WSL | Principalmente Windows, pero también disponible en Linux y macOS |
| Paradigma de programación | Basado en comandos y scripts, estilo UNIX | Basado en objetos y scripting, más orientado a .NET |
| Sintaxis | Simples comandos textuales y scripts de shell | Sintaxis basada en cmdlets y objetos |
| Manipulación de texto | Manipulación de texto simple con herramientas como awk, sed, etc. |
Manipulación de texto con objetos y cmdlets como Select-String |
| Comandos | Utiliza comandos tradicionales de Unix/Linux (ls, cat, grep, etc.) | Utiliza cmdlets, que son comandos estructurados como Get-Command |
| Tipo de datos | Maneja cadenas y variables básicas | Maneja objetos completos, incluidos tipos complejos como arrays y tablas |
| Pipe (tuberías) | Los pipes pasan texto entre los comandos | Los pipes pasan objetos entre cmdlets |
| Compatibilidad | Compatible con la mayoría de herramientas UNIX/Linux | Alta compatibilidad con el ecosistema de Windows y cmdlets .NET |
| Redirección | Redirección de salida estándar con > y >> |
Redirección usando Out-File, Out-String y otros cmdlets |
| Automatización de tareas | Utiliza scripts sencillos y herramientas externas para la automatización | Potente motor de scripting orientado a tareas de administración de sistemas |
| Interactividad | Terminal de línea de comandos tradicional | Consola interactiva con soporte para comandos y objetos |
| Extensibilidad | Ampliable con scripts y herramientas de terceros | Extensible con módulos adicionales, soporte para extensiones en .NET |
| Orientación | Orientado a tareas de administración y scripting en sistemas basados en UNIX | Orientado a la administración de sistemas, especialmente en entornos Windows |
| Ejemplo de comando básico | ls -l para listar archivos en directorio |
Get-ChildItem para listar archivos en directorio |
Conclusión
- Bash es más adecuado para tareas en sistemas Unix/Linux y aquellos que prefieren la simplicidad y la velocidad.
- PowerShell es más adecuado para usuarios de Windows o aquellos que trabajan en entornos de administración de sistemas complejos y necesitan trabajar con objetos y un ecosistema .NET.