web-dev-qa-db-fra.com

Qu'est-ce qu'un fichier .sh?

Donc, je n'ai pas l'habitude de traiter avec une pléthore de types de fichiers et je n'ai pas été capable de trouver beaucoup d'informations sur ce que sont exactement les fichiers .sh. Voici ce que j'essaie de faire:

J'essaie de télécharger des ensembles de données cartographiques organisés en mosaïques pouvant être téléchargées individuellement: http://daymet.ornl.gov/gridded

Afin de télécharger une gamme de tuiles à la fois, ils disent de télécharger leur script, ce qui conduit finalement à daymet-nc-retrieval.sh: https://github.com/daymet/scripts/blob/master/Bash/daymet-nc-retrieval. sh

Alors, qu'est-ce que je suis supposé faire avec ce code? Le site Web ne fournit aucune autre instruction, en supposant que les utilisateurs sachent quoi en faire. Je suppose que vous êtes censé coller le code dans une autre application non mentionnée pour un navigateur (en utilisant Chrome ou Firefox dans ce cas)? Cela ressemble presque à quelque chose qui pourrait être collé dans Firefox/Greasemonkey, mais pas tout à fait. Juste par un rapide Google sur le type de fichier, je n’ai pas été capable d’obtenir des résultats positifs. 

Je suis sûr qu'il existe une explication simple sur l'utilisation de ces fichiers, mais cela semble être enterré dans de nombreux posts où des personnes supposent déjà que vous savez quoi faire avec ces fichiers. Quiconque est simplement disposé à dire simplement ce qui doit être fait à partir de zéro après être arrivé à la page avec le code pour réellement le mettre en œuvre? Merci.

53
Tony H

Si vous ouvrez votre deuxième lien dans un navigateur, vous verrez le code source:

#!/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

C'est donc un script bash. Vous avez Linux?


Dans tous les cas, le script n'est rien d'autre qu'une série de récupérations HTTP. Wget et curl sont disponibles pour la plupart des systèmes d'exploitation et presque toutes les langues ont des bibliothèques HTTP, il est donc assez simple de réécrire avec une autre technologie. Il y a aussi quelques ports Windows de bash lui-même (git en inclut un). Enfin, Windows 10 prend désormais en charge native les fichiers binaires Linux .

34
Álvaro González

Qu'est-ce qu'un fichier avec l'extension .sh?

C'est un script Bourne Shell . Ils sont utilisés dans de nombreuses variantes de systèmes d'exploitation de type UNIX. Ils n’ont pas de "langage" et sont interprétés par votre shell (interprète des commandes du terminal) ou si la première ligne est sous la forme

#!/path/to/interpreter

ils utiliseront cet interprète particulier. Votre fichier a la première ligne:

#!/bin/bash

et cela signifie qu'il utilise Bourne Again Shell, appelé bash. C’est à toutes fins pratiques un remplacement pour un bon vieux sh.

En fonction de l'interprète, le fichier est écrit dans une langue différente.

N'oubliez pas que, dans le monde UNIX, ce n'est pas l'extension du fichier qui détermine ce qu'est le fichier (voir Comment exécuter un script Shell).

Si vous venez du monde de DOS/Windows, vous serez familiarisé avec les fichiers dotés des extensions .bat ou .cmd (fichiers de traitement par lots). Ils ne sont pas similaires dans le contenu, mais sont semblables dans la conception.

Comment exécuter un script shell

Contrairement à certains systèmes d'exploitation stupides, * nix ne s'appuie pas exclusivement sur des extensions pour déterminer quoi faire avec un fichier. Les autorisations sont également utilisées. Cela signifie que si vous essayez d'exécuter le script Shell après le téléchargement, ce sera la même chose que d'essayer d'exécuter n'importe quel fichier texte. L’extension ".sh" n’est là que pour vous aider à reconnaître ce fichier.

Vous devrez rendre le fichier exécutable. Supposons que vous ayez téléchargé votre fichier au format file.sh, vous pouvez ensuite l'exécuter dans votre terminal:

chmod +x file.sh

chmod est une commande permettant de modifier les autorisations du fichier, +x définit les autorisations d'exécution (dans ce cas pour tout le monde) et vous avez enfin votre nom de fichier.

Vous pouvez également le faire dans l'interface graphique. La plupart du temps, vous pouvez cliquer avec le bouton droit sur le fichier et sélectionner les propriétés. Sous XUbuntu, les options de permissions ressemblent à ceci:

 File permissions in XUbuntu

Si vous ne souhaitez pas modifier les autorisations. Vous pouvez également forcer le shell à exécuter la commande. Dans le terminal, vous pouvez exécuter:

bash file.sh

Le shell devrait être identique à celui de la première ligne de votre script.

Est-ce sécuritaire?

Vous trouverez peut-être étrange que vous deviez exécuter une autre tâche manuellement pour exécuter un fichier. Mais c’est en partie à cause du fort besoin de sécurité.

Fondamentalement, lorsque vous téléchargez et exécutez un script bash, c'est la même chose que si quelqu'un vous disait "exécutez toutes ces commandes en séquence sur votre ordinateur, je vous promets que les résultats seront bons et sûrs". Demandez-vous si vous avez confiance en la partie qui a fourni ce fichier, demandez-vous si vous êtes certain de l'avoir téléchargé depuis le même endroit que prévu vous savez quelque chose sur les commandes * nix et la programmation bash).

Malheureusement, mis à part l'avertissement ci-dessus, je ne peux pas vous décrire étape par étape ce que vous devez faire pour éviter que de mauvaises choses se produisent avec votre ordinateur. Donc, gardez simplement à l'esprit que chaque fois que vous obtenez et exécutez un fichier exécutable d'une personne, vous dites réellement: "Bien sûr, vous pouvez utiliser mon ordinateur pour faire quelque chose".

76
v010dya

Les fichiers sh sont des fichiers exécutables du shell unix (linux), ils sont l’équivalent (mais beaucoup plus puissant) des fichiers bat de Windows.

Vous devez donc l’exécuter à partir d’une console Linux, il suffit de taper son nom de la même façon que vous le faites avec les fichiers bat sur Windows.

29
Nelson

Un fichier .sh est généralement un script Shell que vous pouvez exécuter dans un terminal. Plus précisément, le script que vous avez mentionné est un script bash, que vous pouvez voir si vous ouvrez le fichier et regardez dans la première ligne du fichier, appelée ligne Shebang ou magique.

4
David Bauer

Un fichier .sh est un fichier shell. Il peut être utilisé pour ouvrir des programmes ou non.

1
Buckell

Je sais que c’est une vieille question et que je n’aiderai probablement pas, mais de nombreuses distributions Linux (par exemple, Ubuntu) ont une fonction "Live cd/usb". Par conséquent, si vous devez vraiment exécuter ce script, vous pouvez essayer de démarrer votre ordinateur dans Linux. Il suffit de graver un fichier .iso sur un lecteur flash (voici comment http://goo.gl/U1wLYA ), de démarrer votre ordinateur avec le lecteur branché et d’appuyer sur la touche F du menu de démarrage. Si vous choisissez "... USB ...", vous démarrerez dans le système d'exploitation que vous venez de mettre sur le lecteur.

1
Sam

ouvrez l’emplacement dans le terminal puis tapez ces commandes 1. chmod + x nomfichier.sh 2. ./nom_fichier.sh c'est tout

0
PRAKHAR GUPTA