Aprende leyendo en orden

Tu primer script de shell — crearlo y ejecutarlo

Crea un script de shell en vi, añade #!/bin/sh, hazlo ejecutable con chmod +x y ejecútalo con ./hello.sh. Ilustrado y practicado en tu navegador.

Crear un script — vi y #!/bin/sh

Un script de shell agrupa en un archivo los comandos que normalmente escribirías en la terminal, para que puedas ejecutarlos todos de una vez.

En lugar de teclear a mano un conjunto fijo de pasos cada vez, los escribes en un archivo y puedes repetir el mismo trabajo con precisión tantas veces como quieras.

Aquí aprenderás lo básico para crear y ejecutar un script de shell.

Abre el archivo con vi hello.sh, pulsa i para entrar en modo inserción y escribe el cuerpo, luego pulsa Esc y guarda y cierra con :wq (las operaciones básicas de vi son las mismas que aprendiste la última vez).

Haz que la primera línea sea #!/bin/sh, un shebang, que indica qué shell ejecuta el script.

Las líneas que empiezan por # se ignoran al ejecutar, como comentarios.

La única excepción es la primera línea: aunque #!/... empiece por #, no es un comentario — se interpreta de forma especial como la directiva que indica qué shell ejecutar.

Crear → dar permiso → ejecutar, y cómo cambia ls -l
Escribir con vihello.sh creado-rw-r--r--Ver permisocon ls -lDar permiso ejec.-rwxr-xr-xaparece xCon x puesto,ejecuta con ./Ejecutar el scriptrun info: etc.se imprimevi hello.shchmod +x hello.sh./hello.sh
Crearlo con vi hello.sh da -rw-r--r-- (sin x); chmod +x lo cambia a -rwxr-xr-x (con x), y ./hello.sh lo ejecuta. El centro muestra la comprobación con ls -l.
SintaxisSignificadoEjemplo
vi fAbrir un archivo en el editor (lo crea si no existe)vi hello.sh
iEscEscribir el cuerpo en modo inserción, Esc vuelve al modo normalPulsa iEsc
:wqGuardar y salir de vi:wq
#!/bin/shEl shebang en la primera línea (indica la shell a ejecutar)#!/bin/sh
# comentarioUna línea explicativa ignorada al ejecutar# create backup
chmod +x fAñadir permiso de ejecución a un archivochmod +x hello.sh
./fEjecutar el script en el directorio actual./hello.sh
>> fAñadir al final de un archivo (sin sobrescribir)date >> run.log
vi note.sh        # abre el script en el editor
# pulsa i para entrar en modo inserción y escribe:
#   #!/bin/sh
#   # show a short message
#   echo "build step 1"
#   echo "build step 2"
# pulsa Esc y guarda y sal con :wq
chmod +x note.sh  # añade permiso de ejecución
./note.sh         # imprime build step 1 / build step 2

Vas a construir una pequeña herramienta que registra la fecha en que lo ejecutaste y el directorio de trabajo.

① Abre hello.sh con vi hello.sh y pulsa i para entrar en modo inserción.

② En la primera línea escribe #!/bin/sh, luego añade una línea de comentario que indique para qué sirve el script y los comandos que imprimen la fecha actual y el directorio de trabajo (puedes copiar y pegar el contenido desde el panel de respuesta).

③ Pulsa Esc y guarda y sal con :wq.

④ Añade permiso de ejecución al hello.sh que creaste.

⑤ Ejecuta ls -l hello.sh y confirma que aparece una x en el borde izquierdo, mostrando que el permiso de ejecución cambió.

⑥ Ejecuta el script y confirma que se imprimen la fecha y el directorio de trabajo. (Si se ejecuta correctamente, aparecerá una explicación.)

Linux console
0 / 4 completado(s)
Loading Linux Terminal...

Ejecutarlo — chmod +x y ./

Un archivo que acabas de crear no se puede ejecutar tal cual.

Una vez que añades permiso de ejecución con chmod +x file, puedes ejecutarlo en la forma ./file.

./ es la manera de referirse a un archivo en el directorio actual; sin él, la shell solo busca el comando dentro de PATH y no lo encuentra.

vi greet.sh        # abre en el editor, escribe #!/bin/sh y echo hi, guarda con :wq
ls -l greet.sh      # aún sin permiso de ejecución
chmod +x greet.sh   # añade permiso de ejecución
ls -l greet.sh      # aparece una x en el borde izquierdo
./greet.sh          # imprime hi

También hay una forma de ejecutarlo sin permiso de ejecución

Cuando quieras ejecutarlo sin añadir permiso de ejecución, también hay una forma de entregar el archivo a una shell, como sh file.

En este curso usamos la forma básica de añadir permiso de ejecución y ejecutar con ./file.

Puedes comprobar si se añadió el permiso de ejecución según aparezca una x en el borde izquierdo de ls -l.

Vas a recorrer el flujo de crear un script, añadir permiso de ejecución y ejecutarlo.

① Abre run.sh con vi run.sh, escribe #!/bin/sh en la primera línea y un comando que imprima un mensaje corto en la siguiente línea, luego guarda con :wq.

② Comprueba los permisos actuales con ls -l run.sh (aún no hay permiso de ejecución).

③ Añade permiso de ejecución al run.sh que creaste.

④ Ejecuta ls -l run.sh de nuevo y confirma que apareció una x en el borde izquierdo.

⑤ Ejecuta el script con ./ y confirma que se imprime el mensaje.

Linux console
0 / 4 completado(s)
Loading Linux Terminal...

Construir una pequeña herramienta que registra las ejecuciones

El flujo de crear, dar permiso y ejecutar que aprendiste puede usarse directamente en pequeñas herramientas del mundo real.

Aquí vas a construir una herramienta de registro que añade "cuándo se ejecutó el script" a un único archivo de log.

Cuando añades con >>, las líneas se acumulan cada vez que lo ejecutas, así que puedes revisar después el historial de ejecución.

Las dos acciones de who.sh y la acumulación del historial
Ejecutar who.shAñadir una línea dehora a run.log>> añade al final,no sobrescribeMostrar todas laslíneas de run.logEjecutarlouna vez másrun.log crece a2 y luego 3 líneasEl historialse acumuladate >> run.logcat run.log./who.sh
Una sola ejecución provoca el añadido de date >> run.log y la visualización de cat run.log, y cada repetición acumula otra línea en run.log.

Vas a construir una pequeña herramienta que registra en un archivo de log la hora en que lo ejecutaste.

① Abre who.sh con vi who.sh, pulsa i para entrar en modo inserción y escribe #!/bin/sh en la primera línea.

② Añade una línea de comentario que indique para qué sirve el script, añade la hora actual a un archivo de log (>>) y luego escribe un comando para mostrar todo el log.

③ Pulsa Esc, guarda con :wq, luego añade permiso de ejecución al archivo.

④ Ejecuta el script y confirma que la línea registrada aparece en el log.

Linux console
0 / 3 completado(s)
Loading Linux Terminal...
QUIZ

Verificación de conocimientos

Responde cada pregunta una a una.

Pregunta 1¿Qué indica el #!/bin/sh de la primera línea de un script de shell?

Pregunta 2¿Qué comando añade permiso de ejecución a un script que creaste?

Pregunta 3¿Cuál es la forma de ejecutar hello.sh en el directorio actual?