Scripts Bash Linux. Une sélection de scripts shell pour toutes les occasions. Apprendre à écrire des scénarios

Quelle que soit la simple interface graphique sous Linux et combien de fonctions il y a de nombreuses tâches, il existe des tâches encore plus pratiques pour résoudre le terminal. Premièrement, car il est plus rapide, deuxièmement, toutes les machines n'ont pas une interface graphique, par exemple, sur les serveurs, toutes les actions sont effectuées via le terminal, afin de sauvegarder des ressources informatiques.

Si vous êtes déjà un utilisateur plus expérimenté, alors effectuez probablement souvent diverses tâches à travers le terminal. Il existe souvent des tâches pour lesquelles vous devez exécuter plusieurs commandes à son tour, par exemple, pour mettre à jour le système, vous devez d'abord mettre à jour les référentiels, puis télécharger de nouvelles versions de packages. Ce n'est que beaucoup d'exemples et de telles actions, même de sauvegarder et de télécharger des fichiers copiés sur un serveur distant. Par conséquent, de manière à ne pas composer plusieurs fois les mêmes commandes, vous pouvez utiliser des scripts. Dans cet article, nous envisagerons d'écrire des scripts à bash, de considérer les principaux opérateurs, ainsi que de la manière dont ils fonctionnent, pour ainsi dire des scripts Bash à partir de zéro.

Le script ou tel qu'il est également appelé - le script, il s'agit de la séquence de commande que la file d'attente lit et exécute le programme d'interprétation, dans notre cas, il s'agit d'un programme de ligne de commande - Bash.

Le script est un fichier texte ordinaire qui répertorie les commandes habituelles que nous utilisions manuellement, ainsi que le programme qui les exécutera. Le chargeur de démarrage qui exécutera le script ne sait pas comment travailler avec les variables d'environnement, il doit donc passer la voie exacte au programme que vous souhaitez exécuter. Et puis il donnera déjà à votre script à ce programme et exécution commencera.

L'exemple le plus simple du script pour la coquille de commande bash:

! / bin / bash
Echo "bonjour monde"

L'utilitaire ECHO affiche la chaîne transmise à l'écran. La première chaîne est spéciale, elle définit le programme qui exécutera des commandes. De manière générale, nous pouvons créer un script dans n'importe quel autre langage de programmation et spécifier l'interpréteur souhaité, par exemple, sur Python:

! / Usr / bin / env python
Imprimer ("Hello World")

Ou php:

! / Usr / bin / env Php
Echo "bonjour monde";

Dans le premier cas, nous avons directement signalé le programme qui exécutera des commandes, dans les deux autres, nous ne connaissons pas l'adresse exacte du programme. Nous demandons donc à l'utilitaire env de la trouver par nom et exécuter. Cette approche est utilisée dans de nombreux scripts. Mais ce n'est pas tout. Dans le système Linux, de sorte que le système puisse exécuter le script, vous devez installer l'indicateur exécutable du drapeau dans le fichier.

Ce drapeau ne change rien dans le fichier lui-même, ne dit que le système qu'il ne s'agit pas simplement d'un fichier texte, mais du programme et qu'il doit être exécuté, ouvrez le fichier, découvrez l'interprète et exécuter. Si l'interprète n'est pas spécifié, l'interprète utilisateur sera utilisé par défaut. Mais puisque tout le monde n'utilise pas Bash, il est nécessaire de le préciser clairement.

Effectuer:

chmod ugo + x fichier_script

Maintenant, nous effectuons notre petit programme:

./file_script

Tout fonctionne. Vous savez déjà comment écrire un petit script, disons à la mise à jour. Comme vous pouvez le constater, les scripts contiennent les mêmes commandes qu'elles sont effectuées dans le terminal, elles sont très simples à écrire. Mais maintenant, nous compliquons un peu la tâche. Étant donné que le script est un programme, il doit faire des solutions vous-même, stocker les résultats de l'exécution des commandes et effectuer des cycles. Tout cela vous permet de faire une gaine de bash. Vrai, tout est plus compliqué ici. Commençons par un simple.

Variables dans les scripts

Écrire des scripts sur bash coûte rarement sans stocker des données temporaires, ce qui signifie créer des variables. Aucune variables ne fait aucun langage de programmation et notre langue primitive de la coquille de commande aussi.

Vous avez peut-être déjà rencontré des variables d'environnement. Donc, ce sont les mêmes variables et elles travaillent de la même manière.

Par exemple, nous allons déclarer la variable de chaîne:

string \u003d "bonjour monde"

La valeur de notre rangée dans des citations. Mais les citations ne sont pas toujours nécessaires. Ici, le principe principal de Bash est maintenu - l'espace est un symbole spécial, séparateur, de sorte que sinon utiliser des citations du monde sera déjà considérée comme une équipe distincte, pour la même raison que nous ne mettons pas d'espaces avant et après que le panneau soit égal.

Pour afficher la valeur de la variable est utilisé par le symbole $. Par example:

Nous modifions notre script:

! / bin / bash
String1 \u003d "bonjour"
String2 \u003d monde.
String \u003d $ string1 $ string2
Echo $ string

Et vérifie:

BASH ne distingue pas les types de variables en langues de haut niveau, par exemple C ++, vous pouvez affecter une variable du nombre et de la chaîne. De même, tout cela sera considéré comme une chaîne. Le shell ne supporte que la fusion des lignes, car cela écrivez simplement les noms de la variable de suite:

! / bin / bash
String1 \u003d "bonjour"
String2 \u003d monde.
String \u003d $ string1 $ string2 \\ \\ me
String3 \u003d $ string1 $ string2 "et moi"
Echo $ string3.

Vérifier:

Veuillez noter que comme je l'ai dit, les citations sont facultatives s'il n'y a pas de spécialistes dans la ligne. Jetez un coup d'œil aux deux façons de fusionner des lignes, voici également le rôle de citations. Si vous avez besoin de moyens plus complexes pour traiter des lignes ou des opérations arithmétiques, il n'est pas inclus dans la possibilité de la coquille, car cela utilise des utilitaires conventionnels.

Variables courantes et sortie

Les variables ne seraient pas aussi utiles s'il était impossible d'enregistrer le résultat de l'utilitaire. Cela utilise une telle syntaxe:

$(équipe )

Avec cette conception, la sortie de la commande sera redirigée directement là où elle a été appelée, et non à l'écran. Par exemple, l'utilitaire de date renvoie la date actuelle. Ces équipes sont équivalentes:

Comprenez vous? Écrivez un script où Hello World sera sortie et date:

string1 \u003d "bonjour monde"
String2 \u003d $ (date)

string \u003d $ string1 $ string2

Maintenant, vous en savez assez sur les variables et prêts à créer un script Bash, mais ce n'est toujours pas tout. Ensuite, nous examinerons les paramètres et les structures de contrôle. Permettez-moi de vous rappeler que celles-ci sont toutes les commandes Bash habituelles et vous les enregistrez éventuellement dans le fichier, vous pouvez effectuer immédiatement en déplacement.

Paramètres de script

Vous ne pouvez pas toujours créer un script Bash qui ne dépend pas de la saisie de l'utilisateur. Dans la plupart des cas, vous devez demander à l'utilisateur de prendre ou quel fichier à utiliser. Lorsque vous appelez le script, nous pouvons transmettre des paramètres. Tous ces paramètres sont disponibles sous forme de variables avec des noms sous forme de chiffres.

La variable avec le nom 1 contient la valeur du premier paramètre, la variable 2, la seconde et ainsi de suite. Ce script Bash affichera la valeur du premier paramètre:

! / bin / bash
Echo 1 $.

Structures de contrôle dans les scripts

La création d'un script Bash ne serait pas utile d'analyser certains facteurs sans pouvoir analyser les actions nécessaires en réponse. C'est un sujet assez difficile, mais il est très important pour créer un script Bash.

En Bash, il existe une commande de syntaxe pour vérifier les conditions:

si Team_Lot
puis.
équipe
aUTRE.
équipe
fi

Cette commande vérifie le code de commande de condition et si 0 (Succès) exécute une commande ou plusieurs commandes après le mot, si le code de terminaison 1 est exécuté par l'unité d'essentielle, fi signifie compléter le bloc de commande.

Mais puisque nous vous demandons le plus souvent de ne pas renvoyer la commande, mais une comparaison et des chiffres de ligne, [[[[[[[, qui vous permet d'effectuer diverses comparaisons et de donner le code de retour en fonction du résultat de la comparaison. Sa syntaxe:

[[Paramètre 1 paramètre opérateur2]]

À titre de comparaison, les opérateurs déjà familiers sont utilisés.<,>, \u003d,! \u003d etc. Si l'expression est vraie, l'équipe reviendra 0, sinon - 1. Vous pouvez tester son comportement un peu dans le terminal. Le code de retour de la dernière commande est stocké dans une variable $?:

Maintenant, l'association tout cela et nous obtenons un script avec une expression conditionnelle:

! / bin / bash
Si [1 $\u003e 2]]
Puis.
Echo 1 $ "Voir 2"
AUTRE.
Echo 1 $ "moins de 2 ou 2"
Fi

Bien sûr, cette conception a des caractéristiques plus puissantes, mais il est trop difficile de les considérer dans cet article. Je vais peut-être écrire à ce sujet plus tard. En attendant, nous nous tournons vers les cycles.

Cycles dans les scripts

L'avantage des programmes est que nous pouvons spécifier les actions nécessaires à plusieurs fois. Par exemple, il est possible d'écrire des scripts à bash, qui ne constituent que plusieurs lignes et sont effectuées par des heures, en analysant les paramètres et exécutant les actions nécessaires.

Premièrement considérer le pour. Voici sa syntaxe:

pour la variable dans la liste
fais.
équipe
fait

Il passe via toute la liste et attribue une valeur variable de la liste de la liste, après chaque affectation, effectue des commandes situées entre le fait et effectué.

Par exemple, je vais courir cinq chiffres:

pour l'index dans 1 2 3 4 5
fais.
Echo $ index
Fait

Ou vous pouvez répertorier tous les fichiers du répertoire actuel:

pour le fichier en $ (LS -L); Faire écho "$ dossier"; Fait

Comme vous le comprenez, vous pouvez non seulement retirer les noms, mais également pour effectuer les actions nécessaires, il est très utile lorsque la création du script Bash est effectuée.

Le deuxième cycle, que nous considérons, c'est le cycle de temps, il fonctionne pendant que les conditions de la commande renvoient le code 0, le succès. Considérons la syntaxe:

tandis que l'état de l'équipe
fais.
équipe
fait

Considérons un exemple:

! / bin / bash
index \u003d 1.
Tandis que [$ index< 5 ]]
fais.
Echo $ index
Laissez "index \u003d index + 1"
Fait

Comme vous pouvez le constater, tout est exécuté, la commande Laissez simplement effectue simplement l'opération mathématique spécifiée, dans notre cas augmente la valeur de la variable par unité.

Je voudrais célébrer quelque chose d'autre. Designs tels que, pour, si elles sont conçues pour écrire dans quelques lignes et si vous essayez de les écrire à une ligne, vous obtiendrez une erreur. Mais néanmoins, cela est possible pour cela où la traduction de la ligne devrait être un point avec une virgule ";". Par exemple, le cycle précédent pourrait être effectué en tant que ligne:

index \u003d 1; Tandis que [$ index< 5 ]]; do echo $index; let "index=index+1"; done;

Tout est très simple, j'ai essayé de ne pas compliquer d'article par des termes et des capacités supplémentaires de bash, seul le plus basique. Dans certains cas, vous devrez peut-être effectuer l'interface graphique du script Bash, puis vous pouvez utiliser de tels programmes tels que Zenity ou Kdialog, avec l'aide d'eux très pratique pour afficher des messages à l'utilisateur et même demander des informations de lui.

conclusions

Vous comprenez maintenant les bases de la création d'un script sous Linux et vous pouvez écrire le script dont vous avez besoin, par exemple, pour la sauvegarde. J'ai essayé de considérer les scripts Bash à partir de zéro. Par conséquent, tous les aspects n'étaient pas pris en compte. Nous reviendrons peut-être à ce sujet dans l'un des articles suivants.

Ligne de commande et ces choses inimaginables pouvant être créées avec elle - la carte de visite Unix et tous ses héritiers. Et où il y a une ligne de commande, il y a des scripts. Et aujourd'hui ... Non, nous n'apprendrons pas à écrire des scripts, nous examinerons les plus utiles d'eux, ceux que vous pouvez appliquer quotidiennement pour résoudre le plus différent du cercle de tâches, à partir des rapports météorologiques et du serveur Web à une ligne. et se terminant par un bot pour Twitter à dix rangées et un script pour un lancement automatique de tout client torrent.

Effectuer immédiatement une réservation que je ne suis pas du tout l'adhérent du chamanisme et vous ne vous exhumez en aucun cas de vous asseoir dans la console verte et noire et composez un tas de lettres pour effectuer des actions pour lesquelles l'interface graphique suffit pour amener la souris à l'élément souhaité. Cependant, je suis convaincu que de résoudre de nombreuses tâches, la console et les scripts sont bien meilleurs que l'interface graphique et il est donc impossible de les négliger. De plus, tout de DEF vous permet de créer une icône pour le script. Il ne sera donc même pas nécessaire d'ouvrir la console pour son lancement.

Exemples simples

Donc, pas en fait, nous allons passer immédiatement aux exemples:

$ curl ifconfig.co.

Cette simple commande vous montrera une adresse IP externe - l'option parfaite si vous allez au réseau via le routeur. Tout ce qu'elle fait est simplement désignant le serveur IFCONFIG.CO qui retourne le retour sur IP Schnick d'une ligne au lieu d'une page Web à part entière.

Et oui, ce n'est pas un script du tout, c'est juste une commande, mais pour activer la commande au script, il suffit de le mettre dans un fichier texte et d'ajouter la première ligne à la soi-disant shebang, c'est-à-dire les symboles # ! Derrière le nom de l'interprète de commandement:

$ chmod + x ~ / bin / myip.sh

Maintenant, il peut être appelé à partir de la ligne de commande avec la commande myip.sh.

#! / Bin / sh curl -4 wtr.in/moscou

Ce script vous permet d'obtenir un résumé de jour pendant quatre jours. Le principe ici est le même que dans le cas de ifconfig.co.

Résumé météo dans la console #! / Bin / sh dig + txt court $ 1.wp.dg.cx

Et vous pouvez donc avoir une brève description de tout ce qui est à Wikipedia, à l'aide d'une demande DNS au lieu d'accéder au serveur Web. À propos, le serveur Web via la ligne de commande est également très facile à créer:

#! / Bin / sh pendant (NC -L 80< file.html > :); Fais:; Fait

Ce script est basé sur l'utilitaire NetCat (NC), appelé le couteau suisse de l'armée pour les opérations de réseau. Le script démarre le cycle qui exécute la commande NC qui écoute le 80e port et renvoie à la demande de demande. file.htmlEn envoyant une demande transmise à nulle part (le symbole signifie noop, c'est-à-dire une opération vide).

En utilisant des scripts et des commandes simples, vous pouvez facilement écouter la radio Internet:

#! / Bin / sh mpv --volume \u003d 50 -PlayList ~ / 16bit.fm_128.m3u

Naturellement, la liste de lecture au format M3U doit être téléchargée à l'avance à partir de la station de radio. Au fait, si vous exécutez Mplayer avec un argument --Input-IPC-Server \u003d / TMP / MPVSocketIls peuvent être gérés par des commandes d'enregistrement dans le fichier. Par exemple, ajustez le volume:

Echo "volume +10" | Socat - / TMP / MPVSocket

Créez deux scripts: un pour démarrer, un autre pour arrêter la radio (avec la chaîne de MPV KillAllal), il y en a sur le bureau et l'ambiance des touches de raccourci pour contrôler la lecture. Voila, vous avez un lecteur Web pour la radio Internet, qui peut être, cliquez simplement sur l'icône sur le bureau. Et il ne passera presque pas la mémoire ni n'occupera un plateau.

Mais nous nous disons des opérations du réseau et nous retournons aux affaires locales.

#! / Bin / sh ta -czf "../ème (pwd ## * /) .tar.gz".

C'est l'un de mes scripts préférés. Il crée une archive tar.gz du répertoire actuel. Une attention particulière ici mérite ici de la conception $ (PWD ## * /), qui prend le chemin complet de l'annuaire actuel (variable $ PWD) et supprime la première partie de celle-ci jusqu'à la dernière barre oblique, laissant uniquement le nom du répertoire lui-même. À côté d'elle est ajoutée EXTENSION TAR.GZ. Vous pouvez en savoir plus sur de telles conceptions chez l'homme bash.

#! / Bin / sh tandis que vrai; FAIT INCOTIFYWAIT -R -E Modifier le catalogue && VOTRE_AND FAIT

Et ceci est déjà un script qui exécute la commande en réponse à la modification de fichiers dans le répertoire. Il peut être utilisé à une variété d'objectifs différents, par exemple, d'allumer automatiquement le lecteur tout en enregistrant un fichier MP3. Ou affichez simplement une notification sur le bureau, en utilisant la commande notify-envoyer en tant que commande:

Notifier-envoyer "fichier changé"

Bureau

Depuis que nous avons commencé à parler de bureau, je continuerai. Comme la console, il peut également être scripté. Ici, par exemple, un script chargement d'écran aléatoire, publié sur le papier peint de canal Reddit:

Continuation disponible uniquement aux participants

Option 1. Rejoignez la communauté du site pour lire tous les matériaux sur le site.

L'adhésion à la communauté pendant la période spécifiée vous ouvrira votre accès à tous les matériaux de pirate informatique, augmentera votre rabais accumulatif personnel et accumulera une note professionnelle Xakep Score!

Tout d'abord, regardons ce que scénario. Et pourquoi c'est nécessaire.

Scénario. Traduit de l'anglais - scénario. Nous regardons tous des films, beaucoup d'entre nous - performances. Pour créer un film / des performances, les scripts écrient des scripts, sur la base desquels artistes, la scène par scène effectuent leurs rôles sur la scène, à partir duquel se plie le film / la performance. Les travaux sur la création d'un scénario sont assez laborieux, où il est nécessaire de prendre en compte tout pour que les plus petits détails, de sorte que, en définitive, les artistes puissent effectuer un scénariste planifié et que le spectateur a vu un travail holistique.

De même, les scripts sont écrits pour exécuter une liste de tâches que l'utilisateur est ensemble (code) pour faciliter leur exécution et plus rapidement dans le système d'exploitation. Pour écrire des scripts simples, il n'est pas nécessaire d'avoir une éducation d'un programmeur du tout.

Pour commencer, créons le plus que ni la plus simple script-shell. Mettre à jour le système.

Toutes les actions que je passerai avec le système Ubuntu.mais ils s'appliquent à d'autres systèmes Linux.dérivé de Ubuntu.. Pour cela, nous aurons besoin de: Éditeur de textepour le remplir avec les tâches nécessaires pour créer un script (code) et Terminal - Pour exécuter le script créé. Ces outils sont installés dans n'importe quelle distribution Linux. défaut.

Alors, ouvrez un éditeur de texte Gedit. et introduisez-les les premiers symboles obligatoires appelés case.
case Dans la programmation, il s'agit d'une séquence de deux caractères: grilles et marquage d'exclamation ( #! ) Au début du fichier de script. Et ajouter à ces symboles sans espaces / bin / sh - Interprète où le script sera exécuté. / bin / sh - C'est habituel Shell de Bourne. ou interpréteur de ligne de commande compatible qui transmet "Chemin / à / script" comme premier paramètre.
La première chaîne de script obligatoire ressemblera à ceci:

# Mon premier script ubuntu mise à jour

Le panneau de réseau (#) au tout début de la chaîne donne pour comprendre l'interprète / terminal que cette ligne n'est pas nécessaire pour lire et effectuer. La chaîne est nécessaire dans le code de ce script afin que le créateur du script lui-même sache qu'il va se produire sur ce segment / scène dans le code afin de ne pas être confondu à l'avenir lorsqu'il existe de nombreuses lignes. Ces lignes avec un signe de réseau sont appelées - commenté .

sudo apt mise à jour.
sudo apt mise à niveau -

-y À la fin de la deuxième commande, il donne à comprendre l'interpréteur / terminal que cette action / commande doit être effectuée automatiquement, sans confirmation supplémentaire de l'utilisateur, en appuyant sur la touche Contribution. y. - abrégé d'anglais oui. oui.

C'est tout. Votre premier script est créé. Vous devriez avoir une photo comme une photo:


Il reste à enregistrer le fichier / script créé et lui donner Nom avec une expansion obligatoire à la fin - .sh.. Expansion .sh. Attribué au fichier exécutable.
je lui ai donné Nom - update.sh., Sauvegarde B. Dossier à domicile Utilisateur:


Pour que le fichier / script créé soit exécuté, cela doit être donné la permission. Ceci peut être fait de deux façons.

1. Exécutez la commande suivante dans le terminal:

Sudo chmod + x update.sh

2. Ouvrez le gestionnaire de fichiers dans Dossier à domicile (où vous avez enregistré le script créé), cliquez avec le bouton droit de la souris sur le fichier, dans le menu contextuel - Propriétés - Droits et activer l'article - Performance: Autoriser l'exécution du fichier en tant que programmes:


Pour effectuer le script créé, vous devez ouvrir le terminal (ce que j'ai écrit au tout début de l'article, que le terminal est l'attribut / outil nécessaire pour exécuter le script), introduire sH, via Gap le nom du script - update.sh. Et appuyez sur la touche Contribution:


Soit dans le terminal introduire sH Et faites glisser le fichier créé avec un script à partir du gestionnaire de fichiers (également dans l'espace):


Après le chemin du fichier apparaît après la commande sH et espace, appuyez simplement sur la touche ENTRER (Entrez) pour mettre à jour le système:


Maintenant à tout moment, vous pouvez mettre à jour le système créé par votre propre script.

Oui, quelqu'un peut affirmer que la mise à jour du système n'est pas difficile de faire ces deux équipes dans le terminal, pourquoi attirer et créer des scripts? C'est exact. Mais ceci est un exemple de création du script le plus simple pour montrer que "aucun dieux brûle" 😃.

Après avoir appris à écrire et à utiliser les scripts les plus simples, vous pouvez créer un script permettant de configurer le système afin que, dans le cas de la réinstallation du système, vous pouvez utiliser le scénario créé sans avoir à rechercher des sites chaque fois que des paramètres similaires.

Beaucoup d'entre vous sont susceptibles d'utiliser des sites sur la mise en place d'un système, tel que ceux que je suis publié après la sortie de la prochaine version Ubuntu. - Ubuntu après l'installation ou des sites similaires. Ouvrez un de ces sites:, puis un éditeur de texte pour créer un script.
Par exemple, j'ai fait la pièce suivante.

Dans un éditeur de texte, nous entrons dans la première ligne obligatoire:

# Setup ubuntu après avoir commencé
Système de mise à niveau

Vous trouverez ci-dessous les commandes de mise à jour du système:

sudo apt mise à jour.
sudo apt mise à niveau -

Description de la chaîne: Ajout de référentiel:

Ajouter des référentiels

Et ajoutez les référentiels nécessaires à une installation supplémentaire du logiciel:

sudo add-apt-référentiel "Deb http://archive.canonical.com/ $ (lsb_release -c) partenaire" -y
sudo add-apt-référentiel PPA: Ataireo / Telegram -y
sudo add-apt-référentiel PPA: Ataeo / Atareao -y

Sudo Add-Apt-Repository PPA: Nemh / Systemback -y
sudo Add-Apt-Repository PPA: GerardPuig / PPA -Y
sudo Add-Apt-Repository PPA: Haecker-Felix / Gradio-Daily -y -y

Après que les référentiels nécessaires sont ajoutés (je répète, vous pouvez avoir vos référentiels, j'ai un exemple), vous devez mettre à jour le système:

Chaîne avec description:

Système de mise à jour après la connexion de référentiel

Et équipe d'exécution:

sudo apt mise à jour.

Maintenant que les référentiels sont ajoutés et que le système est mis à jour, la file d'attente est dans l'installation de programmes:

Programme d'installation

Pour installer des programmes, entrez la commande une fois. sudo apt installerEt ensuite à travers les espaces de cette chaîne pour ajouter combien de programmes, la principale chose est qu'ils sont correctement compilés. Si un programme consiste en plusieurs mots, son équipe doit être monolithique, c'est-à-dire Tous les mots doivent être entrés à travers une vis, par exemple: unity-tweak-outil:

sudo apt Installer mon télégramme Skype LM-Sensors HDDTEMP Psensor gdebi Systemback Unity-tweak-outil Ubuntu-Cleaner Grio -y

Installation de codecs supplémentaires

# Multimédia et codecs

sudo apt install ubuntu-restreint-extras -y

Désactiver pour les échecs dans le système

# Désactiver les rapports échecs dans le système

sudo sed -i "s / activé \u003d 1 / activé \u003d 0 / g" / etc / par défaut / APPORT "

Eh bien, peut-être que c'est tout. Ce fichier de script créé devrait ressembler à ceci:


Besoin de l'enregistrer (cliquez sur le bouton Sauvegarder) Et donner Nom Avec extension .sh.. Je l'ai appelé Setup \\ ubuntu.sh. (Vous pouvez appeler différemment, mais lié à l'extension.sh):


Nous faisons l'exécutable de script créé:

sudo chmod + x setup \\ ubuntu.sh

Pour exécuter le script créé, entrez dans le terminal sH et le nom du script créé à travers l'espace, ou sH, espace et faites glisser dans le fichier Créé des terminaux, comme expliqué précédemment dans le script le plus simple et appuyez sur la touche. ContributionPour son exécution.

Noter. Slash inverse en équipe Setup \\ ubuntu.sh. Vis un espace dans le nom du fichier pour le terminal entre deux mots distincts.

Une fois le script exécuté, stockez-le pour l'avenir, pour un système de réinstallation éventuelle et une ré-réglage, il est préférable d'une section distincte avec un disque dans un dossier. / Domicile.. S'il n'y a pas, alors dans le type de service de cloud (warehouse de Data Warehouse): Dropbox, Mail.ru Cloud, Mega.CO etc., afin d'utiliser le script à tout moment ou d'aider familiers ou parents dans le réglage du système.

Pour Écrire un script simple sur bashNous devrons effectuer les actions simples suivantes:

Comment ça marche:

la première ligne de notre script #! / Bin / bash est extrêmement nécessaire, de sorte que notre script est terminé avec succès.

la deuxième ligne de Mkdir Testdir crée un catalogue TestDir

la troisième ligne CD TestDir vous permet d'accéder au répertoire TestDir créé.

équipe toucher Dans la ligne suivante, Touch File1 File2 File2 crée trois fichiers

et la dernière commande de la chaîne de notre script LS -al vous permet d'afficher le contenu du répertoire actuel, dans lequel, grâce à la ligne précédente, trois fichiers vides sont apparus.

Comme on voit, dans notre script simple Toutes les commandes commencent par une nouvelle ligne. Chaque ligne lors du démarrage du script, effectue systématiquement ses travaux, effectuant certaines actions.

Si vous effectuez une chaîne de toutes les commandes identiques tous les jours (avec des paramètres constants) sous Linux, il peut être logique d'écrire le même script simple sur bashCe qui vous sauvera pour économiser votre temps et automatiser votre travail.

Pour Écrire un script simple sur bashNous devrons effectuer les actions simples suivantes:

Comment ça marche:

la première ligne de notre script est extrêmement nécessaire, de sorte que notre script est terminé avec succès.

la deuxième ligne crée un catalogue TestDir

la troisième ligne vous permet d'accéder au répertoire TestDir créé

équipe toucher Dans la ligne suivante crée trois fichiers

et la dernière commande de la ligne de notre script vous permet d'afficher le contenu du répertoire actuel, dans lequel, grâce à la ligne précédente, trois fichiers vides sont apparus.

Comme on voit, dans notre script simple Toutes les commandes commencent par une nouvelle ligne. Chaque ligne lors du démarrage du script, effectue systématiquement ses travaux, effectuant certaines actions.

Si vous effectuez une chaîne de toutes les commandes identiques tous les jours (avec des paramètres constants) sous Linux, il peut être logique d'écrire le même script simple sur bashCe qui vous sauvera pour économiser votre temps et automatiser votre travail.

Il arrive souvent qu'il est nécessaire d'automatiser certaines mesures. Les scripts Bash arrivent toujours à la rescousse!
N'oubliez pas que pour démarrer le script, vous devez modifier les droits d'accès, ajoutant la possibilité d'exécuter le fichier.

1. Suivre-sortie, redirection

#! / Bin / bash # Tout script shell commence toujours avec une ligne #! / Bin / bash (ou #! / Bin / sh) # Commentaires Commentaires TOUJOURS COMMENCE DU # # SANCHE Pour afficher un message à l'écran, utilisez l'ECHO. commande echo "bonjour, monde" # et ceci est un exemple de sortie formatée ...

presque comme dans le SI Printf "Retrait formaté dix \u003d% D String \u003d% s float \u003d% f hexnehane_number \u003d 0x% x \\ n" 10 "rangée" 11.56 234 # Exemple d'entrée de lecture du clavier Lire un écho $ A Printf " Vous venez d'entrer dans le mot:% s \\ n "" $ A "# Redirection, convoyeurs, obtention du résultat de la sortie d'un autre programme # Un exemple de génération de mot de passe sur 10 lettres Password1 \u003d` chat / dev / ur / urandom | TR -C 'A-ZA-Z0-9' | Plongé -w 10 | Tête -1` echo mot de passe \u003d $ mot de passe1 # citations de type "Donnez le résultat de la sortie sur l'écran qui à l'intérieur d'eux (c'est-à-dire un programme ou un script écrit à l'intérieur de ces citations et le résultat affiché par celui-ci sur la sortie norme est le résultat de L'opération "Inverse citations" # Dans ce cas, le résultat est la sortie du convoyeur de plusieurs programmes.

Scripts Bash intéressants pour les amateurs de terminaux à Linux

# Opération | Indique un convoyeur. Ceux. Dans notre exemple: #cat / dev / urandom affiche le contenu du fichier / dev / urandom (fichier spécial pour générer de pseudo-oscillateur) #tr Traduire, c'est-à-dire Remplace certains octets par d'autres d'autres (il est nécessaire d'éviter l'apparition de caractères non oscillants dans le mot de passe) #fed Le fait qu'il est venu à STD.L'article sur les cordes 10 caractères et l'affiche à STD. #Head - 1 Affiche la première ligne de ce qu'elle est venue à une entrée standard. # ou donc: mot de passe2 \u003d `chat / dev / urandom | TR -DC _A-Z-A-Z-0-9 | Head -C10` echo mot de passe \u003d $ mot de passe2

2. Actions d'information, cycles par nombre de fois

#! / bin / bash a \u003d "10" b \u003d "5" c \u003d `EXPR $ A + $ b` printf" A \u003d 10 b \u003d 5 c \u003d EXPR \\ $ A + \\ $ bc \u003d% d \\ n " "$ C" # exemple d'un cycle selon II \u003d 0 tandis que [$ i -LT 15] do printf "0x% 02x" "$ i" i \u003d `expr € i + 1` fait écho

3. Vérification interrompue

#! / Bin / bash # Exemple de vérification de l'existence d'un fichier # Créer un fichier Test1 Touch Test1 # Pour vérifier l'existence du fichier Test1 si [-F Test1]; Ensuite, echo "Test de fichier1 existe" FI # Vérification de la non-existence du test2 si le fichier! [-F test2]; Ensuite, echo "Le fichier Test2 n'existe pas" FI # Brève aide sur d'autres options Commandes # -D Le répertoire de fichier de fichier existe # -f FileName Fichier existe # -L Lien de caractère FileName existe # -R, -W, -X Dossier disponible pour la lecture, L'écriture ou l'exécution d'un fichier de fichier # -S existe et a une longueur non nulle # F1 -NT F2 F1 plus récente que F2 # F1 -OT F2 F1 plus âgé que F2

Tags: Bash, FreeBsd, Shell

Écrivez un commentaire à travers:

Comment écrire un script simple sur bash

Comment exécuter plusieurs commandes de plusieurs commandes dans ou à droite? Si vous devez exécuter quelques commandes, le symbole est défini entre eux. ; »Appelé métacaracter (métacaracter). Syntaxis Suivant commande1; Commande2; Commande3

Équipes séparées par le signe " ; »Effectué séquentiellement. Shell attend la commande suivante et retourner à l'invitation de ligne de commande survient après l'exécution de la dernière commande.

Exécution simultanée de plusieurs commandes

Pour commencer plusieurs équipes à la fois, mettez AMPersand "&" à la fin de l'équipe. Par exemple, considérez le début du script de sauvegarde:

# /root/ftpbackup.sh &

Et votre terminal est gratuit pour une utilisation ultérieure, vous n'avez pas besoin d'attendre la fin de l'exécution du /root/ftpbackup.sh!

Utilisation de tous ensemble

Vous pouvez avoir des milliers de fichiers * .bak. Mais vous n'avez besoin que de répertorier les catégories nécessaires et de tout mettre dans / TMP / List:

# Pour D in "/ home / ventes / home / dbs / data1"; Recherchez $ D -Nameame "* .bak" \u003e\u003e / TMP / liste; Fait &

Une source

Nous étudions Bash (bases)

Date: 2012-12-10

Apprendre à écrire des scénarios

Pour la plupart, l'ensemble de Linux consiste en des scripts, vous devez donc juste avoir besoin de connaître cette langue.
En substance, il s'agit simplement d'un ensemble de commandes Linux, associées à différents designs dans un code compétent et bien pensé.

Créons notre premier script.
Pour ce faire, ouvrez simplement l'éditeur de texte et remplissez le fichier comme suit:

#! / Bin / bash
qui; Date.

Tout est simple ici.
En substance, le signe de Dieza (#), dans la plupart des cas, est considéré comme le début du commentaire, cependant, à partir de la première ligne, il nous dit que l'interprète Bash doit être utilisé.

1) Il est nécessaire de donner le droit d'exécuter

chmod u + x bash1.sh

USR / local / bin: / usr / sbin: / bin: / bin: / sbin: / bin: / usr / jeu

Et déplacez ce fichier sur l'un des répertoires, sauf si bien sûr, vous devez le contacter simplement par nom et non à l'emplacement complet.

Ici, nous avons examiné comment le script est créé, alors vous devez comprendre quelques choses.

Toujours lorsque vous écrivez des scripts, nous manipulerons les variables, rediriger l'entrée et la sortie, fonctionnent avec des canaux et effectuer des calculs mathématiques.

Variables

Pour définir une nouvelle variable, disent suffisamment:

#! / Bin / bash
F \u003d ivan
I \u003d Ivanov.
O \u003d Ivanich
# Est affiché en utilisant:
Echo "fio $ f $ i $ o o"

Résultat

sh Bash2.sh.
Fio Ivan Ivanov Ivanich

Voir les variables;
# ENSEMBLE.

Bash \u003d / bin / bash
Histfile \u003d / root / .bash_history
Histfilesize \u003d 500.
Histiser \u003d 500.
Accueil \u003d / root
Ssh_client \u003d '192.168.200.3 9382 22'
Ssh_connection \u003d '192.168.200.3 9382 192.168.200.252 22'

Il existe un autre moyen très intéressant et utile de définir une variable avec ``

#! / Bin / bash
Jour \u003d `date +% y% m% d`
# À l'avenir, la variable de $ de jour peut être insérée dans le script, par exemple, sauvegarde

rsync -avz / root / données /root/backup.cept

À la suite de l'exécution d'un tel script, une sauvegarde apparaît avec la définition de la date de sauvegarde.

Rediriger l'entrée et la sortie.

\u003e Rediriger vers un fichier en streaming complet le contenu du fichier
\u003e\u003e Rediriger avec l'ajout au fichier, à la fin du contenu déjà disponible.
Ls -al /\u003e 123
Et l'équipe:
Ls -al / home \u003e\u003e 123
Wills une liste de tous les fichiers de la racine, puis ajoutez le contenu du répertoire de base après cela.
Une telle redirection s'appelle la redirection de sortie
Rediriger l'entrée - Le contenu est redirigé vers la commande.
Sorte.< sort.txt
Grade des commandes facilite le tri alphabétiquement, un fichier Sort.txt rempli de manière aléatoire après la redirection du programme de tri sera trié par alphabet
Sorte.< sort.txt | more — а построение в канал отобразит отсортированные данные постранично
Sorte.< sort.txt | grep s | more — отсортирует и выведет все со знаком «S»

Une autre chose utile que vous devez savoir est le transfert du résultat d'une commande à une autre ou plusieurs.
Un exemple de cela peut être:

cAT / VAR / LOG / MAILLOG | Grep bloqué | Suite

1) CAT - Affiche le fichier journal complet
2) En outre, ce fichier journal est transmis au traitement de la commande Grep qui ne s'affiche qu'avec bloqué, mais puisque les messages avec ce statut doivent le transférer à la commande plus
3) plus - nécessaire pour la visualisation de la page

Une telle séquence de commandes est appelée transmission dans le canal lorsque les données d'une commande sont transmises au traitement de l'autre, et de même que l'apparence souhaitée.

Calculs mathématiques

Les calculs mathématiques de Linux sont les plus faciles à voir avec la commande BC
Dans le même temps, il se distingue de manière à spécifier le nombre de caractères après la virgule flottante à l'échelle

#! / Bin / bash
var1 \u003d 45.
var2 \u003d 22.
var3 \u003d `écho" échelle \u003d 3; $ Var1 / $ var2 »| Bc`
Echo $ var3.

Plutonit.ru - Administration, Configuration de Linux et Windows 2009 - 2018

Erreur de base de données: Table 'A111530_ForneNew.rlf1_USERS' n'existe pas

Accueil -\u003e MyLDP -\u003e Livres électroniques sur OS Linux

Créer et lancer le script

Nous écrivons le script et choisissons le nom pour lui

Le script de commandes Shell est une séquence de commande que vous pouvez utiliser à plusieurs reprises. L'exécution de cette séquence est généralement effectuée en entrant le nom du script à l'invite de commande. De plus, utiliser Cron, vous pouvez utiliser des scripts pour automatiser les tâches. Une autre application de scripts est la procédure de téléchargement et d'arrêt du système UNIX, lorsque les opérations avec des démons et des services sont déterminées dans les scripts initiaux.

Pour créer un script shell de commande, ouvrez un nouveau fichier vide dans votre éditeur. Pour ce faire, vous pouvez utiliser n'importe quel éditeur de texte: vigueur., emacs., gedit., dtpad. etc.; Aucun approprié. Cependant, vous pouvez choisir un éditeur plus avancé, tel que vigueur. ou alors emacs.Étant donné que de tels éditeurs peuvent être configurés pour reconnaître la syntaxe de la coque de commande et de bash et peuvent être une bonne aide pour empêcher de telles erreurs qui sont souvent faites par les nouveaux arrivants, par exemple, oublier de fermer des crochets et de mettre des points avec une virgule.

Score des commandes UNIX dans un nouveau fichier vide comme si vous étiez entré dans l'invite de commande. Comme déjà mentionné dans le chapitre précédent (voir la section "Commande"), les commandes peuvent être des fonctions d'une coque de commande, de commandes intégrées, de commandes UNIX ou d'autres scripts.

Choisissez un nom mnémonique pour votre script que cela dirait que le script fait. Assurez-vous que votre nom de script n'est pas en conflit avec les commandes existantes. Donc, aucune confusion ne s'est produite, les noms des scripts se terminent souvent par l'extension.Sh. Cependant, d'autres scripts avec le même nom que vous avez choisi peuvent exister dans votre système. Utiliser des commandes lequel, où se trouve Et d'autres recherchent des informations sur des programmes et des fichiers déjà existants dans ce nom:

quel script_name où se trouve script_name localiser script_name ( prim.per.

Nous écrivons des scripts à Linux (apprentissage pour des exemples)

: Au lieu de cela, spécifiez le nom de votre script).

Script script1.sh.

Dans cet exemple, nous utilisons l'équipe Écho.Construit dans Bash, qui avant la sortie de la sortie ne sera émis, informera l'utilisateur de savoir ce qui devrait être fait. Il est fortement recommandé d'informer les utilisateurs de ce qui rend le script afin que les utilisateurs pas nerveux si cela leur semble que le script ne fait rien. Nous reviendrons au sujet des alertes utilisateur au chapitre 8 "Nous écrivons un script interactif".

Fig.2.1. Script script1.sh.

Écrivez le même script pour vous-même. Une bonne idée serait de créer un répertoire dans lequel vos scripts seront. Ajoutez ce répertoire au contenu de la variable:

chemin d'exportation \u003d »$ Chemin: ~ / Scripts»

Si vous vous familiarisez simplement avec Bash, utilisez un éditeur de texte dans lequel différentes couleurs sont utilisées pour différentes conceptions de coque. La sélection de la syntaxe est prise en charge dans vigueur., gevim, (x) emacs, kwrite. Et dans de nombreux autres éditeurs, consultez la documentation de votre éditeur préféré.

Exécution du script

Pour que le script soit en cours d'exécution, il devrait avoir le droit de courir à droite pour les utilisateurs appropriés. Après avoir défini les droits d'accès, vérifiez que vous avez vraiment installé ces droits dont vous avez besoin. Lorsqu'il est fait, le script peut être lancé dans exactement ainsi que toute autre commande:

willy: ~ / scripts\u003e chmod u + x script1.sh willy: ~ / scripts\u003e LS -L script1.sh -rwxrw-r - 1 willy willy 456 décembre 24 17:11 script1.sh willy: ~\u003e script1.sh le Le script commence maintenant. Salut, Willy! Je vais maintenant vous chercher une liste d'utilisateurs connectés: 3:38 Haut 18 jours, 5:37, 4 utilisateurs, la charge de charge: 0,12, 0,22, 0,15 utilisateur TTY de [Email protégé] Idle JCPU PCU, quelle racine TTY2 - SATED 14: 25m 0.24S 0.05S -Bash Willy: 0 - Sata 14h? 0.00? - Willy PTS / 3 - SATED 14PM 3: 33M 36.39S 36.39S Bitchx Willy IR Willy pts / 2 - Sata 2pm 3: 33m 0,13s 0.06S / USR / Bin / Écran Je fixe deux variables maintenant. Ceci est une chaîne: noir et ceci est un nombre: 9 Je vous donne votre invite maintenant. Willy: ~ / Scripts\u003e Echo $ Couleur Willy: ~ / Scripts\u003e Echo $ Valeur Willy: ~ / Scripts\u003e

C'est le moyen le plus courant d'exécuter le script. Il est préférable d'effectuer des scripts similaires à ceux-ci dans le sous-marin. Les variables, les fonctions et les alias, créés dans ce sous-marin, ne sont connues que dans la présente session de Bash dans ce sous-marin. Lorsqu'un moyen de sortir de cette coquille se produit et que le contrôle reçoit la coque mère, tous les paramètres sont nettoyés et que toutes les modifications apportées à l'aide du script de l'état de cette coquille seront oubliées.

Si vous n'êtes pas spécifié dans le répertoire de variable ou (répertoire actuel), vous pouvez activer le script comme suit:

./script_name.sh.

Vous pouvez également exécuter le script dans la coque existante, mais cela ne se fait généralement pas que si vous souhaitez obtenir des fonctionnalités spéciales, par exemple, si vous devez vérifier si le script fonctionne avec une autre coquille, ou donnez de la trace au débogage ( prim.per. - Au lieu de cela, spécifiez le nom de votre script):

rbash script_name.sh sh script_name.sh bash -x script_sh.sh

Le shell de commande spécifié sera lancé sous forme de sous-marin de votre shell actuel et exécutez le script. Ceci est fait lorsque vous souhaitez que le script soit lancé avec des paramètres spécifiques ou sous certaines conditions non spécifiées dans le script lui-même.

Si vous ne souhaitez pas exécuter une nouvelle coquille de commande et que vous souhaitez exécuter un script dans la coque actuelle, utilisez la commande:

source Script_Name.sh.

Dans ce cas, le script n'a pas besoin de droits d'exécution. Les commandes sont effectuées dans le contexte de la coque actuelle, de sorte que toute modification apportée dans votre environnement restera visible lorsque le script est terminé:

willy: ~ / scripts\u003e Script Source1.sh -Output ommad-~ Willy: ~ / Scripts\u003e Echo $ Valeur 9 Willy: ~ / scripts\u003e

Avez-vous aimé l'article? Partager avec des amis: