Aprende a ejecutar comandos dentro de un script y almacenar la salida en variables para reutilizarla. Con Bash y dos formas de sustitución de comandos —backtick y $(...)— podrás imprimir la ubicación actual con pwd o consultar el estado del sistema con uname -a. Además, se muestran atajos en Vim para editar más rápido.
¿Qué es la sustitución de comandos en Bash?
La idea es simple y poderosa: ejecutar un comando y usar su salida como valor dentro del programa. Esto permite encadenar tareas. Por ejemplo, recuperar la ruta con pwd y, desde ahí, crear directorios o archivos.
En Bash hay dos formas equivalentes de hacerlo:
Con backticks: comando se ejecuta y su salida se asigna a una variable.
Con $(comando): preferido por legibilidad y anidación.
Aplicarlo en un servidor, como Ubuntu Server, facilita automatizar flujos comunes. Por ejemplo, imprimir la ubicación actual y la información del kernel antes de ejecutar otras acciones.
¿Cómo se implementa con ejemplos prácticos?
El flujo mostrado parte de crear un script, editarlo y asignar salidas de comandos a variables. Luego, se imprimen con echo para comprobar resultados.
#!/bin/bash# Programa para ejecutar comandos dentro de un programa y almacenarlos en variablesubicacion_actual=`pwd`# Uso de backticksinfo_kernel=$(uname -a)# Uso de $(comando)echo"La ubicación actual es la siguiente: $ubicacion_actual"echo"Información del kernel: $info_kernel"
¿Cómo capturar la ubicación actual con pwd?
Usa backticks para asignar la salida de pwd.
Asigna a una variable y reutiliza en tu flujo.
ubicacion_actual=`pwd`
¿Cómo obtener información del kernel con uname -a?
Emplea $(comando) para mayor claridad.
Muestra la versión y detalles del kernel.
info_kernel=$(uname -a)
¿Cómo imprimir y ejecutar el script?
Muestra valores con echo para verificar.
Lista archivos con ls y ejecuta con ./nombre_script.
echo"La ubicación actual es la siguiente: $ubicacion_actual"echo"Información del kernel: $info_kernel"ls./tema_d5.sh
Puntos clave:
Sustitución de comandos: integra salidas en variables para reusar en sentencias posteriores.
pwd: evita escribir rutas completas al trabajar con el directorio actual.
uname -a: expone datos críticos del kernel para diagnósticos rápidos.
¿Qué atajos de edición en Vim aceleran el flujo?
Durante la edición, se enfatizan atajos para borrar y navegar texto de forma eficiente. Estos comandos permiten limpiar y ajustar el contenido antes de probar el script.
dd: borra una línea.
Ndd (ej. 18dd): borra N líneas seguidas.
Control + B: activa Visual Block para seleccionar por bloques.
D tras seleccionar: elimina la selección.
U: deshacer cambios.
Insertar: entra a modo inserción para escribir.
$: ir al final de la línea.
Escape, Shift + W, Q: guardar y salir.
Asimismo, el flujo integra tareas de consola:
cp para copiar archivos y reutilizar estructura.
ls para verificar permisos y presencia del script.
./archivo para ejecutar el programa actual.
La clave está en combinar sustitución de comandos, variables y edición ágil en Vim para lograr scripts claros, reutilizables y listos para automatizar tareas.
¿Tienes dudas sobre backticks o $(...)? Comparte un comentario con tu caso y lo revisamos juntos.
Tips hasta ahora de Vim (presionando antes la tecla Esc):
i = insertar texto
:q = salir sin guardar
-:q! = forzar salida
:w = guardar
-:wq = guardar y salir
-u = Ctrl + z
-yy = copiar una sola linea
-p = pegar
-dd = eliminar una linea
-(numero) + dd = borrar el numero de lineas escrito
-(numero) + yy = copiar el numero de lineas escrito
-Ctrl + v = seleccionar texto
Deja de prestarle atencion a esas bobadas, jejejeje
Comparto cheat sheet de vim
cheat sheet de vim
es muy practico al momento de estar usando vim y se aprende mas rápidos los comandos como los basicos:
ejemplo
:w – Permite guardar el fichero.
:q – Salir de Vim. Si el fichero ha sido modificado pero no se ha guardado, nos advertirá y no podremos salir de Vim usando este comando.
:q! – Salir de Vim, descartando posibles cambios no guardados que se hayan realizado en el fichero.
:wq – Hace el guardado del archivo y después sale de Vim.
La sintaxis $() es el estándar POSIX, y soportado por BASH, Korn Shell, ash, Dash, Zsh, Busybox, etc.
El uso de backticks es legado y no debería ser utilizado, sigue ahí solo para compatibilidad con versiones muy viejas de Sh.
para los que no sepan que es el sucre, fue la módena oficial del Ecuador hasta el año 2000, como el profe es de Quito imagino que se acostumbro jeje pero todo bien, que buena explicación... ha soy de Ecuador por cierto :V
Para los que les gustan los tips de vim les recomientdo que en su terminal tipeen
vimtutor
Esto abre un archivo en vim, con ejercicios para aprender a usar vim.
El ejercicio completo debe llevar unos 10 minutos, y enseña movimientos, atajos y cosas útiles.
echo "La ubicacion es: $ubicacionActual"
echo "La info del kernel es: $infokernel"
echo "La hora actual es:$horaCreacion"
touch $archivoBK & echo "Se creo el archivo:$archivoBK"
En Bash, la sustitución de comandos en variables permite ejecutar comandos y almacenar sus resultados en una variable. Esto es útil cuando necesitas usar la salida de un comando como parte de otro comando o proceso.
### Cómo Funciona
1. **Sustitución de Comandos Básica**
La sintaxis básica para la sustitución de comandos es:
```bash
variable=$(comando)
```
Aquí, comando se ejecuta, y su salida se asigna a variable.
**Ejemplo:**
```bash
# Asigna la fecha actual a la variable
current_date=$(date)
echo "Today's date is: $current_date"
```
2. **Usando Backticks**
También puedes usar backticks (`) para la sustitución de comandos, pero es menos recomendado en comparación con la sintaxis $() debido a problemas de legibilidad y anidamiento.
**Ejemplo:**
```bash
# Asigna la fecha actual a la variable usando backticks
current_date=date
echo "Today's date is: $current_date"
```
### Ejemplos Comunes
1. **Obtener el Nombre del Usuario Actual**
```bash
current_user=$(whoami)
echo "Current user is: $current_user"
```
2. **Contar el Número de Archivos en un Directorio**
```bash
file_count=$(ls | wc -l)
echo "Number of files in the directory: $file_count"
```
3. **Encontrar la Ruta Absoluta del Script**
```bash
script_path=$(readlink -f "$0")
echo "The absolute path of the script is: $script_path"
echo "Free space on the root filesystem: $free_space"
```
### Notas Importantes
- **Espacios en Blanco**: Asegúrate de no incluir espacios alrededor del = en la asignación.
- **Comandos Anidados**: Puedes anidar sustituciones de comandos si es necesario. Por ejemplo:
```bash
top_process=$(ps aux | sort -nrk 3,3 | head -1)
echo "Top process by CPU usage: $top_process"
```
- **Errores de Comando**: Si el comando dentro de $() falla, la variable contendrá un valor vacío. Es útil verificar si el comando tuvo éxito antes de usar su salida.
Uno de los errores más comunes es tener errores al escribir las variables cuando las llamas, tengas cuidado con eso porque ese fue el error por el cual no funcionaba correctamente mi script. Saludos
# !/bin/bash
# Programa para revisar como ejecutar comados dentro de un programa y almacenar en una variable para su posterior utilización
# Autor:MartinDavilaubicacionActual=`pwd`infoKernel=$(uname -a)echo "La ubicación actual es la siguiente: $ubicacionActual"echo "Información del Kernel: $infoKernel"```
una cosa no trivial.
es que cuando se definen las variables no debe haber espacios alrededor del signo igual
asi funciona:
ubicacionActual=`pwd`infoKernel=$(uname -a)
asi no:
ubicacionActual =`pwd` infoKernel =$(uname -a)
Para mostrar y recordar como manejar archivos desde la terminal.
Con el comando cp copias el archivo y el contenido
➜ cp archivo.sh5-archivo.sh
Copias el archivo y con el mismo nombre, 🤦
hay que renombrarlo.