A Linux Terminal running Bash.
Agence web » Actualités du digital » Qu'est-ce que vous courez? Programmes, scripts, intégrés, fonctions et alias Linux

Qu'est-ce que vous courez? Programmes, scripts, intégrés, fonctions et alias Linux

Que se passe-t-il lorsque vous exécutez une commande Linux? Cet acte simple peut sembler simple, mais de nombreuses choses différentes peuvent réellement se produire, selon que vous exécutez un programme exécutable, un script de shell, un shell intégré, une fonction définie par l'utilisateur ou un alias.

Les différents types de commandes Linux

UN programme (binaire ou exécutable) est un fichier sur disque quelque part, dans un format reconnu. Les formats courants incluent ELF sur Linux et Mach-O sur Mac. Le format est un niveau de bas niveau et adapté à la machine que le shell peut passer au noyau pour fonctionner.

UN script shell est une forme de programme de niveau beaucoup plus élevé, écrite dans un texte lisible par l'homme. Un script shell peut exécuter d'autres commandes, et il peut être écrit dans une langue interprétée comme Perl ou Python.

UN construit La commande est interne au shell, il est donc toujours disponible et fonctionne généralement à un niveau de bas niveau, pour effectuer des opérations qui affectent directement le shell lui-même.

UN fonction du shell est comme un mini script shell, emballant un ensemble de commandes ensemble sous un seul nom. Les fonctions du shell sont généralement chargées de sorte qu'elles sont toujours disponibles par nom.

Un alias est un nom alternatif pour l'un des éléments ci-dessus. Vous pouvez créer un alias court d'une commande plus longue pour gagner du temps et des efforts lors de l'exécution de tâches communes.

L'ordre dans lequel un shell comme Bash recherche ces types de commandes est important. Pour le dire simplement, Bash essaie les commandes dans cet ordre: alias, fonction, intégrée, programme / script.

1

Exécution d'un programme exécutable

Le type de commande le plus familier est un fichier de programme exécutable. Bon nombre des programmes les plus courants font partie de la norme POSIX, ce qui signifie qu'ils devraient être disponibles sur la plupart des systèmes UNIX ou UNIX, y compris Linux et MacOS. Des exemples de telles commandes incluent le chat, le diff et le vi.

D'autres programmes de ligne de commande – comme Apache, Neofetch ou Tree – peuvent être installés car ils ne sont généralement pas inclus dans une distribution par défaut. Mais, tout comme les programmes de commande POSIX, ils fonctionneront via un seul fichier de programme quelque part sur votre disque.

Il existe deux façons courantes d'exécuter un programme. Tout d'abord, vous pouvez taper un chemin vers un fichier de programme, comme ./myprog ou / usr / bin / awk. Si la première partie de votre commande contient des barres obliques en avant, le shell tentera de trouver un fichier sur le chemin d'accès correspondant. Par exemple, vous pouvez exécuter un programme à / bin / chat comme ceci:

        /bin/cat myfile
    

Le shell vérifiera ensuite un programme exécutable sur / bin / cat, puis l'exécutera s'il existe.

Sur Linux, les programmes exécutables n'ont généralement pas d'extension de fichier, donc une commande comme «grep» est contenue dans un fichier nommé grep. Ce n'est qu'une convention, car il est pratique de rendre les exécutables reconnaissables par le nom de fichier seul. Cependant, si vous le souhaitez vraiment, vous êtes libre de nommer vos exécutables tout ce que vous voulez, comme «myprog.exe» ou «myprog.runme».

Le deuxième cas se produit lorsque vous tapez un nom de programme sans chemin; Par exemple:

        cat myfile
    

Avec un système correctement configuré, cela devrait avoir le même effet qu'auparavant, car le shell localisera le même programme CAT. Il le fait en vérifiant une variable d'environnement spéciale nommée PATH, qui ressemble à ceci:


Il s'agit d'une liste de chemins séparés par le côlon que le shell recherchera pour localiser un programme. La commande est importante car vous pouvez avoir deux fichiers avec le même nom à différents endroits. Par exemple, si vous avez un / usr / bin / grep fichier et un / bac / grep Fichier, le chemin ci-dessus amènera le shell à exécuter la version / usr / bin. Ce système vous permet de remplacer une commande à l'échelle du système avec une commande personnalisée plus spécifique à vos besoins, ce qui peut être très utile.

En rapport

Comment ajouter un répertoire à votre chemin $ dans Linux

N'ajoutez pas tout à votre chemin. Sérieusement.

2

Exécuter un script shell

Un script shell s'exécute légèrement différemment d'un programme exécutable, et c'est un type de fichier très différent. Un simple script de shell ressemble à ceci:

        #!/bin/sh
echo Just a simple, pointless shell script

La première ligne est appelée ligne «shebang» ou «hash-bang», du nom de la combinaison de # et! personnages. Il s'agit d'une instruction spéciale qui indique au shell que l'interprète à utiliser pour le reste du script. Dans le cas ci-dessus, c'est la coquille elle-même, à / bin / sh.

Le reste du script est un programme de texte que l'interprète comprend. Dans ce cas, le shell peut exécuter des commandes comme Echo de la même manière que si vous les tapiez sur la ligne de commande.

Sinon, un script shell ressemble beaucoup à un programme exécutable, et votre shell le recherchera en utilisant la variable de chemin de la même manière. Pour les programmes et les scripts shell, il est important de noter que les autorisations sur le fichier correspondant affecteront la façon dont vous l'exécutez. Avec le jeu d'autorisation EXECUTE, vous pouvez exécuter le programme en tapant son nom ou son chemin. Mais si l'autorisation d'exécution n'est pas définie, vous verrez une erreur:

Vous pouvez toujours exécuter un tel fichier en faisant passer son nom comme argument à un interprète approprié. Par exemple, vous pouvez exécuter un script shell comme ceci:

        sh myscript.sh
    

Vous pouvez même exécuter un exécutable comme celui-ci, mais vous devrez d'abord faire une enquête. La commande de fichier donne des informations sur le type de fichier, y compris son interprète:

Dans ce cas, vous pouvez exécuter le binaire PWD à l'aide du programme /lib/ld-linux-aarch64.so.1:

3

Exécution d'une coque intégrée

Certaines commandes sont si fondamentales pour la nature de la coquille qu'elles doivent fonctionner d'une manière légèrement différente. Ceux-ci sont appelés intégrés parce qu'ils font en effet une partie de la coquille eux-mêmes.

Les intégrés sont généralement de bas niveau et les commandes que vous utilisez fréquemment: CD, écho et tuer sont des exemples courants. Contrairement aux programmes et aux scripts shell, ces commandes ne correspondent pas à un fichier particulier car ils font partie du shell lui-même, compilé dans l'exécutable du shell.

Certains systèmes peuvent inclure des scripts en wrapper qui exécutent des constructions. Par exemple, sur mon système macOS, il y a un / usr / bin / cd script qui utilise le construit Commande pour exécuter l'intégration intégrée correspondante. Ceci est pour la compatibilité POSIX, et vous pouvez ignorer en toute sécurité la version de script.

Les intégrés peuvent être difficiles à apprendre car ils n'ont aucune entrée manuelle (par exemple sur Ubuntu Linux) ou ils ont tous une grande page manuelle partagée (macOS). Le TLDR Le programme est un excellent moyen de en savoir plus sur les intégrés.

Pour des raisons similaires, les constructions prennent généralement en charge beaucoup moins d'options de ligne de commande que les programmes à part entière. Par exemple, CD ne prendra généralement en charge que deux options assez obscures: -L (pour suivre les liens symboliques) et -P (pour éviter les liens symboliques). Cela signifie que, malheureusement, des options comme -H ou –aide ne sont pas pris en charge.

4

Appel d'une fonction de shell

Une commande peut également être un appel à une fonction. À tout moment lors d'une session, vous pouvez charger ou définir une fonction en utilisant cette syntaxe (en bash):

        function_name() {
  commands
}

Alternativement, vous pouvez utiliser une syntaxe qui insère le mot-clé «fonction» avant un nom de fonction et laisse tomber les parenthèses après:

        function function_name {
  commands
}

Vous pouvez ensuite appeler une fonction en tapant son nom, suivi de tous les arguments. Par exemple, j'ai la fonction d'assistance suivante définie dans un fichier:

        mkd () {
mkdir -p "$@"
cd "$@" || exit
}

Je charge ensuite ce fichier à partir du script de contrôle d'exécution de mon shell (~ / .zshrc), et je peux exécuter cette commande pour créer un nouveau répertoire et le changer immédiatement:

        mkd new_dir
    

Vous pouvez appeler une telle fonction sur la ligne de commande quand vous le souhaitez. Vous pouvez également l'appeler à partir de scripts, mais n'oubliez pas qu'il doit être chargé (utilisez le intégré sourceou son équivalent .pour le faire).

En rapport

Comment créer des alias et des fonctions de shell sur Linux

Créez vos propres commandes Linux avec des alias et des fonctions de shell bash. Nous vous montrons comment.

5

Utilisation d'un alias

Un alias est une commodité qui vous évite de taper des noms de commande longs ou des options communes. Par exemple, sur mon système, j'ai un alias pour m'assurer que les listes de fichiers sont en couleur, avec des suffixes de type:

        ls='ls -GF'
    

Maintenant, si je tape juste «ls», la commande «ls -gf» s'exécute à sa place.

Vous pouvez créer un alias à tout moment, en utilisant la commande alias intégrée, par exemple

        alias ls="ls -GF"
    

Notez que des citations sont requises lorsque vous exécutez un alias, si la chaîne de remplacement contient des espaces. Vous pouvez voir tous les alias en fonctionnant aliaset vous pouvez supprimer un alias avec le unalias commande. Encore une fois, vous voudrez ajouter des alias à un fichier de démarrage, comme ~ / .zshrc ou ~ / .bashrc, si vous voulez qu'ils s'appliquent à travers les sessions.

En rapport

Pourquoi devriez-vous utiliser des alias dans le terminal Linux

Même si vous les connaissez, assurez-vous de les utiliser dans leur pleine mesure.

★★★★★