Skip to content

Commit adce768

Browse files
authored
Translate to spanish 015-writing-your-first-bash-script.md (added recently 016,017 and 018 too) (bobbyiliev#128)
* Translate to spanish 015-writing-your-first-bash-script.md * Translate to spanish 015-writing-your-first-bash-script.md * Translated to spanish 3 files (016,017 and 018)
1 parent 7e71bb4 commit adce768

4 files changed

+839
-0
lines changed
Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
1+
# Escribe tu primer script en Bash
2+
3+
Vamos a intentar agrupar lo que hemos aprendido hasta ahora y crear nuestro primer script en Bash
4+
5+
## Planeando el script
6+
7+
Como ejemplo, escribiremos un script que debería recopilar alguna información útil sobre nuestro servidor como:
8+
9+
* Uso del disco actual
10+
* Uso de la CPU actual
11+
* Uso de la RAM actual
12+
* Controlar la versión exacta del kernel
13+
14+
Siéntete libre de ajustar el script añadiendo o borrando las funcionalidades según tus necesidades.
15+
16+
## Escribiendo el script
17+
18+
Lo primero que necesitas hacer es crear un nuevo archivo con una extensión `.sh`. Yo crearé un archivo llamado `status.sh` ya que el script que crearemos nos dará el estado de nuestro servidor.
19+
20+
Una vez hayas creado el archivo, ábrelo con tu editor de texto favorito.
21+
22+
Como hemos aprendido en el capítulo 1, en la primera linea de nuestro script en Bash necesitamos especificar el llamado [Shebang](https://en.wikipedia.org/wiki/Shebang_(Unix)):
23+
24+
```bash
25+
#!/bin/bash
26+
```
27+
28+
El shebang hace dice al sistema operativo que ejecute el script con el ejecutable /bin/bash.
29+
30+
## Añadiendo comentarios
31+
32+
A continuación, como vimos en el capítulo 6, vamos a empezar añadiendo algunos comentarios para que la gente pueda entender fácilmente para que sirve el script. Para hacerlo de manera correcta, después del shebang, puedes añadir lo siguiente:
33+
34+
```bash
35+
#!/bin/bash
36+
37+
# Script que devuelve el estado actual del servidor
38+
```
39+
40+
## Añadiendo tu primera variable
41+
42+
Ahora sigamos avanzando y apliquemos lo que hemos aprendido en el capítulo 4 añadiendo algunas variables que podríamos utilizar en todo el script.
43+
44+
Para asignar un valor a una variable en bash, sólo tienes que usar el símbolo `=`. Por ejemplo, vamos a almacenar el nombre de nuestro servidor en una variable que podremos usar más adelante.
45+
46+
```bash
47+
server_name=$(hostname)
48+
```
49+
50+
Usando `$()`le decimos a bash que interprete el comando y luego le asigne el valor a nuestra variable.
51+
52+
Ahora si hacemos un `echo` de la variable veriamos el nombre actual del servidor.
53+
54+
```bash
55+
echo $server_name
56+
```
57+
58+
## Añadiendo tu primera función
59+
60+
Como ya sabrás después de leer el capítulo 12, para crear una función en bash necesitas usar la siguiente estructura:
61+
62+
```bash
63+
function function_name() {
64+
your_commands
65+
}
66+
```
67+
68+
Vamos a crear una función que devuelva el uso actual de la memoria en nuestro servidor:
69+
70+
```bash
71+
function memory_check() {
72+
echo ""
73+
echo "The current memory usage on ${server_name} is: "
74+
free -h
75+
echo ""
76+
}
77+
```
78+
79+
Una vista rápida de la función:
80+
81+
* `function memory_check() {` - Esto es como definimos la función
82+
* `echo ""` - Aquí imprimimos una nueva línea
83+
* `echo "The current memory usage on ${server_name} is: "` - aquí imprimimos un pequeño mensaje y la variable `$server_name`
84+
* `}` - finalmente así es como cerramos la función.
85+
86+
Una vez la función ha sido definida, para llamarla, sólo tenemos que usar el nombre de la función:
87+
88+
```bash
89+
# Define la función
90+
function memory_check() {
91+
echo ""
92+
echo "The current memory usage on ${server_name} is: "
93+
free -h
94+
echo ""
95+
}
96+
97+
# Llama a la función
98+
memory_check
99+
```
100+
101+
## El desafío de agregar más funciones
102+
103+
Antes de comprobar la solución, te desafío a usar la función de arriba y escribir algunas funciones por tí mismo.
104+
105+
Las funciones deberían hacer lo siguiente:
106+
107+
* Uso actual del disco
108+
* Uso actual de la CPU
109+
* Uso actual de la RAM
110+
* Controlar la versión exacta del kernel
111+
112+
Siéntete libre de usar google para obtener esa información si no estás seguro de los comandos que necesitas usar.
113+
114+
Una vez que termines, siéntete libre de seguir leyendo y comprobar como lo hemos hecho para comparar los resultados.
115+
116+
Ten en cuenta que hay múltiples maneras correctas de hacerlo.
117+
118+
## El script de ejemplo
119+
120+
Así es como se vería el resultado final:
121+
122+
```bash
123+
#!/bin/bash
124+
125+
##
126+
# script en BASH que comprueba:
127+
# - Uso de memoria
128+
# - Carga de CPU
129+
# - Número de conexiones TCP
130+
# - Versión de kernel
131+
##
132+
133+
server_name=$(hostname)
134+
135+
function memory_check() {
136+
echo ""
137+
echo "Memory usage on ${server_name} is: "
138+
free -h
139+
echo ""
140+
}
141+
142+
function cpu_check() {
143+
echo ""
144+
echo "CPU load on ${server_name} is: "
145+
echo ""
146+
uptime
147+
echo ""
148+
}
149+
150+
function tcp_check() {
151+
echo ""
152+
echo "TCP connections on ${server_name}: "
153+
echo ""
154+
cat /proc/net/tcp | wc -l
155+
echo ""
156+
}
157+
158+
function kernel_check() {
159+
echo ""
160+
echo "Kernel version on ${server_name} is: "
161+
echo ""
162+
uname -r
163+
echo ""
164+
}
165+
166+
function all_checks() {
167+
memory_check
168+
cpu_check
169+
tcp_check
170+
kernel_check
171+
}
172+
173+
all_checks
174+
```
175+
176+
## Conclusión
177+
178+
Hacer scripts en Bash es muy útil! No importa si eres un ingeniero, desarrollador o sólo un entusiasta de Linux, puedes usar los scripts en Bash para combinar diferentes comandos de Linux y automatizar tareas diarias, aburridas y repetitivas para poder enfocarte en cosas más productivas y divertidas.
179+
180+
>{aviso} Esto fue inicialmente publicado en [DevDojo.com](https://devdojo.com/bobbyiliev/introduction-to-bash-scripting)

0 commit comments

Comments
 (0)