Présentation
L'set
command est une commande shell Linux intégrée qui affiche et définit les noms et les valeurs des variables d'environnement shell et Linux. Sur les systèmes d'exploitation de type Unix, l'ensemble set
les fonctions de commande dans le shell Bourne (sh
), shell C (csh
) et shell Korn (ksh
).
Dans ce didacticiel, vous apprendrez ce que le set
est la commande et comment l'utiliser.
Prérequis
- Un système exécutant Linux.
- Accès à un terminal/ligne de commande.
Linux définit la syntaxe de commande
La syntaxe générale de l'ensemble set
la commande est :
set [options] [arguments]
Options
Dans le cadre de l'ensemble set
commande, [options]
sont des paramètres ou des drapeaux définis ou non définis dans l'environnement du shell Bash. Utilisez-le pour influencer le comportement des scripts shell définis et aider à exécuter les tâches souhaitées.
- Définissez une option en utilisant un signe moins (
-
) suivi de l'option appropriée. - Désactivez une option en utilisant un signe plus (
+
) suivi de l'option appropriée.
Argumentation
[arguments]
sont des paramètres de position et ils sont assignés dans l'ordre avec les paramètres suivants :
$1
$2
- ...
$n
Ne pas spécifier d'options ou d'arguments entraîne l'impression de toutes les variables shell par la commande.
Valeurs de sortie
L'set
commande a trois valeurs de sortie :
0
. Marque une réussite.1
. Échec causé par un argument non valide.2
. Échec entraînant un message d'utilisation, généralement en raison de l'absence d'un argument.
Linux définit les options de commande
L'set
La commande fournit une longue liste d'options qui peuvent être combinées.
La plupart des options ont un indicateur -o flag
correspondant qui peut être utilisé pour invoquer l'option. Le tableau ci-dessous répertorie toutes les options et leur forme alternative respective en utilisant le -o flag
syntaxe.
Options | -o drapeaux | Description |
---|---|---|
-a | -o allexport | Marque toutes les variables ou fonctions créées ou modifiées pour l'exportation. |
-b | -o notify | Alerte l'utilisateur lors de la fin d'une tâche en arrière-plan. |
-e | -o errexit | Ordonne à un shell de quitter si une commande échoue, c'est-à-dire si elle renvoie un état de sortie différent de zéro. |
-f | -o noglob | Désactive la génération de nom de fichier (globbing). |
-h | -o hashall | Recherche et enregistre les commandes de fonction lorsqu'une fonction est définie. Le -h l'option est activée par défaut. |
-k | -o keyword | Place tous les arguments d'affectation dans l'environnement d'une commande, pas seulement ceux qui précèdent le nom de la commande. |
-n | -o noexec | Lit les commandes mais ne les exécute pas. |
-m | -o monitor | Affiche un message lorsqu'une tâche est terminée. |
-p | -o privileged | Désactive le $ENV traitement de fichiers et importation de fonctions shell. Le -p L'option est activée par défaut lorsque les ID utilisateur réel et effectif ne correspondent pas. La désactiver définit l'uid et le gid effectifs sur les vrais uid et gid. |
-t | -o onecmd | Lit une commande puis quitte. |
-u | -o nounset | Traite les variables non définies ou indéfinies comme une erreur lors de la substitution (pendant l'expansion des paramètres). Ne s'applique pas aux paramètres spéciaux tels que le caractère générique * ou @ . |
-v | -o verbose | Imprime les lignes d'entrée du shell lors de leur lecture. |
-x | -o xtrace | Imprime les arguments de la commande pendant l'exécution. |
-B | -o braceexpand | Effectue l'expansion des accolades de coque. |
-C | -o noclobber | Empêche l'écrasement des fichiers réguliers existants par la redirection de sortie. Par défaut, Bash permet à la sortie redirigée d'écraser les fichiers existants. |
-E | -o errtrace | Les fonctions du shell héritent de l'interruption ERR. |
-H | -o histexpand | Active la substitution d'historique de style. L'option est activée par défaut lorsque le shell est interactif. |
-P | -o physical | Empêche le lien symbolique de suivre lors de l'exécution de commandes. |
-T | -o functrace | Les fonctions du shell héritent de l'interruption DEBUG. |
-- | n/a | Assigne les arguments restants aux paramètres positionnels. S'il n'y a plus d'arguments restants, annule les paramètres positionnels. |
- | sans objet | Assigne tous les arguments restants aux paramètres positionnels. Désactive le -x et -v option. |
sans objet | -o emacs | Utilise une interface d'édition de ligne de style emacs. |
sans objet | -o history | Active l'historique des commandes. |
sans objet | -o ignoreeof | Le shell ne se ferme pas à la lecture de la fin du fichier. |
sans objet | -o interactive-comments | Autorise les commentaires dans les commandes interactives. |
sans objet | -o nolog | N'enregistre pas les définitions de fonction dans le fichier d'historique. |
sans objet | -o pipefail | La valeur de retour d'un pipeline est le statut de la dernière commande qui avait un statut différent de zéro à la sortie. Si aucune commande n'avait un statut différent de zéro à la sortie, la valeur est zéro. |
sans objet | -o posix | Entraîne Bash à correspondre à la norme lorsque l'opération par défaut diffère de la norme Posix. |
sans objet | -o vi | Utilise une interface d'édition de ligne similaire à vi . |
Exemples de commandes Linux set
Cette section répertorie des exemples des utilisations les plus courantes de l'ensemble set
commande.
Utilisation de la commande set sans options
L'exécution de la commande sans options ni arguments génère une liste de tous les paramètres - les noms et les valeurs de toutes les variables et fonctions du shell. Comme la liste est très longue, vous pouvez la faire défiler en utilisant la page vers le haut et Page suivante clés.
Voici un exemple d'un set
partiel sortie de la commande :
Débogage de scripts
L'set
La commande est particulièrement pratique lorsque vous essayez de déboguer vos scripts. Utilisez le -x
option avec le set
commande pour voir quelle commande de votre script est exécutée après le résultat, ce qui vous permet de déterminer le résultat de chaque commande.
L'exemple suivant montre comment déboguer des scripts avec set -x
. Suivez les étapes ci-dessous :
1. Exécutez set -x
:
set -x
2. Utilisez votre éditeur de texte préféré (nous utilisons l'éditeur vi) pour créer un script. Nous avons créé une boucle simple qui nous permet de voir le -x
effets des options :
x=10
while [ $x -gt 0 ]; do
x=$[ $x-1 ]
echo $x
sleep 2
done
3. Assurez-vous de chmoder le script pour le rendre exécutable. Cette étape est toujours obligatoire avant d'exécuter un script . La syntaxe est :
chmod +x [script-name.sh]
4. Exécutez le script. La syntaxe est :
./[script-name.sh]
La sortie imprime une ligne à la fois, l'exécute, affiche le résultat s'il y en a un et passe à la ligne suivante.
Une autre façon d'activer le débogage consiste à placer le -x
drapeau sur la ligne shebang du script :
#!/bin/bash -x
Exportation de scripts
Exportez automatiquement toute variable ou fonction créée à l'aide de -a
option. L'exportation de variables ou de fonctions permet à d'autres sous-shells et scripts de les utiliser.
Activez l'exportation de script en exécutant la commande suivante :
set -a
L'exemple suivant montre comment fonctionne l'exportation de script. Suivez les étapes ci-dessous :
1. Créez un nouveau script à l'aide de l'éditeur de votre choix. Par exemple :
one=1
two=2
three=3
four=4
/bin/bash
Le /bin/bash
l'argument marque le début d'un nouveau shell.
2. Vérifiez si le script fonctionne dans un nouveau shell :
echo $one $two $three $four
La sortie prouve que la fonction que nous avons créée a été exportée et fonctionne même lors du démarrage d'un nouveau shell.
Quitter lorsqu'une commande échoue
Utilisez le -e
option pour demander à un script de quitter s'il rencontre une erreur lors de son exécution. L'arrêt d'un script partiellement fonctionnel permet d'éviter des problèmes ou des résultats incorrects.
Créez un script avec le contenu suivant pour tester cette option :
#!/bin/bash
set -e
cat nonexistingfile
echo "The end"
Dans l'exemple ci-dessus, le script rencontre une erreur en essayant d'afficher le contenu de nonexistingfile
car ce fichier n'existe pas, provoquant sa fermeture à ce stade. Ainsi, l'echo
final la commande n'est pas exécutée.
Prévenir la perte de données
Le paramètre par défaut de Bash consiste à écraser les fichiers existants. Cependant, en utilisant le -C
L'option configure Bash pour ne pas écraser un fichier existant lors de la redirection de sortie à l'aide de >
, >&
, ou <>
est redirigé vers ce fichier.
Par exemple :
Bash nous permet d'abord d'écraser le listing.txt
dossier. Cependant, après avoir exécuté le set -C
commande, Bash affiche un message indiquant qu'il ne peut pas écraser un fichier existant.
Signaler les variables inexistantes
Le paramètre par défaut dans Bash est d'ignorer les variables inexistantes et de travailler avec celles qui existent déjà. Utilisation du -u
L'option empêche Bash d'ignorer les variables qui n'existent pas et lui fait signaler le problème.
Par exemple, le script suivant ne contient pas le set -u
commande et Bash ignore que $var2
n'est pas défini.
#!/bin/bash
var1="123"
echo $var1 $var2
La sortie contient uniquement $var1
.
Cependant, changer le script et ajouter le set -u
commande empêche Bash d'ignorer le problème et le signale :
#!/bin/bash
set -u
var1="123"
echo $var1 $var2
Définir les paramètres de position
L'set
La commande peut également affecter des valeurs aux paramètres positionnels. Un paramètre positionnel est une variable shell dont la valeur est référencée à l'aide de la syntaxe suivante :
$[N]
Le [N]
value est un chiffre indiquant la position du paramètre. Par exemple, $1
est le premier paramètre positionnel, $2
est le deuxième paramètre, etc.
Par exemple :
set first second third
L'exécution de la commande ci-dessus définit first
pour correspondre au $1
paramètre positionnel, second
à $2
, et third
à $3
. Vérifiez ceci avec la commande echo :
echo $2
Annulez les paramètres de position en exécutant :
set --
Séparer les chaînes
Utilisez le set
commande pour diviser les chaînes en fonction des espaces en variables distinctes. Par exemple, divisez les chaînes dans une variable appelée myvar
, qui dit "Ceci est un test" .
myvar="This is a test"
set -- $myvar
echo $1
echo $2
echo $3
echo $4
Utilisez cette option pour extraire et filtrer les informations de la sortie d'une commande, similaire à ce que fait la commande awk.
Définir tous les indicateurs d'exportation et de notification
Le -o allexport
flag vous permet d'exporter automatiquement toutes les variables définies par la suite, tandis que le -o notify
indique au shell d'imprimer immédiatement les messages de fin de tâche.
Pour définir les drapeaux, exécutez :
set -o allexport -o notify
Dans l'exemple suivant, nous voyons que le shell vous avertit à la fin de la tâche en arrière-plan depuis l'exportation du script :