Site icon Maniac Geek

Conseils pour l’utilisation de la commande de test Linux

La [ La commande, souvent appelée “test”, est une commande du package GNU Core Utils et lance une instruction conditionnelle dans Bash. Sa fonction est exactement la même que celle du test commande. Lorsque vous souhaitez exécuter une commande uniquement lorsque quelque chose est vrai ou faux, utilisez la [ ou la test commande. Cependant, il existe une différence significative entre [ ou test et [[et il existe une différence technique entre ces commandes et les versions de votre shell.

[vscommandesdetestsousLinux[vstestcommandsinLinux

La [ et le test Les commandes, installées par le package GNU Core Utils, exécutent la même fonction en utilisant une syntaxe légèrement différente. (Vous trouverez peut-être difficile de rechercher de la documentation en utilisant le seul crochet gauche, cependant, de nombreux utilisateurs trouvent test plus facile à référencer.) Bash et des shells similaires arrivent à aussi avoir le [ et le test commandes intégrées, et les versions intégrées remplacent celles installées dans /usr/bin. En d’autres termes, lorsque vous utilisez [ ou testvous n’exécutez probablement pas /usr/bin/[ ou /usr/bin/test. Au lieu de cela, vous appelez ce qui est essentiellement une fonction de votre shell Bash.

Vous pourriez vous demander pourquoi [ ou test exister dans /usr/bin du tout. Certains obus, tels que tcsh, n’ont pas [ et test intégré, donc si vous voulez utiliser ces commandes dans ce shell, vous devez les avoir installées en tant que binaires séparés.

L’essentiel est que tant que vous n’obtenez pas d’erreur lorsque vous tapez une commande commençant par [ ou test, alors vous avez tout ce dont vous avez besoin. Peu importe que votre coque ou votre bin répertoire fournit les commandes.

Tester un fichier

Il est courant de vouloir savoir si un fichier existe, souvent pour pouvoir effectuer une action en toute confiance, ou pour éviter de le “combler” avec un fichier du même nom. Dans une session shell interactive, vous pouvez simplement regarder pour voir si le fichier existe, mais dans un script shell, vous avez besoin que l’ordinateur le détermine par lui-même. La -e L’option teste si un fichier existe, mais sa réponse apparente est la même dans les deux cas.

$ touch example
$ test -e example
$ test -e notafile
$

La [ et test les commandes sont essentiellement des commutateurs. Ils émettent une true ou false réponse, mais considère les deux comme un succès. Vous pouvez l’utiliser en associant les commandes à des opérateurs logiques, tels que && et ||. La && L’opérateur est exécuté lorsqu’une réponse est true:

$ touch example
$ test -e example && echo "foo"
foo
$ test -e notafile && echo "foo"
$

La || l’opérateur s’exécute lorsqu’une réponse est false:

$ touch example
$ test -e example || echo "foo"
$ test -e notafile || echo "foo"
foo
$

Si vous préférez, vous pouvez utiliser des crochets au lieu de test. Dans tous les cas, les résultats sont les mêmes :

$ touch example
$ [ -e example ] && echo "foo"
foo
$ [ -e notafile ] && echo "foo"
$

Test des types de fichiers

Tout sous Linux est un fichier, donc quand vous pouvez tester l’existence d’un répertoire avec le -e option, de la même manière que vous testez un fichier. Cependant, il existe différents types de fichiers, et parfois cela compte. Vous pouvez utiliser [ ou test pour détecter une variété de types de fichiers différents :

Il y en a plus, mais ceux-ci ont tendance à être les plus courants.

Test des attributs de fichier

Vous pouvez également consulter les métadonnées d’un fichier :

Vous pouvez tester par propriété :

Ou vous pouvez tester par autorisations (ou mode fichier):

  • -r: un fichier avec autorisation de lecture accordée

  • -w: un fichier avec permission d’écriture accordée

  • -x: un fichier avec l’autorisation d’exécution accordée

  • -k: un fichier avec le jeu de bits collants

Combiner des tests

Vous n’avez pas toujours à tester un seul attribut. La -a l’option (“et”) vous permet d’enchaîner plusieurs tests ensemble, avec l’exigence que tous les tests retournent comme true:

$ touch zombie apocalypse now
$ test -e zombie -a -e apocalypse -a -e now && echo "no thanks"
no thanks

Si une expression échoue, le test renvoie false:

$ touch zombie apocalypse now
$ test -e plant -a -e apocalypse -a -e now && echo "no thanks"
$

La -o l’option (“ou”) nécessite qu’une expression soit vraie :

$ touch zombie apocalypse now
$ test -e zombie -o -e plant -o -e apocalypse && echo "no thanks"
no thanks

Tests entiers

Vous pouvez également tester des nombres entiers. Ce n’est pas nécessairement directement utile (vous savez probablement que 0 est inférieur à 1, par exemple), mais c’est inestimable lorsque vous utilisez des variables dans un script.

Les opérateurs sont assez intuitifs une fois qu’on a compris le schéma :

Voici un exemple simple :

$ nil=0
$ foo=1
$ test $foo -eq $nil || echo "Those are not equal."
Those are not equal.
$ test $foo -eq 1 && echo "Those are equal."

Bien sûr, vous pouvez combiner les tests.

$ touch example
$ test $foo -ne $nil -a -e example -o -e notafile && echo "yes"
yes

Tester les tests

La [ et test Les commandes sont des instructions conditionnelles essentielles lors de la création de scripts. Ce sont des moyens simples et courants de contrôler le flux de votre code. Il y a encore plus de tests disponibles que ce que j’ai couvert dans cet article, donc que vous utilisiez entièrement Bash, tcsh, ksh ou un autre shell, jetez un œil à la page de manuel pour obtenir le spectre complet de ce que ces commandes offrent.

Source

Quitter la version mobile