GNU/Linux >> Tutoriels Linux >  >> Linux

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

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

C'est un script shell Bourne. 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éteur 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 le bon vieux sh.

Selon l'interprète, vous aurez une langue différente dans laquelle le fichier est écrit.

Gardez à l'esprit 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 qui ont des extensions .bat ou .cmd (fichiers batch). Ils ne sont pas similaires dans le contenu, mais sont similaires dans la conception.

Comment exécuter un script shell

Contrairement à certains systèmes d'exploitation idiots, * nix ne s'appuie pas exclusivement sur les 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 l'avoir téléchargé, 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 votre commodité afin de reconnaître ce fichier.

Vous devrez rendre le fichier exécutable. Supposons que vous avez téléchargé votre fichier en tant que file.sh , vous pouvez alors exécuter dans votre terminal :

chmod +x file.sh

chmod est une commande pour changer les permissions du fichier, +x définit les autorisations d'exécution (dans ce cas pour tout le monde) et enfin vous avez 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. Dans XUbuntu, les options d'autorisation ressemblent à ceci :

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 doit être le même que dans la première ligne de votre script.

Est-ce sûr ?

Vous trouverez peut-être bizarre que vous deviez effectuer une autre tâche manuellement pour exécuter un fichier. Mais cela est dû en partie à un fort besoin de sécurité.

Fondamentalement, lorsque vous téléchargez et exécutez un script bash, c'est la même chose que quelqu'un vous disant "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 faites confiance à la partie qui a fourni ce fichier, demandez-vous si vous êtes sûr d'avoir téléchargé le fichier au même endroit que vous le pensiez, peut-être même jetez un coup d'œil à l'intérieur pour voir si quelque chose ne semble pas à sa place (bien que cela nécessite que vous savez quelque chose sur les commandes *nix et la programmation bash).

Malheureusement, à part l'avertissement ci-dessus, je ne peux pas donner une description étape par étape de ce que vous devez faire pour empêcher que des choses maléfiques ne se produisent avec votre ordinateur ; alors gardez à l'esprit que chaque fois que vous obtenez et exécutez un fichier exécutable de quelqu'un, vous dites en fait :"Bien sûr, vous pouvez utiliser mon ordinateur pour faire quelque chose".


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 tous les langages ont des bibliothèques HTTP, il est donc assez simple de réécrire dans toute autre technologie. Il existe également des ports Windows de bash lui-même (git en inclut un). Enfin, Windows 10 prend désormais en charge nativement les binaires Linux.


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

Vous devez donc l'exécuter à partir d'une console Linux, en tapant simplement son nom comme vous le faites avec les fichiers bat sous Windows.


Linux
  1. Descripteurs de fichiers et scripts shell ?

  2. Qu'est-ce qui compte comme une modification ou un changement de fichier ?

  3. Que fait Exec 3 ?

  4. Qu'est-ce que l'utilisation () dans les scripts shell ?

  5. cp -L vs cp -H

Qu'est-ce qu'umask sous Linux ?

Qu'est-ce que le Shell sous Linux ?

Qu'est-ce que php.ini ?

Qu'est-ce que le sous-shell sous Linux ?

Qu'est-ce que le shell de connexion sous Linux ?

Qu'est-ce qu'un fichier .bashrc sous Linux ?