Linux mascot using a laptop with some multiplexer terminals around it.
Agence web » Actualités du digital » Comment utiliser les jilèges dans le terminal Linux pour répertorier les fichiers

Comment utiliser les jilèges dans le terminal Linux pour répertorier les fichiers

Vous avez peut-être vu des personnages étranges dans les commandes shell, mais que peuvent-ils faire? Ceux-ci sont appelés «joker», et ils peuvent faciliter votre vie dans le terminal Linux.

Que sont les wilkcards?

Les personnages génériques, également connus sous le nom de Metacharacters, sont des personnages qui peuvent représenter d'autres personnages. Ils sont similaires aux « wildcards » dans les jeux de cartes qui peuvent être utilisés comme autres types de cartes.

Les caractères génériques sont utilisés pour générer des listes de noms de fichiers pour alimenter d'autres services publics. Si vous disposez d'un grand nombre de fichiers sur lesquels vous souhaitez utiliser, vous pouvez utiliser une opération générique pour gagner du temps sur la frappe.

C'est le shell qui gère ces opérations, pas les programmes. Si vous tapez une expression avec des caractères génériques dedans, le shell le verra et remplira les fichiers qui le correspondent, puis transmettez-le au programme. Le programme ne verra pas les personnages génériques.

Différents obus ont des personnages de joker différents. Les deux premières opérations, correspondant à un seul caractère et correspondant à plusieurs caractères, sont les plus largement prises en charge. D'autres coquilles ont des opérations plus avancées. Bien que Bash soit le shell le plus courant sur les systèmes Linux, ZSH est connu pour avoir des opérations avancées de joker, ce qui est une des raisons pour lesquelles il est populaire parmi les utilisateurs avancés.

En pratique, vous pouvez utiliser plusieurs des mêmes options si vous avez une coquille raisonnablement moderne. Beaucoup de coquilles s'empruntent les uns des autres. Bash hérite de nombreuses options du Bourne Shell. Bash et Zsh sont tous deux fortement influencés par la coquille de Korn, ou KSH.

Pour utiliser certaines de ces expressions, vous devrez peut-être activer une option dans la configuration du shell qui permet de «globbing étendu». Cela dépendra du shell que vous utilisez. Vous devrez peut-être utiliser la commande setopt dans Zsh ou Shopt à Bash.

Spécification d'un caractère: « ? »

L'opération générique la plus simple correspond à un seul caractère avec le « ? » (point d'interrogation) caractère.

Supposons que vous ayez un répertoire rempli de scripts Perl et Python. L'extension de fichier pour Perl est .pl, et pour Python est .py. Si vous vouliez énumérer un tas de photos au format JPEG qui avaient un nom comme Photo_01, Photo_02, etc., vous pouvez les énumérer avec quelque chose comme ceci:

        
ls photo.0?.jpg

Si aucun modèle ne correspond, vous pourriez obtenir une ligne vierge, ou vous pourriez recevoir un message d'erreur disant qu'aucune correspondance n'a été trouvée.

Correspondant à plusieurs caractères avec « * »

L'opération générique la plus courante correspond à plusieurs caractères avec le caractère « * » (astérisque). Ceci est également connu sous le nom de «globbing». Alors que le « ? » correspond exactement à un personnage, le « * » peut correspondre à zéro ou plus de caractères dans les noms de fichiers. Encore une fois, selon la configuration de votre coquille, vous pouvez obtenir un message d'erreur si aucune correspondance n'est trouvée.

Par exemple, pour voir tous les fichiers JPEG dans le répertoire de travail actuel, vous pouvez taper:

        ls *.jpg
    

Vous pouvez également correspondre dans les répertoires:

        ls photos/*.jpg
    

Vous pouvez également combiner cela avec le match à un seul caractère ci-dessus. Pour faire correspondre les scripts Perl et Python, qui se terminent tous deux par .pl et .py, type:

        ls *.p?
    

Vous pouvez faire correspondre des personnages au milieu des cordes au lieu de la fin. Pour correspondre à un « D » au milieu d'un mot

        ls *d*
    

Si vous utilisez ZSH, vous pouvez faire correspondre récursivement, répertorier les fichiers dans des sous-répertoires. Par exemple, pour répertorier tous les fichiers dans les sous-répertoires des répertoires domestiques:

        ls ~/**
    

Vous pouvez également rechercher de manière récursive dans d'autres pathNames

        ls /usr/**/bin
    

L'option « *** » (trois astérisques) recherchera via des liens symboliques ainsi que via des sous-répertoires.

Si vous avez déjà utilisé MS-DOS ou l'invite de commande dans Windows, vous pourriez être habitué au modèle Wildcard « *. * » Pour répertorier tous les fichiers du répertoire actuel. Cette construction n'est pas nécessaire dans Linux, car l'astérisque correspondra à tous les fichiers du répertoire.

Pour copier tous les fichiers dans un autre répertoire, vous pouvez utiliser cette commande:

        cp * /other/directory
    

Soyez prudent avec les caractères génériques dans les listes de répertoires avec des commandes destructrices comme RM. La suppression est permanente avec cette commande. Gardez des sauvegardes afin que vous puissiez restaurer vos fichiers si vous faites une erreur.

Plages de personnages assorties avec supports

Vous pouvez également faire correspondre les gammes de personnages en les enfermant entre crochets.

Pour trouver un match qui comprend les personnages A, B et C, vous utiliseriez cette construction:

        (abc)
    

Vous pouvez inclure des plages de caractères sans les spécifier en utilisant le caractère Dash. Par exemple, pour correspondre à toutes les lettres minuscules de A à Z:

        (a-z)
    

Et pour les lettres majuscules:

        (A-Z)
    

Vous pouvez également faire correspondre les gammes de chiffres de cette façon:

        (0-9)
    

Vous pouvez également combiner des matchs. Pour correspondre à tout caractère supérieur et inférieur:

        (a-zA-Z)
    

Et tout caractère alphanumérique:

        (a-zA-Z0-9)
    

Ceux-ci sont le plus souvent utilisés en combinaison avec d'autres personnages génériques. Par exemple, pour correspondre à tous les scripts Python ou Perl, nous aurions pu écrire notre exemple précédent comme:

        ls *.p(ly)
    

Cela correspondrait à tout fichier qui contenait une période suivie de p puis un l ou y.

Une autre utilisation courante consiste à trouver des correspondances de fichiers qui commencent par un modèle. Pour faire correspondre les fichiers dans le répertoire actuel qui commencent par py

Sur les coquilles plus modernes, comme Bash et Zsh, vous pouvez également faire correspondre les motifs avec des supports bouclés.

Pour imprimer les mots « chat » et « chien »

        echo {cat,dog}
    

Vous pouvez également spécifier une séquence de nombres et de lettres avec deux périodes, ou « .. ». Par exemple, pour imprimer les lettres « A » via « D » dans l'ordre alphabétique:

        echo {a..d}
    

Vous pouvez également faire la même chose avec les chiffres. Pour imprimer les numéros 1 à 10:

        echo {1..10}
    

Cela s'étendra à tous les mots que vous spécifiez à l'aide des supports bouclés et des virgules. Si vous utilisez une commande comme LS et que la correspondance de nom de fichier n'existe pas, vous obtiendrez un message d'erreur.

Alterner correspond aux parenthèses

Au lieu de rechercher via « et » avec les supports bouclés, vous pouvez utiliser des parenthèses et le « | » Caractère (à ne pas confondre avec le caractère du pipeline) pour spécifier « ou » Recherches. Cela signifie que vous pouvez faire correspondre des expressions alternées.

Pour correspondre à un modèle à partir de zéro ou plus de caractères, vous pouvez commencer par l'astérisque mentionné plus tôt.

Pour faire correspondre à nouveau les scripts Perl et Python:

        ls *.(pl|py)
    

Ou alternativement:

        .*p(l|y)
    

Le motif + (a | b) correspondra à un motif qui commence par un ou 0 caractères suivis d'un « a » ou « b ». Pour correspondre exactement à un, utilisez « @ » (le symbole « at »).

Excluant des matchs avec « ! » et « ^ »

Dans l'expression du support mentionné ci-dessus, non seulement vous pouvez spécifier des gammes de caractères, vous pouvez rechercher des personnages qui ne correspondent pas aussi bien. Vous pouvez le faire en utilisant le caractère Caret (^) ou le point d'exclamation (!).

Par exemple, pour trouver des noms de fichiers qui n'ont pas de lettres minuscules:

        ls (!a-z)
    

Alternativement, vous pouvez utiliser:

        (^a-z)
    

Dans les modèles alternés avec les parenthèses, vous pouvez trouver des modèles qui ne correspondent pas à l'utilisation du point d'exclamation:

        !(a|b|c)
    

Désactiver les faunes avec la citation

Vous pouvez désactiver ces expressions en utilisant la citation. Ceci est pratique lorsque les personnages que vous fournissez sont significatifs, comme des expressions régulières pour Grep.

Vous pouvez utiliser des guillemets uniques pour désactiver l'expansion lorsque vous n'avez pas de variables de coquille que vous souhaitez développer. Par exemple, supposons que vous souhaitiez faire correspondre un modèle en utilisant Grep au début d'une ligne, qui utilise le caractère de la caret. Ceci est déjà utilisé pour les caractères génériques pour la négation plus tôt. Vous pouvez désactiver cela avec des citations simples:

        grep '^foo'
    

Si vous vouliez inclure une variable de shell, vous pouvez utiliser Double Quotes. Supposons que vous recherchiez un modèle en utilisant une expression que vous aviez stockée dans une variable. Vous utiliseriez simplement des citations doubles à la place.

        grep "^$expression"
    

Avec ces caractères génériques, vous pouvez faciliter le fonctionnement sur les fichiers à partir de la ligne de commande Linux. Alors que l'opérateur « * » sera probablement votre cheval de bataille principal, la connaissance des options les plus obscures peut vous aider à faire correspondre les fichiers avec le style.

★★★★★