Conseils pour l’utilisation de la commande de test Linux


  • FrançaisFrançais



  • 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

    N'oubliez pas de voter pour cet article !
    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    Loading...

    La Rédaction

    L'équipe rédactionnnelle du site

    Pour contacter personnellement le taulier :

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *