Pregunta 1¿Qué indica el #!/bin/sh de la primera línea de un script de shell?
Introducción a los scripts de shell — #!/bin/sh y chmod +x
Este artículo forma parte del Curso de Linux, con el que dominarás desde cero habilidades prácticas de Linux, desde los comandos básicos hasta los scripts de shell.
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.
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.| Sintaxis | Significado | Ejemplo |
|---|---|---|
vi f | Abrir un archivo en el editor (lo crea si no existe) | vi hello.sh |
i … Esc | Escribir el cuerpo en modo inserción, Esc vuelve al modo normal | Pulsa i … Esc |
:wq | Guardar y salir de vi | :wq |
#!/bin/sh | El shebang en la primera línea (indica la shell a ejecutar) | #!/bin/sh |
# comentario | Una línea explicativa ignorada al ejecutar | # create backup |
chmod +x f | Añadir permiso de ejecución a un archivo | chmod +x hello.sh |
./f | Ejecutar el script en el directorio actual | ./hello.sh |
>> f | Añ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
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.
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.
date >> run.log y la visualización de cat run.log, y cada repetición acumula otra línea en run.log.Verificación de conocimientos
Responde cada pregunta una a una.
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?