Skip to content

Commit a9f01b9

Browse files
authored
fix #8 new language added (#147)
Co-authored-by: unknown <[email protected]>
1 parent b932381 commit a9f01b9

31 files changed

+2852
-0
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../../en/content/000-about-the-author.md ../../../en/content/001-introduction-to-bash.md ../../../en/content/002-bash-structure.md ../../../en/content/003-bash-hello-world.md ../../../en/content/004-bash-variables.md ../../../en/content/005-bash-user-input.md ../../../en/content/006-bash-comments.md ../../../en/content/007-bash-arguments.md ../../../en/content/008-bash-arrays.md ../../../en/content/009-bash-conditional-expressions.md ../../../en/content/010-bash-conditionals.md ../../../en/content/011-bash-loops.md ../../../en/content/012-bash-functions.md ../../../en/content/013-debugging-and-testing.md ../../../en/content/014-creating-custom-bash-commands.md ../../../en/content/015-writing-your-first-bash-script.md ../../../en/content/016-creating-an-interactive-menu-in-bash.md ../../../en/content/017-executing-bash-script-on-multiple-remote-server.md ../../../en/content/018-working-with-json-in-bash-using-jq.md ../../../en/content/019-working-with-cloudflare-api-with-bash.md ../../../en/content/020-nginx-and-apache-log-parser.md ../../../en/content/021-how-to-send-emails-with-bash.md ../../../en/content/022-bash-password-generator.md ../../../en/content/023-bash-redirection.md ../../../en/content/024-automating-wordpress-lamp-with-bash.md ../../../en/content/100-bash-wrap-up.md
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Introducción a las secuencias de comandos Bash
2+
3+
¡Bienvenido a esta guía de formación básica de Bash! En este **curso intensivo de bash**, aprenderá los **conceptos básicos de Bash** para que pueda comenzar a escribir sus propios scripts de Bash y automatizar sus tareas diarias.
4+
5+
Bash es un shell y lenguaje de comandos de Unix. Está ampliamente disponible en varios sistemas operativos y también es el intérprete de comandos predeterminado en la mayoría de los sistemas Linux.
6+
7+
Bash significa Bourne-Again SHell. Al igual que con otros shells, puede usar Bash de forma interactiva directamente en su terminal y, además, puede usar Bash como cualquier otro lenguaje de programación para escribir scripts. Este libro le ayudará a aprender los conceptos básicos de las secuencias de comandos Bash, incluidas las variables Bash, la entrada del usuario, los comentarios, los argumentos, las matrices, las expresiones condicionales, los condicionales, los bucles, las funciones, la depuración y las pruebas.
8+
9+
Los scripts Bash son excelentes para automatizar cargas de trabajo repetitivas y pueden ayudarlo a ahorrar tiempo considerablemente. Por ejemplo, imagine trabajar con un grupo de cinco desarrolladores en un proyecto que requiere una configuración de entorno tediosa. Para que el programa funcione correctamente, cada desarrollador debe configurar manualmente el entorno. Se trata de la misma y muy larga tarea (preparar el entorno) que se repite al menos cinco veces. ¡Aquí es donde usted y los scripts Bash vienen al rescate! Entonces, en lugar de eso, creas un archivo de texto simple que contiene todas las instrucciones necesarias y lo compartes con tus compañeros de equipo. Y ahora, todo lo que tienen que hacer es ejecutar el script Bash y todo se creará para ellos.
10+
11+
Para escribir scripts Bash, solo necesita una terminal UNIX y un editor de texto como Sublime Text, VS Code o un editor basado en terminal como vim o nano.
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Estructura de bash
2+
3+
Comencemos creando un nuevo archivo con una extensión `.sh`. Como ejemplo, podríamos crear un archivo llamado `devdojo.sh`.
4+
5+
Para crear ese archivo, puede usar el comando `touch`:
6+
7+
```golpecito
8+
toque devdojo.sh
9+
```
10+
11+
O puedes usar tu editor de texto en su lugar:
12+
13+
```golpecito
14+
nano devdojo.sh
15+
```
16+
17+
Para ejecutar/ejecutar un archivo de script bash con el intérprete de shell bash, la primera línea de un archivo de script debe indicar la ruta absoluta al ejecutable bash:
18+
19+
```golpecito
20+
#!/bin/bash
21+
```
22+
23+
Esto también se llama [Shebang](https://en.wikipedia.org/wiki/Shebang_(Unix)).
24+
25+
Todo lo que hace el shebang es indicarle al sistema operativo que ejecute el script con el ejecutable `/bin/bash`.
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Bash Hola mundo
2+
3+
Una vez que hayamos creado nuestro archivo `devdojo.sh` y hayamos especificado el shebang bash en la primera línea, estamos listos para crear nuestro primer script bash `Hello World`.
4+
5+
Para hacer eso, abra el archivo `devdojo.sh` nuevamente y agregue lo siguiente después de la línea `#!/bin/bash`:
6+
7+
```golpecito
8+
#!/bin/bash
9+
10+
eco "¡Hola mundo!"
11+
```
12+
13+
Guarda el archivo y cierra.
14+
15+
Después de eso, haga que el script sea ejecutable ejecutando:
16+
17+
```golpecito
18+
chmod +x devdojo.sh
19+
```
20+
21+
Después de eso ejecute el archivo:
22+
23+
```golpecito
24+
./devdojo.sh
25+
```
26+
27+
Verá un mensaje "Hola mundo" en la pantalla.
28+
29+
Otra forma de ejecutar el script sería:
30+
31+
```golpecito
32+
bash devdojo.sh
33+
```
34+
35+
Como bash se puede usar de forma interactiva, puede ejecutar el siguiente comando directamente en su terminal y obtendrá el mismo resultado:
36+
37+
```golpecito
38+
echo "¡Hola DevDojo!"
39+
```
40+
41+
Crear un script es útil una vez que tienes que combinar varios comandos.
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
# Variables de bash
2+
3+
Como en cualquier otro lenguaje de programación, también puedes utilizar variables en Bash Scripting. Sin embargo, no existen tipos de datos y una variable en Bash puede contener tanto números como caracteres.
4+
5+
Para asignar un valor a una variable, todo lo que necesitas hacer es usar el signo `=`:
6+
7+
```golpecito
8+
nombre="DevDojo"
9+
```
10+
11+
>{aviso} como nota importante, no puede tener espacios antes y después del signo `=`.
12+
13+
Después de eso, para acceder a la variable, debe usar `$` y hacer referencia a ella como se muestra a continuación:
14+
15+
```golpecito
16+
eco $ nombre
17+
```
18+
19+
No es necesario colocar el nombre de la variable entre llaves, pero se considera una buena práctica y le recomendaría que las utilice siempre que pueda:
20+
21+
```golpecito
22+
eco ${nombre}
23+
```
24+
25+
El código anterior generaría: `DevDojo` ya que este es el valor de nuestra variable `name`.
26+
27+
A continuación, actualicemos nuestro script `devdojo.sh` e incluyamos una variable en él.
28+
29+
Nuevamente, puedes abrir el archivo `devdojo.sh` con tu editor de texto favorito, aquí estoy usando nano para abrir el archivo:
30+
31+
```golpecito
32+
nano devdojo.sh
33+
```
34+
35+
Agregando nuestra variable `nombre` aquí en el archivo, con un mensaje de bienvenida. Nuestro archivo ahora se ve así:
36+
37+
```golpecito
38+
#!/bin/bash
39+
40+
nombre="DevDojo"
41+
42+
echo "Hola $nombre"
43+
```
44+
45+
Guárdelo y ejecute el archivo usando el siguiente comando:
46+
47+
```golpecito
48+
./devdojo.sh
49+
```
50+
51+
Verá el siguiente resultado en su pantalla:
52+
53+
```golpecito
54+
Hola DevDojo
55+
```
56+
57+
Aquí hay un resumen del script escrito en el archivo:
58+
59+
* `#!/bin/bash` - Al principio, especificamos nuestro shebang.
60+
* `name=DevDojo` - Luego, definimos una variable llamada `name` y le asignamos un valor.
61+
* `echo "Hola $name"` - Finalmente, mostramos el contenido de la variable en la pantalla como mensaje de bienvenida usando `echo`
62+
63+
También puede agregar múltiples variables en el archivo como se muestra a continuación:
64+
65+
```golpecito
66+
#!/bin/bash
67+
68+
nombre="DevDojo"
69+
saludo="Hola"
70+
71+
echo "$saludo $nombre"
72+
```
73+
74+
Guarde el archivo y ejecútelo nuevamente:
75+
76+
```golpecito
77+
./devdojo.sh
78+
```
79+
80+
Verá el siguiente resultado en su pantalla:
81+
82+
```golpecito
83+
Hola DevDojo
84+
```
85+
Tenga en cuenta que no es necesario agregar punto y coma `;` al final de cada línea. Funciona en ambos sentidos, ¡un poco como otros lenguajes de programación como JavaScript!
86+
87+
88+
También puede agregar variables en la línea de comando fuera del script Bash y pueden leerse como parámetros:
89+
90+
```golpecito
91+
./devdojo.sh ¡Bobby amigo!
92+
```
93+
Este script toma dos parámetros `Bobby` y `buddy!` separados por espacios. En el archivo `devdojo.sh` tenemos lo siguiente:
94+
95+
```golpecito
96+
#!/bin/bash
97+
98+
echo "Hola" $1
99+
100+
```
101+
`$1` es la primera entrada (`Bobby`) en la línea de comando. De manera similar, podría haber más entradas y todas ellas están referenciadas por el signo `$` y su respectivo orden de entrada. Esto significa que se hace referencia a `buddy!` usando `$2`. Otro método útil para leer variables es `$@` que lee todas las entradas.
102+
103+
Ahora cambiemos el archivo `devdojo.sh` para comprenderlo mejor:
104+
105+
```golpecito
106+
#!/bin/bash
107+
108+
echo "Hola" $1
109+
110+
# $1: primer parámetro
111+
112+
echo "Hola" $2
113+
114+
# $2: segundo parámetro
115+
116+
echo "Hola" $@
117+
118+
#$@: todos
119+
```
120+
La salida para:
121+
122+
```golpecito
123+
./devdojo.sh ¡Bobby amigo!
124+
```
125+
Seria el siguiente:
126+
127+
```golpecito
128+
Hola bobby
129+
¡Hola amigo!
130+
¡Hola amigo Bobby!
131+
```
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# Entrada de usuario Bash
2+
3+
Con el script anterior, definimos una variable y mostramos el valor de la variable en la pantalla con el `echo $name`.
4+
5+
Ahora sigamos adelante y pidamos información al usuario. Para hacerlo nuevamente, abra el archivo con su editor de texto favorito y actualice el script de la siguiente manera:
6+
7+
```golpecito
8+
#!/bin/bash
9+
10+
eco "¿Cuál es tu nombre?"
11+
leer nombre
12+
13+
echo "Hola $nombre"
14+
echo "¡Bienvenido a DevDojo!"
15+
```
16+
17+
Lo anterior solicitará al usuario una entrada y luego almacenará esa entrada como una cadena/texto en una variable.
18+
19+
Luego podemos usar la variable e imprimirles un mensaje.
20+
21+
El resultado del script anterior sería:
22+
23+
* Primero ejecute el script:
24+
25+
```golpecito
26+
./devdojo.sh
27+
```
28+
29+
* Luego, se le pedirá que ingrese su nombre:
30+
31+
```
32+
¿Cómo te llamas?
33+
Poli
34+
```
35+
36+
* Una vez que haya escrito su nombre, simplemente presione Intro y obtendrá el siguiente resultado:
37+
38+
```
39+
Hola bobby
40+
¡Bienvenidos a DevDojo!
41+
```
42+
43+
Para reducir el código, podríamos cambiar la primera declaración `echo` con `read -p`, el comando `read` usado con el indicador `-p` imprimirá un mensaje antes de solicitar al usuario su entrada:
44+
45+
```golpecito
46+
#!/bin/bash
47+
48+
leer -p "¿Cuál es tu nombre?" nombre
49+
50+
echo "Hola $nombre"
51+
echo "¡Bienvenido a DevDojo!"
52+
```
53+
54+
¡Asegúrate de probarlo tú mismo también!
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Comentarios bash
2+
3+
Como con cualquier otro lenguaje de programación, puedes agregar comentarios a tu script. Los comentarios se utilizan para dejarse notas a través de su código.
4+
5+
Para hacer eso en Bash, debe agregar el símbolo `#` al principio de la línea. Los comentarios nunca se mostrarán en la pantalla.
6+
7+
A continuación se muestra un ejemplo de un comentario:
8+
9+
```golpecito
10+
# Este es un comentario y no se mostrará en la pantalla.
11+
```
12+
13+
Sigamos adelante y agreguemos algunos comentarios a nuestro script:
14+
15+
```golpecito
16+
#!/bin/bash
17+
18+
# Preguntar al usuario su nombre
19+
20+
leer -p "¿Cuál es tu nombre?" nombre
21+
22+
# Saludar al usuario
23+
echo "Hola $nombre"
24+
echo "¡Bienvenido a DevDojo!"
25+
```
26+
27+
Los comentarios son una excelente manera de describir algunas de las funciones más complejas directamente en sus scripts para que otras personas puedan orientarse en su código con facilidad.
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
# Argumentos de Bash
2+
3+
Puede pasar argumentos a su script de shell cuando lo ejecute. Para pasar un argumento, sólo necesita escribirlo justo después del nombre de su script. Por ejemplo:
4+
5+
```golpecito
6+
./devdojo.com tu_argumento
7+
```
8+
9+
En el script, podemos usar `$1` para hacer referencia al primer argumento que especificamos.
10+
11+
Si pasamos un segundo argumento, estará disponible como `$2` y así sucesivamente.
12+
13+
Creemos un script corto llamado `arguments.sh` como ejemplo:
14+
15+
```golpecito
16+
#!/bin/bash
17+
18+
echo "El argumento uno es $1"
19+
echo "El argumento dos es $2"
20+
echo "El argumento tres es $3"
21+
```
22+
23+
Guarde el archivo y hágalo ejecutable:
24+
25+
```golpecito
26+
chmod +x argumentos.sh
27+
```
28+
29+
Luego ejecute el archivo y pase **3** argumentos:
30+
31+
```golpecito
32+
./arguments.sh perro gato pájaro
33+
```
34+
35+
El resultado que obtendrías sería:
36+
37+
```golpecito
38+
El argumento uno es perro.
39+
El argumento dos es el gato.
40+
El tercer argumento es el pájaro.
41+
```
42+
43+
Para hacer referencia a todos los argumentos, puede utilizar `$@`:
44+
45+
```golpecito
46+
#!/bin/bash
47+
48+
echo "Todos los argumentos: $@"
49+
```
50+
51+
Si ejecuta el script nuevamente:
52+
53+
```golpecito
54+
./arguments.sh perro gato pájaro
55+
```
56+
57+
Obtendrá el siguiente resultado:
58+
59+
```
60+
Todos los argumentos: perro gato pájaro
61+
```
62+
63+
Otra cosa que debes tener en cuenta es que "$0" se usa para hacer referencia al script en sí.
64+
65+
Esta es una excelente manera de crear un archivo autodestructivo si es necesario o simplemente obtener el nombre del script.
66+
67+
Por ejemplo, creemos una secuencia de comandos que imprima el nombre del archivo y luego lo elimine:
68+
69+
```golpecito
70+
#!/bin/bash
71+
72+
echo "El nombre del archivo es: $0 y se eliminará automáticamente."
73+
74+
habitación -f $0
75+
```
76+
77+
Debe tener cuidado con la autoeliminación y asegurarse de tener una copia de seguridad de su secuencia de comandos antes de autoeliminarla.

0 commit comments

Comments
 (0)