Outils pour utilisateurs

Outils du site


cours:informatique:sysadmin:administrer_un_systeme_linux:130_executer_commandes_via_bash

Notes et transcriptions du cours “Administrez un système Linux” disponible sur la plateforme Openclassrooms.

Lancez des commandes sous Bash

Passons à la pratique : nous allons explorer les différentes fonctionnalités de Bash, directement depuis un terminal de commandes.

Utilisez le prompt et consultez ses variables

Une fois passées les étapes de connexion/authentification via une console ou un terminal, vous vous retrouvez devant cette interface assez austère qui vous présente un prompt :

Capture d'écran d'un prompt

Cette interface, le prompt, affiche déjà quelques informations intéressantes (avant le curseur). Sur l'illustration ci-dessus par exemple, on voit que :

  • je suis connecté avec l'utilisateur “seb” sur un équipement dont le nom est “thor”,
  • je me situe actuellement dans le répertoire personnel de l'utilisateur, symbolisé par le caractère ~.
  • Le dernier caractère $ est le “delimiter” : sépare le prompt des commandes utilisateur. Il n'est pas innocent non plus : il m'indique ici que je suis un utilisateur non privilégié. Avec le compte root, le délimiteur devient #.

Enfin, en fonction des distributions, un curseur, éventuellement de couleur et/ou clignotant, vous indique la position actuelle de la saisie.

Toute cette configuration n'est pas magique. Elle est stockée dans un fichier (~/.bashrc) et dans une variable gérée par le shell Bash. En l'occurrence, cette variable est nommée $PS1.

Je vous propose de consulter et de modifier cette variable pour adapter votre prompt. Et puis on en profite au passage pour s’intéresser à une seconde variable $SHELL, qui vous dit sur quel shell vous êtes connecté.

  • man bash (section PROMPT_COMMAND)

Listez le contenu d’un répertoire

Sans vous en rendre compte, vous venez de lancer 2 commandes différentes :echo et/bin/bash.

La commande echo vous permet d'afficher le contenu de deux variables de bash :$PS1 et $SHELL.

Le nom des variables à afficher fut écrit directement à la suite de la commande sous la forme d'arguments.

Dans le cas de la seconde /bin/bash, vous avez lancé l'interpréteur de commandes Bash en lui passant une option- --version permettant simplement d'afficher les informations concernant ce programme.

Ces deux types d'écriture ne sont pas dus au hasard de la configuration et du développement des commandes. Ils sont en fait décrits dans un document de normalisation POSIX nommé Utility Conventions.

On peut notamment remarquer que les commandes doivent être définies telles que :

  • Le nom de la commande doit comporter entre 2 et 9 caractères ;
  • Le nom de la commande doit comporter uniquement des caractères minuscules et des chiffres ;
  • Les options de la commande doivent être définies avec un seul caractère alphanumérique ;
  • Les options doivent être précédées du caractère - ;
  • etc.

Mais ce document précise aussi le comportement général des commandes d’un shell.

Comprenez les différents types de commandes Linux

Maintenant que vous connaissez la structure générale des commandes Bash, je vous propose de détailler les deux types de commandes disponibles sur le système.

  • Les commandes internes : ces commandes sont livrées avec l'interpréteur de commandes directement, comme une primitive du shell. Elles sont disponibles à tout moment par l'administrateur du système. Cependant, il est probable que toutes ne soient pas forcément intégrées à l’interpréteur de commandes que vous allez utiliser. Il est également possible que leurs options ne soient pas toutes identiques non plus.
  • Les commandes externes : ces commandes sont externes à l'interpréteur de commandes, c'est-à-dire qu'elles ne sont pas fournies par le shell. Elles sont généralement présentes sur le système sous la forme d'un fichier compilé binaire ou d'un fichier disposant des droits d'exécution (comme un script Perl par exemple).

Je vous propose d’étudier ces deux types de commandes. Vous découvrirez les nouvelles commandes type , cd , id et file, et au passage on en profite pour apprendre à chaîner les commandes.

# type indique le type de la commande en argument
type echo
 
# file retourne des informations concernant un ou des fichiers
file /usr/bin/bash
 
# Cumuler des commandes
cd ~ && file *
 
# Relever des informations concernant le compte utilisateur
id

Configurez l’accès aux commandes

En reprenant l'un des derniers exemples :

seb@thor:~$ type id
id is /usr/bin/id

…vous pourriez vous poser une question :

Si la commande id est externe au shell, comment Bash fait-il pour savoir que id est le fichier /usr/bin/id? Autrement dit, comment le shell Bash fait-il pour accéder aux commandes externes ?

La réponse se situe dans une nouvelle variable d'environnement : PATH.

Je vous propose d’étudier la variable PATH. Pour afficher son contenu

echo $PATH

La variable PATH contient une liste de répertoires séparés par :. Si la commande tapée par l'utilisateur n'existe pas dans le répertoire courant, le shell va séquentiellement vérifier si un fichier exécutable existe dans l'ensemble des répertoires du PATH.

Consultez la documentation des commandes sous Linux

L'administrateur Linux dispose d'une panoplie assez conséquente de commandes en tout genre pouvant l'aider dans ses actions. Et même après plus de 25 ans de Linux derrière moi, je ne connais pas le fonctionnement de toutes ces commandes par cœur.

Heureusement, la qualité de la documentation Linux est l'une de ses grandes forces. Et les sources d’information sont multiples également.

Bien entendu, le Web et les moteurs de recherche restent vos amis lorsque vous bloquez sur une commande.

Dans la majorité des cas, il vous suffit de saisir le nom de la commande et votre objectif pour obtenir une liste de résultats probants.

L'avantage principal de cette documentation réside dans le fait qu'elle soit accessible directement depuis le terminal, sans accès web.

Bon, il est vrai que le terminal n'est pas l'interface idéale pour consulter de la documentation, mais avec un peu de pratique, vous découvrirez les bonnes méthodes pour l'exploiter correctement.

En effet, en fonction de leur type, la documentation des commandes n’est pas accessible de la même manière. Et on en profite aussi pour découvrir ensemble le manuel officiel des systèmes Unix/Linux et la très célèbre commande qui l’accompagne : man.

Pour consulter la documentation native des deux types de commandes :

# commandes internes
help echo
# commandes externes
id --help
man id

Profitez des fonctionnalités avancées de Bash

Vous voilà déjà super calé sur le terminal et les commandes du shell ! Dans cette dernière section, je vous propose de pousser le bouchon un peu plus loin…

Avec deux fonctionnalités avancées de Bash qui participent aussi à faire de lui le shell de référence sous Linux. Et croyez-moi, vous allez très rapidement adopter ces fonctionnalités car elles sont très pratiques pour optimiser votre utilisation des commandes !

Ces deux fonctionnalités sont très intéressantes, mais leur fonctionnement est lié au terminal ou à la session courante.

  • La commande history qui permet de rechercher, d'afficher et de rejouer les commandes exécutées par le passé ;
  • Les alias de commandes.

Pour conserver les données historiques ou un alias entre différents terminaux ou différentes sessions, il est nécessaire d'intervenir sur quelques fichiers de configuration (~/.bashrc).

En résumé

  • La composition d’un prompt Linux et la variable $PS1(qui en définit chaque élément) n’ont plus de secret pour vous ;
  • Vous avez compris la structure des commandes sous Linux, avec leurs options et leurs arguments ;
  • Vous savez identifier les commandes internes et les commandes externes ;
  • Vous savez adresser une commande avec la variable PATH ;
  • Vous savez lire plusieurs formes de documentation sous Linux.

Vous êtes désormais prêt à exécuter des instructions d'administration ! Je vous propose maintenant de tester vos connaissances. Dans la partie suivante, nous allons nous intéresser aux fichiers et notamment à la description de l'arborescence du système. Vous me suivez ?

◁ Précédent | ⌂ Retour au sommaire | Suivant ▷

cours/informatique/sysadmin/administrer_un_systeme_linux/130_executer_commandes_via_bash.txt · Dernière modification : 2024/01/21 13:37 de yoann