¿Qué es un archivo con extensión .sh?
Es un script de shell Bourne. Se utilizan en muchas variaciones de sistemas operativos similares a UNIX. No tienen "lenguaje" y son interpretados por su shell (intérprete de comandos de terminal) o si la primera línea está en el formulario
#!/path/to/interpreter
utilizarán ese intérprete en particular. Su archivo tiene la primera línea:
#!/bin/bash
y eso significa que usa Bourne Again Shell, llamado bash. A todos los efectos prácticos, es un reemplazo para el buen viejo sh.
Dependiendo del intérprete, tendrá un idioma diferente en el que está escrito el archivo.
Tenga en cuenta que, en el mundo de UNIX, no es la extensión del archivo lo que determina cuál es el archivo (consulte Cómo ejecutar un script de shell).
Si vienes del mundo de DOS/Windows, estarás familiarizado con los archivos que tienen extensión .bat o .cmd (archivos por lotes). No son similares en contenido, pero son similares en diseño.
Cómo ejecutar un script de shell
A diferencia de algunos sistemas operativos tontos, *nix no depende exclusivamente de las extensiones para determinar qué hacer con un archivo. También se utilizan permisos. Esto significa que si intenta ejecutar el script de shell después de descargarlo, será lo mismo que intentar "ejecutar" cualquier archivo de texto. La extensión ".sh" está ahí solo para su conveniencia para reconocer ese archivo.
Deberá hacer que el archivo sea ejecutable. Supongamos que ha descargado su archivo como file.sh
, luego puede ejecutar en su terminal:
chmod +x file.sh
chmod
es un comando para cambiar los permisos del archivo, +x
establece los permisos de ejecución (en este caso para todos) y finalmente tiene su nombre de archivo.
También puede hacerlo en GUI. La mayoría de las veces puede hacer clic derecho en el archivo y seleccionar propiedades, en XUbuntu las opciones de permisos se ven así:
Si no desea cambiar los permisos. También puede obligar al shell a ejecutar el comando. En la terminal puedes ejecutar:
bash file.sh
El shell debe ser el mismo que en la primera línea de su secuencia de comandos.
¿Qué tan seguro es?
Puede que le resulte extraño que deba realizar otra tarea manualmente para ejecutar un archivo. Pero esto se debe en parte a la gran necesidad de seguridad.
Básicamente, cuando descargas y ejecutas un script bash, es lo mismo que alguien que te dice "ejecuta todos estos comandos en secuencia en tu computadora, te prometo que los resultados serán buenos y seguros". Pregúntese si confía en la parte que ha proporcionado este archivo, pregúntese si está seguro de haber descargado el archivo desde el mismo lugar en el que pensó, tal vez incluso eche un vistazo para ver si algo parece fuera de lugar (aunque eso requiere que sabes algo sobre comandos *nix y programación bash).
Desafortunadamente, aparte de la advertencia anterior, no puedo dar una descripción paso a paso de lo que debe hacer para evitar que le sucedan cosas malas a su computadora; así que tenga en cuenta que cada vez que obtiene y ejecuta un archivo ejecutable de alguien, en realidad está diciendo:"Claro, puede usar mi computadora para hacer algo".
Si abre su segundo enlace en un navegador, verá el código fuente:
#!/bin/bash
# Script to download individual .nc files from the ORNL
# Daymet server at: http://daymet.ornl.gov
[...]
# For ranges use {start..end}
# for individul vaules, use: 1 2 3 4
for year in {2002..2003}
do
for tile in {1159..1160}
do wget --limit-rate=3m http://daymet.ornl.gov/thredds/fileServer/allcf/${year}/${tile}_${year}/vp.nc -O ${tile}_${year}_vp.nc
# An example using curl instead of wget
#do curl --limit-rate 3M -o ${tile}_${year}_vp.nc http://daymet.ornl.gov/thredds/fileServer/allcf/${year}/${tile}_${year}/vp.nc
done
done
Así que es un script bash. ¿Tienes Linux?
En cualquier caso, el script no es más que una serie de recuperaciones HTTP. Tanto wget como curl están disponibles para la mayoría de los sistemas operativos y casi todos los lenguajes tienen bibliotecas HTTP, por lo que es bastante trivial reescribir en cualquier otra tecnología. También hay algunos puertos de Windows de bash (git incluye uno). Por último, pero no menos importante, Windows 10 ahora tiene soporte nativo para binarios de Linux.
sh
son archivos ejecutables de shell de unix (linux), son el equivalente (pero mucho más poderoso) de bat
archivos en Windows.
Por lo tanto, debe ejecutarlo desde una consola de Linux, simplemente escribiendo su nombre de la misma manera que lo hace con los archivos bat en Windows.