BASH - Découvrir son système d'exploitation
[Mise à jour le 13/3/2023]
En cours de rédaction
- Sources
- Wiki Ubuntu-fr
- Ressources
Introduction
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.
- *.bash
# 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
1. La ligne de commande
1.1 L'invite de commande
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.
1.2 Les commandes (généralités)
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.
- *.bash
# 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
- *.bash
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
- *.bash
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)
- *.bash
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
- *.bash
pi@Pi4Bp8Go:~ $ date --date="2021-04-28" # caractère délimiteur: = mercredi 28 avril 2021, 00:00:00 (UTC+0200)
2. Trouver de l'aide
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.
- Aide depuis la commande
Exemple
- *.bash
pi@Pi400mno:~ $ date --help Utilisation : date [OPTION]... [+FORMAT] ou : date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
- La commande man
Exemple
- *.bash
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.
- La commande apropos
Exemple
- *.bash
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
- La commande whatis
Exemple
- *.bash
pi@Pi400mno:~ $ whatis apropos apropos (1) - Chercher le nom et la description des pages de manuel
3. Système de fichiers et répertoire
4. Les utilisateurs, les groupes et les droits
- Organisation des utilisateurs sous Linux
- Devenir super utilisateur
Exemple
- *.bash
sudo commande sudo su commande # su pour rester super utilisateur
ATTENTION
Seul le super utilisateur (root) peut créer des utilisateurs et des groupes.
4.1 Les utilisateurs
- Source
- Wiki Ubuntu-fr : Gestion des utilisateurs et groupes en ligne de commande
Créer un utilisateur
Commande
- *.bash
sudo adduser nom_utilisateur
Supprimer un utilisateur
Commandes
- *.bash
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
- *.bash
sudo passwd nom_utilisateur
Afficher la liste des utilisateurs et des groupes
- Source : tuto.eu
- Liste des utilisateurs
Exemple 1
- *.bash
cat /etc/passwd # ou less /etc/passwd si le fichier comprend plusieurs pages
Exemple 2
- *.bash
grep bash /etc/passwd | cut -f1 -d: # Filtrage et affichage des noms d'utilisateur ayant une connexion bash dans le fichier passwd
4.2 Les groupes
Créer un groupe
Commande
- *.bash
sudo addgroup nom_groupe
Exemple
- *.bash
sudo addgroup www-data
Mettre un utilisateur dans un ou plusieurs groupes
- -l pour renommer l'utilisateur (il faudra également renommer son répertoire)
- -g pour changer le groupe
- -G pour mettre un utilisateur dans plusieurs groupes
Commandes
- *.bash
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
- *.bash
sudo usermod -g www-data ruche1
- Lister le contenu d'un groupe
Exemple
- *.bash
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
- *.bash
delgroup nom_groupe
Afficher la liste des groupes
Exemple
- *.bash
cat /etc/group | awk -F: '{print $ 1}'
4.3 Gestion des droits
- Source