phhsnews.com


phhsnews.com / Guide du débutant sur les scripts shell: les bases

Guide du débutant sur les scripts shell: les bases


Le terme "shell scripting" est souvent mentionné dans les forums Linux, mais de nombreux utilisateurs ne le connaissent pas. Apprendre cette méthode de programmation facile et puissante peut vous aider à gagner du temps, à mieux maîtriser la ligne de commande et à bannir les tâches fastidieuses de gestion de fichiers.

Qu'est-ce que Shell Scripting?

En tant qu'utilisateur Linux, vous jouez avec ligne. Qu'on le veuille ou non, il y a juste quelques choses qui sont faites beaucoup plus facilement via cette interface qu'en pointant et cliquant. Plus vous utilisez et apprenez la ligne de commande, plus vous en voyez le potentiel. Eh bien, la ligne de commande elle-même est un programme: le shell. La plupart des distributions Linux utilisent aujourd'hui Bash, et c'est ce que vous entrez dans les commandes.

Maintenant, certains d'entre vous qui utilisaient Windows avant d'utiliser Linux peuvent se souvenir des fichiers batch. Il s'agissait de petits fichiers texte que vous pouviez remplir avec des commandes à exécuter et Windows les exécutait à son tour. C'était une façon intelligente et soignée de faire certaines choses, comme lancer des jeux dans votre laboratoire d'informatique du lycée quand vous ne pouviez pas ouvrir les dossiers du système ou créer des raccourcis. Les fichiers batch dans Windows, bien qu'utiles, sont une imitation bon marché de scripts shell

Les scripts shell nous permettent de programmer des commandes dans des chaînes et de les exécuter en tant qu'événement scripté, tout comme les fichiers batch. Ils permettent également des fonctions beaucoup plus utiles, telles que la substitution de commande. Vous pouvez invoquer une commande, telle que la date, et utiliser sa sortie dans le cadre d'un schéma de dénomination de fichier. Vous pouvez automatiser les sauvegardes et chaque fichier copié peut avoir la date actuelle ajoutée à la fin de son nom. Les scripts ne sont pas seulement des invocations de commandes. Ce sont des programmes à part entière. Le script vous permet d'utiliser des fonctions de programmation, telles que les boucles 'for', les instructions if / then / else et ainsi de suite, directement dans l'interface de votre système d'exploitation. Et vous n'avez pas besoin d'apprendre une autre langue parce que vous utilisez ce que vous savez déjà: la ligne de commande.

C'est vraiment le pouvoir du script, je pense. Vous arrivez à programmer avec des commandes que vous connaissez déjà, tout en apprenant des agrafes de la plupart des principaux langages de programmation. Besoin de faire quelque chose de répétitif et fastidieux? Script le! Besoin d'un raccourci pour une commande vraiment compliquée? Script le! Vous voulez construire une interface de ligne de commande vraiment facile à utiliser pour quelque chose? Script le!

Avant de commencer

Avant de commencer notre série de scripts, couvrons quelques informations de base. Nous utiliserons le shell bash, que la plupart des distributions Linux utilisent nativement. Bash est également disponible pour les utilisateurs Mac OS et Cygwin sous Windows. Comme c'est tellement universel, vous devriez pouvoir écrire des scripts indépendamment de votre plateforme. En outre, tant que toutes les commandes référencées existent, les scripts peuvent fonctionner sur plusieurs plates-formes avec peu ou pas de réglage requis.

Les scripts peuvent facilement utiliser les privilèges "administrateur" ou "superutilisateur", il est donc préférable de tester des scripts avant de les mettre au travail. Utilisez aussi le bon sens, comme vous assurer que vous avez des sauvegardes des fichiers sur lesquels vous êtes sur le point d'exécuter un script. Il est également important d'utiliser les bonnes options, comme -i pour la commande rm, afin que votre interaction soit requise. Cela peut prévenir certaines erreurs désagréables. En tant que tel, lisez les scripts que vous téléchargez et soyez prudent avec les données que vous avez, juste au cas où les choses tournent mal.

À la base, les scripts sont simplement des fichiers texte. Vous pouvez utiliser n'importe quel éditeur de texte pour les écrire: gedit, emacs, vim, nano ... Cette liste est longue. Assurez-vous simplement de l'enregistrer en texte brut, pas en tant que texte enrichi ou document Word. Comme j'adore la facilité d'utilisation qu'offre nano, je l'utiliserai.

Script Permissions and Names

Les scripts sont exécutés comme des programmes, et pour cela, ils doivent avoir les permissions appropriées. Vous pouvez rendre les scripts exécutables en exécutant la commande suivante:

chmod + x ~ / somecrazyfolder / script1

Ceci permettra à n'importe qui d'exécuter ce script particulier. Si vous souhaitez restreindre son utilisation à votre utilisateur, vous pouvez l'utiliser à la place:

chmod u + x ~ / somecrazyfolder / script1

Pour exécuter ce script, vous devrez cd dans le répertoire approprié et ensuite exécuter le script comme ceci:

cd ~ / somecrazyfolder

./ script1

Pour rendre les choses plus pratiques, vous pouvez placer des scripts dans un dossier "bin" dans votre répertoire personnel:

~ / bin

Dans beaucoup de distributions modernes, ce dossier n'est plus créé par défaut, mais vous pouvez créer il. C'est généralement là que sont stockés les fichiers exécutables appartenant à votre utilisateur et non aux autres utilisateurs. En plaçant des scripts ici, vous pouvez simplement les exécuter en tapant leur nom, tout comme les autres commandes, au lieu de devoir utiliser le préfixe './'.

Avant de nommer un script, vous devriez commande pour vérifier si vous avez un programme installé qui utilise ce nom:

which [commande]

Beaucoup de gens nomment leurs premiers scripts "test", et quand ils essaient de l'exécuter dans la ligne de commande, rien arrive. C'est parce qu'il est en conflit avec la commande de test, qui ne fait rien sans arguments. Assurez-vous toujours que vos noms de scripts n'entrent pas en conflit avec les commandes, sinon vous risquez de vous retrouver à faire des choses que vous n'avez pas l'intention de faire!

Instructions de script

Comme je l'ai mentionné précédemment. Cela ne signifie pas que vous pouvez écrire ce que vous voulez tout bon gré mal gré, cependant. Quand un fichier texte est tenté d'être exécuté, les shells les analysent pour savoir s'il s'agit de scripts ou non, et comment gérer tout correctement. Pour cette raison, il y a quelques directives que vous devez savoir

  1. Chaque script devrait être avec "#! / Bin / bash"
  2. Chaque nouvelle ligne est une nouvelle commande
  3. Les lignes de commentaires commencent par un #
  4. Les commandes sont entourées par ()

Le Hash-Bang Hack

Lorsqu'un shell analyse un fichier texte, la manière la plus directe d'identifier le fichier en tant que script est de faire votre première ligne:

# ! / bin / bash

Si vous utilisez un autre shell, remplacez son chemin ici. Les lignes de commentaires commencent par hashes (#), mais en ajoutant le bang (!) Et le chemin shell après que ce soit une sorte de hack qui contournera cette règle de commentaire et forcera le script à s'exécuter avec le shell pointé vers cette ligne.

Nouvelle ligne = nouvelle commande

Chaque nouvelle ligne doit être considérée comme une nouvelle commande ou un composant d'un système plus important. Si les instructions / then / else, par exemple, prennent plusieurs lignes, chaque composant de ce système se trouve dans une nouvelle ligne. Ne laissez pas une commande saigner dans la ligne suivante, car cela peut tronquer la commande précédente et vous donner une erreur sur la ligne suivante. Si votre éditeur de texte le fait, vous devez désactiver l'habillage de texte pour être du bon côté. Vous pouvez désactiver l'habillage de texte en frappant nano ALT + L.

Commentaire Souvent avec #s

Si vous démarrez une ligne avec un #, la ligne est ignorée. Cela le transforme en une ligne de commentaire, où vous pouvez vous rappeler ce que la sortie de la commande précédente était, ou ce que la commande suivante fera. Encore une fois, désactivez l'habillage de texte ou divisez votre commentaire en plusieurs lignes commençant toutes par un hachage. L'utilisation de nombreux commentaires est une bonne pratique à suivre, car elle vous permet, ainsi qu'à d'autres personnes, de modifier vos scripts plus facilement. La seule exception est le hack Hash-Bang mentionné ci-dessus, donc ne pas suivre #s avec! S. ; -)

Les commandes sont entourées par des parenthèses

Dans les jours anciens, les substitutions de commandes étaient faites avec des graduations individuelles (', partage la touche ~). Nous n'allons pas encore toucher à cela, mais comme la plupart des gens partent et explorent après avoir appris les bases, c'est probablement une bonne idée de mentionner que vous devriez utiliser des parenthèses à la place. Ceci est principalement dû au fait que lorsque vous imbriquez des commandes dans d'autres commandes, les parenthèses fonctionnent mieux.

Votre premier script

Commençons par un script simple qui vous permet de copier des fichiers et d'ajouter des dates à la fin du nom. Appelons-le "datecp". D'abord, vérifions si ce nom est en conflit avec quelque chose:

Vous pouvez voir qu'il n'y a pas de sortie de la commande which, donc nous sommes tous configurés pour utiliser ce nom.

Créons un fichier vide dans le ~ / bin:

touchez ~ / bin / datecp

Et, changeons la permission maintenant, avant que nous n'oubliions:

Commençons donc à construire notre script. Ouvrez ce fichier dans votre éditeur de texte de votre choix. Comme je l'ai dit, j'aime la simplicité de nano.

nano ~ / bin / datecp

Et, allons-y et mettons la première ligne de prérequis, et un commentaire sur ce que fait ce script.

Ensuite, déclarons une variable. Si vous avez déjà pris l'algèbre, vous savez probablement ce que c'est. Une variable nous permet de stocker des informations et de faire des choses avec. Les variables peuvent "se développer" lorsqu'elles sont référencées ailleurs. Autrement dit, au lieu d'afficher leur nom, ils afficheront leur contenu stocké. Vous pouvez ensuite dire à cette même variable de stocker différentes informations, et toute instruction qui se produira après cela utilisera les nouvelles informations. C'est vraiment un espace réservé.

Que mettrons-nous en variable? Eh bien, stockons la date et l'heure! Pour ce faire, nous appellerons la commande date.

Jetez un oeil à la capture d'écran ci-dessous pour savoir comment générer la sortie de la commande date:

Vous pouvez voir cela en ajoutant différentes variables commençant par%, vous pouvez changer la sortie de la commande pour ce que vous voulez. Pour plus d'informations, vous pouvez consulter la page de manuel de la commande date

Utilisons cette dernière itération de la commande date, "date +% m_% d_% y-% H.% M.% S", et utilisez-le dans notre script.

Si nous devions enregistrer ce script maintenant, nous pourrions l'exécuter et nous donnerait la sortie de la commande date comme nous l'attendions:

Mais, faisons quelque chose de différent. Donnons un nom de variable, comme date_formatée à cette commande. La syntaxe correcte pour ceci est la suivante:

variable = $ (arguments de commande -options)

Et pour nous, nous le construirions comme ceci:

date_formatted = $ (date +% m_% d_% y-% H.% M.% S)

C'est ce que nous appelons la substitution de commandes. Nous disons essentiellement à bash que chaque fois que la variable "date_formatted" apparaît, pour exécuter la commande à l'intérieur des parenthèses. Ensuite, quelle que soit la sortie, les commandes doivent être affichées à la place du nom de la variable, "date_formatée".

Voici un exemple de script et sa sortie:

Notez qu'il y a deux espaces dans la sortie. L'espace dans les guillemets de la commande echo et l'espace devant la variable sont tous les deux affichés. N'utilisez pas d'espaces si vous ne voulez pas qu'ils apparaissent. Notez également que sans cette ligne "echo" ajoutée, le script ne donnerait absolument aucune sortie.

Revenons à notre script. Ajoutons maintenant dans la partie copie de la commande

cp -iv $ 1 $ 2. $ date_formatted

Ceci appelle la commande copy, avec les options -i et -v. Le premier vous demandera une vérification avant d'écraser un fichier, et ce dernier affichera ce qui est en panne sur la ligne de commande.

Ensuite, vous pouvez voir que j'ai ajouté l'option "$ 1". Lors de l'écriture de scripts, un signe dollar ($) suivi d'un nombre indique l'argument numéroté du script lors de son invocation. Par exemple, dans la commande suivante:

cp -iv Trogdor2.mp3 ringtone.mp3

Le premier argument est "Trogdor2.mp3" et le deuxième argument est "ringtone.mp3".

En revenant sur notre script, nous pouvons voir que nous référençons deux arguments:

Cela signifie que lorsque nous exécuterons le script, nous aurons besoin de fournir deux arguments pour que le script s'exécute correctement. Le premier argument, $ 1, est le fichier qui sera copié et est remplacé par le premier argument de la commande "cp -iv"

Le deuxième argument, $ 2, agira comme le fichier de sortie pour la même commande. Mais, vous pouvez également voir que c'est différent. Nous avons ajouté un point et nous avons référencé la variable "date_formatée" ci-dessus.

Voici ce qui se passe quand le script est lancé:

Vous pouvez voir que le fichier de sortie est listé comme tout ce que j'ai entré pour $ 2, suivi d'un point, puis de la sortie de la commande date ! Ça a du sens, non?

Maintenant, quand j'exécute la commande datecp, il va exécuter ce script et me permettre de copier n'importe quel fichier vers un nouvel emplacement, et ajouter automatiquement la date et l'heure à la fin du nom de fichier. Utile pour archiver des choses!


Les scripts Shell sont au cœur de votre système d'exploitation. Vous n'avez pas besoin d'apprendre un nouveau langage de programmation pour y arriver non plus. Essayez les scripts avec quelques commandes de base à la maison et commencez à penser à ce que vous pouvez utiliser pour cela.

Est-ce que vous écrivez? Avez-vous des conseils pour les débutants? Partagez votre opinion dans les commentaires! Il y a plus à venir dans cette série!


Comment obtenir la traditionnelle

Comment obtenir la traditionnelle "List View" dans les paramètres

Du LG G5 Il y a quelques années, une tendance a commencé avec les fabricants d'Android où ils pensaient que ce serait une bonne idée de prendre les paramètres menu-un endroit généralement simple sur la plupart des téléphones-et paginez-le. Ainsi, au lieu d'avoir une liste solide de choses qui peuvent rapidement défiler jusqu'à ce que vous trouviez ce que vous cherchez, vous êtes obligé de feuilleter une série d'onglets et puis de les parcourir.

(how-to)

Comment créer des archives Zip ou 7z chiffrées sur n'importe quel système d'exploitation

Comment créer des archives Zip ou 7z chiffrées sur n'importe quel système d'exploitation

Les fichiers Zip peuvent être protégés par mot de passe, mais le schéma de chiffrement Zip standard est extrêmement faible. Si votre système d'exploitation possède un moyen intégré de crypter les fichiers zip, vous ne devriez probablement pas l'utiliser. Pour bénéficier des avantages réels du cryptage, vous devez utiliser le cryptage AES-256.

(how-to)