[Mise à jour le 13/3/2023]
En cours de rédaction
Le shell désigne un interpréteur de lignes de commande. Lorsque l’invite de commande s’affiche, l’utilisateur peut saisir une nouvelle ligne de commande. La ligne de commande regroupe une ou plusieurs commandes et se termine par un retour à la ligne.
Une commande est composée d’un nom qui décrit une action ou un programme, parfois suivie d’arguments qui précisent les paramètres de l’action à effectuer.
# Exemple : affichage d'un calendrier # Remarque : n'est pas présent par défaut dans le Raspberry Pi, à installer avec sudo apt install ncal $ cal -m apr # nom : cal, option : m, argument d'option: apr
Lorsque l'on démarre un terminal sur lequel le shell Bash est présent, on est accueilli avec l’invite de commande appelée prompt en anglais.
Le shell est une application qui sert d’interface entre le noyau du système d'exploitation et l’utilisateur. Il sert à exécuter des commandes qui proviennent d’un terminal (mode interactif) ou d’un fichier (mode script). Ces commandes peuvent être internes ou externes au shell. Les commandes externes font appel à des programmes séparés du shell tandis que les commandes internes sont exécutées par le shell.
# La commande interne //type// suivie du nom d’une commande sert à indiquer le type de la commande # Exemple pi@Pi4Bp8Go:~ $ type echo man # Renvoie echo est une primitive du shell # echo est de type built-in (commande interne) man est /usr/bin/man # man est une commande externe située dans le répertoire /usr/bin
Une commande (interne ou externe) est constituée par des mots séparés par des espaces. Le nombre d’arguments dépend de la commande et de l’action à effectuer par la commande.
Exemples : la commande date avec et sans arguments
pi@Pi4Bp8Go:~ $ date mercredi 28 avril 2021, 17:16:16 (UTC+0200) pi@Pi4Bp8Go:~ $ date +%s 1619623002 # nombre de secondes écoulées depuis le 1e premier janvier 1970
Un argument peut être une option, il sera alors de la forme -x avec x la lettre identifiant l’option. Une lettre étant peu explicite, il est souvent possible d’identifier une option via un ou plusieurs mots. Elle sera alors préfixée de deux tirets hauts --.
Exemples : la commande date avec une option
pi@Pi4Bp8Go:~ $ date -u mercredi 28 avril 2021, 15:24:03 (UTC+0000) pi@Pi4Bp8Go:~ $ date --utc mercredi 28 avril 2021, 15:24:10 (UTC+0000)
Pour qu’elle ait un sens, une option doit parfois être suivie d’une valeur, appelée argument d’option.
Exemples : la commande cal (CALendar)
pi@Pi4Bp8Go:~ $ cal -m apr # option: -m, valeur : apr Avril 2021 di lu ma me je ve sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
La valeur associée à l’option peut être spécifiée dans le même argument, mais séparée de l’identifiant d’option via un caractère délimiteur.
Exemple : la commande date
pi@Pi4Bp8Go:~ $ date --date="2021-04-28" # caractère délimiteur: = mercredi 28 avril 2021, 00:00:00 (UTC+0200)
La documentation est fournie par les commandes elles-mêmes et l’utilisateur peut y accéder soit au travers de la commande, soit au travers d’utilitaires dédiés.
Exemple
pi@Pi400mno:~ $ date --help Utilisation : date [OPTION]... [+FORMAT] ou : date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Exemple
pi@Pi400mno:~ $ man date DATE(1) User Commands DATE(1) NAME date - print or set the system date and time SYNOPSIS date [OPTION]... [+FORMAT] date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] DESCRIPTION Display the current time in the given FORMAT, or set the system date. etc.
Exemple
pi@Pi400mno:~ $ apropos encoding # recherche d'un convertisseur d'encodage bind_textdomain_codeset (3) - set encoding of message translations chardet (1) - universal character encoding detector chardet3 (1) - universal character encoding detector ... iconv (1) - convert text from one character encoding to another # c'est ce que l'on cherche
Exemple
pi@Pi400mno:~ $ whatis apropos apropos (1) - Chercher le nom et la description des pages de manuel
Exemple
sudo commande sudo su commande # su pour rester super utilisateur
Créer un utilisateur
Commande
sudo adduser nom_utilisateur
Supprimer un utilisateur
Commandes
sudo deluser nom_utilisateur # Supprime l'utilisateur, mais pas son répertoire personnel sudo deluser --remove-home nom_utilisateur # Supprime l'utilisateur et son répertoire personnel
Changer le mot de passe d'un utilisateur
Commande
sudo passwd nom_utilisateur
Afficher la liste des utilisateurs et des groupes
Exemple 1
cat /etc/passwd # ou less /etc/passwd si le fichier comprend plusieurs pages
Exemple 2
grep bash /etc/passwd | cut -f1 -d: # Filtrage et affichage des noms d'utilisateur ayant une connexion bash dans le fichier passwd
Créer un groupe
Commande
sudo addgroup nom_groupe
Exemple
sudo addgroup www-data
Mettre un utilisateur dans un ou plusieurs groupes
Commandes
sudo usermod -g nom_groupe nom_utilisateur # place l'utilisateur nom_utilisateur dans le groupe nom_groupe sudo usermod -G goupe1,groupe2,groupe3 nom_utilisateur # place l'utilisateur nom_utilisateur dans # les groupes group1, groupe2 et groupe3
Exemple
sudo usermod -g www-data ruche1
Exemple
cat /etc/group # ou less /etc/group si le fichier comprend plusieurs pages # Exemples d'affichage # www-data:x:33:hickel, leguilloux, bailly, borracino, lefreteur, etc. sont dans le groupe www-data # tsin:x:1029:borracino,lefreteur sont dans le groupe tsin # borracino:x:1030 est dans son propre groupe
Supprimer un groupe
Commande
delgroup nom_groupe
Afficher la liste des groupes
Exemple
cat /etc/group | awk -F: '{print $ 1}'