Che cos'è un file con estensione .sh?
È uno script della shell Bourne. Sono utilizzati in molte varianti di sistemi operativi simili a UNIX. Non hanno "linguaggio" e sono interpretati dalla tua shell (interprete dei comandi del terminale) o se la prima riga è nella forma
#!/path/to/interpreter
useranno quel particolare interprete. Il tuo file ha la prima riga:
#!/bin/bash
e questo significa che usa Bourne Again Shell, la cosiddetta bash. È a tutti gli effetti un sostituto del buon vecchio sh.
A seconda dell'interprete avrai una lingua diversa in cui è scritto il file.
Tieni presente che nel mondo UNIX non è l'estensione del file che determina cosa sia il file (vedi Come eseguire uno script di shell).
Se provieni dal mondo DOS/Windows, avrai familiarità con i file con estensione .bat o .cmd (file batch). Non sono simili nel contenuto, ma sono simili nel design.
Come eseguire uno script di shell
A differenza di alcuni stupidi sistemi operativi, *nix non si basa esclusivamente sulle estensioni per determinare cosa fare con un file. Vengono utilizzate anche le autorizzazioni. Ciò significa che se si tenta di eseguire lo script della shell dopo averlo scaricato, sarà come tentare di "eseguire" qualsiasi file di testo. L'estensione ".sh" è presente solo per tua comodità per riconoscere quel file.
Dovrai rendere il file eseguibile. Supponiamo che tu abbia scaricato il tuo file come file.sh
, puoi quindi eseguire nel tuo terminale:
chmod +x file.sh
chmod
è un comando per modificare i permessi del file, +x
imposta i permessi di esecuzione (in questo caso per tutti) e finalmente hai il nome del tuo file.
Puoi anche farlo nella GUI. La maggior parte delle volte puoi fare clic con il tasto destro sul file e selezionare le proprietà, in XUbuntu le opzioni di autorizzazione hanno questo aspetto:
Se non desideri modificare i permessi. Puoi anche forzare la shell a eseguire il comando. Nel terminale puoi eseguire:
bash file.sh
La shell dovrebbe essere la stessa della prima riga del tuo script.
Quanto è sicuro?
Potresti trovare strano dover eseguire manualmente un'altra attività per eseguire un file. Ma questo è in parte dovuto al forte bisogno di sicurezza.
Fondamentalmente quando scarichi ed esegui uno script bash, è la stessa cosa di qualcuno che ti dice "esegui tutti questi comandi in sequenza sul tuo computer, prometto che i risultati saranno buoni e sicuri". Chiediti se ti fidi della parte che ha fornito questo file, chiediti se sei sicuro di aver scaricato il file dallo stesso posto in cui pensavi, magari dai anche un'occhiata all'interno per vedere se qualcosa sembra fuori posto (anche se questo richiede che sai qualcosa sui comandi *nix e sulla programmazione bash).
Sfortunatamente, a parte l'avvertimento di cui sopra, non posso fornire una descrizione passo passo di cosa dovresti fare per evitare che accadano cose brutte con il tuo computer; quindi tieni a mente che ogni volta che ottieni ed esegui un file eseguibile da qualcuno, in realtà stai dicendo:"Certo, puoi usare il mio computer per fare qualcosa".
Se apri il tuo secondo link in un browser vedrai il codice sorgente:
#!/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
Quindi è uno script bash. Hai Linux?
In ogni caso, lo script non è altro che una serie di recuperi HTTP. Sia wget che curl sono disponibili per la maggior parte dei sistemi operativi e quasi tutti i linguaggi hanno librerie HTTP, quindi è abbastanza banale riscrivere in qualsiasi altra tecnologia. Ci sono anche alcuni port Windows di bash stesso (git ne include uno). Ultimo ma non meno importante, Windows 10 ora ha il supporto nativo per i binari di Linux.
sh
i file sono file eseguibili della shell unix (linux), sono l'equivalente (ma molto più potente) di bat
file su Windows.
Quindi devi eseguirlo da una console Linux, semplicemente digitando il suo nome come fai con i file bat su Windows.