Bash: ejecutar comandos en variables
Clase 9 de 43 • Curso de Programación en Bash Shell
Contenido del curso
Clase 9 de 43 • Curso de Programación en Bash Shell
Contenido del curso
Esteban Martini
Gonzalo Gramaglia
Javier Andres Muro Reyes
Daniel Alejandro Salazar Martinez
Irving Juárez
Andrés Felipe Carreño
Carlos Mario Mora Restrepo
Fredy Mendoza Vargas
Valente IA
Nicolas Molina
Axel Alberto Jimenez
CODEIT SOL
Juan Sebastián Ricaurte Macías
Milton Castañeda
Carlos Javier García Contreras
Jhon Jairo Morales Rodriguez
Diego Fernando Marin Lozano
Fernando Robles
Emerson Cedeño
Sergui Morejón
Carlos Morocho
Ramón Morales
Mario Alejandro Crespo Reyes
Victoriano Emilio Juárez Tacam
DANIEL SANTIAGO MOLINA IBAÑEZ
Juan Cruz Fernández
Jesanchez
David Herrera
Mario Alexander Vargas Celis
David Camilo Muñoz
KEVIN FIGUEROA
Pedro Ortiz
Edison Renato Valdez Vega
Martin DAVILA
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)
Con razón! No sabía por qué no me funcionaba el script jajaja Te agradezco un montón por el aporte :)
muchisimas gracias por ese aporte
con espacion me salia este error: ./comandos.sh: line 3: /root/platzi-bash/cap6-sustitucion: Is a directory
Tips hasta ahora de Vim (presionando antes la tecla Esc):
Tips que valen oro
Muchas gracias Daniel por la información.
El manejo de vim es ideal para dedicarle un curso
Totalmente!
X2
Ya entiendo por que funciona el docker ps $(docker ps -qa)
No será "docker rm $(docker ps -qa)"?
Por favor deje de usar la palabra tema para cada cosa
Es buen docente, pero si es bastante fastidio que diga "tema" como 90409304834 veces por video
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.
Bueno yo tuve problema sacando el backtick caracter. (`) Para los que tengan el mismo problema se saca con el ALT+96
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 borrar todo debajo del cursor esc + d + shift(sin soltar) + g
dicho de otra forma: esc + d + G 😜
Para ejecutar comandos en el script se usa backtics (``) o $()
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
y que es EL TEMA del "El Tema"?
y si borró todo en el archivo como primera acción, con que intención hizo la copia ? jajajajaj 🤷♂️
Para mostrar y recordar como manejar archivos desde la terminal.
Con el comando cp copias el archivo y el contenido
➜ cp archivo.sh 5-archivo.sh
Copias el archivo y con el mismo nombre, 🤦 hay que renombrarlo.
Cambiar el nombre del archivo con mv
➜ mv 5-archivo.sh 5_substitutionCommand.sh
y que me dice de los permisos, fueron copiados.
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.
muy buen tutor, no lo conocia!! encontre comando buenos.
(esc) dw = borra desde el cursor hasta el final de la palabra (esc) d$ = borra desde el cursor hasta el final de la linea.
Este script crea un archivo de backup tomando la fecha en formato h-m-s
!/bin/bash
Sustitucion de comandos por varibales
ubicacionActual=pwd
infokernel=$(uname -a)
horaCreacion=date "+%H%M%S"
archivoBK="bk_${horaCreacion}"
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"
```
4. **Obtener el Espacio Libre en Disco**
```bash
free_space=$(df -h / | grep / | awk '{ print $4 }')
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.
aqui estan todos los comandos (https://github.com/rohit-nair/vim-cheetsheet/blob/master/cheetsheet.md)
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
esc + (cantidad de lineas a borrar)+dd = borrado masivo
# ! /bin/bash # Programa para revisar como ejecutar comados dentro de un programa y almacenar en una variable para su posterior utilización # Autor: Martin Davila ubicacionActual=`pwd` infoKernel=$(uname -a) echo "La ubicación actual es la siguiente: $ubicacionActual" echo "Información del Kernel: $infoKernel"```