Quand l'utilisateur d'un ordinateur, souhaite lui faire faire une action, il ne s'adresse pas directement à lui, car celui-ci ne comprend que le langage machine. L'utilisateur a recours à un logiciel ou a une interface de commande. Cette interface fait le pont entre l'utilisateur et les composants matériels.
Jusqu'aux années 1950, les ordinateurs n'étaient utilisables que par les programmeurs
qui interagissaient directement avec le matériel. Les rôles de programmeur et
d'opérateur étaient alors confondus. Il n'y avait pas de système d'exploitation.
Puis, dans les années 1960, les premiers systèmes d'exploitation firent leur
apparition. Dans un souci d'exploiter au mieux les ordinateurs, la mise en place
de fonction d'ordonnancement des tâches et la séparation des rôles de programmeur
et d'opérateur en été les premières missions.
Enfin, dans les années 1970, toujours avec l'objectif d'optimiser l'usage
des calculateurs, le développement des systèmes d'exploitation s'est accéléré.
Ils devaient assurer le partage des ressources matérielles des ordinateurs
entre plusieurs programmes fonctionnant simultanément.
Depuis les années 1980, les systèmes d'exploitation se sont sophistiqués,
en particulier avec l'essor de la micro-informatique, des interconnexions entre
systèmes hétérogènes, d'Internet, et des réseaux locaux.
Un ordinateur personnel est capable d'exécuter plusieurs logiciels à la fois pour un utilisateur.
Un serveur, en plus de cette faculté, doit être capable d'accepter plusieurs utilisateurs en même temps.
Les ressources matérielles d'un ordinateur doivent donc être partagées entre les
différentes applications et utilisateurs qui y accèdent. C'est le système d'exploitation qui permet ce partage.
Un Système d'Exploitation (SE), ou en anglais Operating System (OS), est un ensemble de programmes qui répartissent l'usage des ressources matérielles d'un ordinateur pour les logiciels qui s'y exécutent. Windows, OS-X ou encore Linux sont tous les trois des systèmes d'exploitation.
utilisateur | utilisateur | ||||
⭥ | ⭥ | ||||
application | application | application | application | ||
⭥ | ⭥ | ⭥ | ⭥ | ||
système d'exploitation | |||||
⭥ | |||||
matériel |
Sur leur ordinateur personnel, les particuliers comme
les professionnels utilisent communément Windows et Mac OS et plus marginalement Linux.
Ce dernier a la particularité d'être libre et d'être beaucoup plus utilisé par le monde universitaire
et les professionnels de l'informatique.
On qualifie un logiciel de libre quand son code est distribué dans le cadre d'une licence qui en autorise la consultation, la modification, et la redistribution, sans contrepartie financière. C'est le cas de Linux et également d'Android sur mobile. L'usage de ces systèmes s'avère sans restriction et gratuit, à l'opposé des systèmes propriétaires. Cette liberté d'usage d'un système d'exploitation libre basé sur Linux a donné lieu à la création de très nombreuses variantes, aussi appelées distributions dont Debian, Ubuntu ou encore Android, tous dérivé de Linux dont ils ont repris le noyau.
Voir l'arborescence de la multitude de distributions Linux sur Wikipédia.
Les matériels mobiles tels que tablette ou smartphone, qui reprennent en plus petit, l'architecture d'un ordinateur classique, sont également doté d'un système d'exploitation. On peut citer Android développé par Google où iOS développé par Apple. Si tous ces systèmes d'exploitation ont la même vocation, certains sont libres tandis que d'autres sont propriétaires.
Que ce soit sur les systèmes Linux ou sur Windows, les fichiers sont organisés selon une structure arborescente.
Le dossier tout en haut est le dossier racine (root). Ce dossier a été choisi pour être la base du
Le dossier tout en haut est le dossier racine (root). Ce dossier a été choisi pour être la base du
stockage des fichiers. Sur Linux, la racine est /
tandis que pour Windows, la racine est C://
.
/bin
contient les commandes de base/boot
contient l'ensemble des fichiers nécessaire au démarrage de Linux/dev
pour "device" contient les fichiers nécessaires à la liaison avec les périphériques/etc
contient un fichier listant les utilisateurs/home
contient les dossiers personnels des utilisateursLe répertoire courant est le répertoire dans lequel on se situe. Il est désignable par un point ./
.
Le répertoire père est le répertoire contenant le répertoire courant. Il est atteignable grâce à deux points ../
.
Le chemin absolu d'un répertoire ou d'un fichier est son chemin en partant de la racine
et montrant l'ensemble des répertoires traversés.
Le chemin relatif d'un répertoire ou d'un fichier est son chemin en partant du répertoire courant.
videos
.
Lisa
, donner le chemin relatif pour atteindre le dossier images
.
Maintenant que nous connaissons le rôle du système d'exploitation pour un ordinateur, nous allons apprendre à lui passer des ordres. La manière la plus basique est d'employer des commandes en mode texte en utilisant le clavier, plutôt que d'utiliser l'interface graphique prévue par le système d'exploitation et qui utilise essentiellement la souris. Cette façon de procéder est particulièrement utile dans des situations de dysfonctionnement.
Ces commandes textuelles doivent être entrées dans un shell.
Il s'agit d'un programme assurant l'interface entre un ordinateur et
son utilisateur. Les shells permettent d'accéder à des fonctions plus nombreuses et profondes d'un PC, ce que ne permet pas toujours l'interface graphique.
C'est pourquoi, ils sont préféres par de nombreux professionnels de l'informatique et administrateurs système.
Remarque : «Shell» signifie «coquille» en anglais. En effet la coquille est la partie visible pour un utilisateur. C'est via cette coquille qu'il permet d'interagir avec ses fonctions internes.
Historiquement, les systèmes d'exploitation UNIX et Windows ont utilisé des shells différents puisque leurs noyaux sont différents.
Il en résulte une différence dans la syntaxe des instructions suivant que l'on soit sur l'un ou l'autre des systèmes d'exploitation.
Le shell de Linux
est souvent appelé «Terminal». Le shell de Windows, appelé «l'invite de commande» (cmd), a toujours été plus limités en fonctionnalités que le shell Linux.
«Windows Powershell» est le successeur attendu de l'invite de commande de Windows. Ce nouveau shell a plus de capacité d'action et veut devenir un outil
universel pour les administrateurs système quelque soit le système d'exploitation. Il reprend pour cela en partie les commandes du shell de Linux et de Windows.
En 2011, des étudiant·e·s du MIT ont eu l'idée de passer par le biais du jeu vidéo pour apprendre à utiliser les lignes de commande GNU/Linux aux non‐initié(e)s. Trois ans plus tard sortait le jeu Terminus.
Sous Linux, ces commandes sont écrites dans un langage de script appelé Bash et utilisable dans le Terminal.
Sur les systèmes Windows, le langage de script s'appelle Batch et est utilisable dans l'invite de commande.
🐧 Shell Linux : Terminal Langage Bash | ⊞ Shell Windows : Invite de commande Langage Batch | Description |
---|---|---|
Se déplacer dans l'arborescence | ||
cd [CHEMIN] | Changer de répertoire (change directory) en donnant son chemin relatif ou absolu. | |
cd .. | Aller dans le répertoire père. | |
pwd | chdir | Afficher le chemin absolu du répertoire courant. |
ls | dir | Lister le contenu du répertoire courant. |
ls --help | help dir | Afficher la documentation 'une commande. |
Gérer les répertoires/dossiers et les fichiers | ||
mkdir [DOSSIER] | Créer un nouveau répertoire. | |
echo [TEXTE] > [FICHIER] | Écraser ou créer un fichier texte contenant un texte dans le dossier courant. | |
echo [TEXTE] >> [FICHIER] | Concatèner un texte à la suite du texte déjà contenu dans le fichier. | |
cat [FICHIER] | type [FICHIER] | Afficher le contenu d'un fichier dans la console. |
mv [FICHIER] [FICHIER] | ren [FICHIER] [FICHIER] | Renommer un fichier en ajoutant le nom du fichier suivi de son nouveau nom. |
mv [FICHIER] [CHEMIN] | move [FICHIER] [CHEMIN] | Déplacer un fichier en donnant le chemin du fichier suivi du chemin du dossier d'accueil. |
cp [FICHIER] [CHEMIN] | copy [FICHIER] [CHEMIN] | Copier un fichier |
rm [FICHIER] | del [FICHIER] | Supprimer le fichier. |
rmdir [DOSSIER] | del [DOSSIER] | Supprimer le dossier. |
Divers | ||
free | systeminfo | Connaître la mémoire disponible. |
date | date | Obtenir la date et l'heure courantes. |
grep [TEXTE] [FICHIER] | Recherche un texte dans un fichier. | |
ps | Liste tous les processus actifs du système. |
Remarques :
CTRL + C
.TAB
afin d'auto-compléter la fin de la commande. Selon les shells, cette technique peut ne fonctionner que
lorsqu'il n'y a qu'une seule possibilité pour l'autocomplétion, ou bien donner la liste des possibilités pour la complétion. C'est très pratique. Cela permet d'éviter d'avoir à taper tout le nom d'un fichier par exemple.TAB
. Exemple : Taper rmdir nom_dossier --ig
puis TAB
.
xinput --list
;
puis définissez le mode du clavier (fr pour AZERTY, us pour QWERTY) avec la commande :
setxkbmap -device 3 fr
Le Bash est un langage de script facile d'utilisation et un outils incontournable des administrateurs systèmes Linux car comme les autres langages de script,
il permet d'automatiser les tâches. Ses instructions peuvent être associées entre elles et enregistrées dans un fichier texte
(extension .sh
) pour être exécutées plus tard.
Sous windows, le langage de script Batch offre moins de possibilités mais comme sous Linux, les scripts Batch
peuvent être enregistrés dans un fichier texte avec les extensions .bat
ou cmd
.
Nous avons vu qu'un système d'exploitation a pour mission, entre autres, de gérer les différents utilisateurs qui se partagent les ressources de l'ordinateur. En particulier, il doit réglementer l'accès aux fichiers de son arborescence afin d'éviter des problèmes.
En effet, il n'est pas logique de permettre à un utilisateur de supprimer ou même de modifier
les fichiers d'un autre utilisateur. Il n'est pas non plus normal de laisser n'importe quel
utilisateur supprimer des répertoires entiers où sont localisés les programmes du système
d'exploitation, au risque de provoquer une panne.
Nous allons voir comment, sous Linux, ces
accès sont gérés.
Il existe sous Linux un utilisateur particulier qui dispose de tous les droits. Il s'agit du super utilisateur (SU), aussi appelé root ou encore administrateur.
Pour faciliter l'administration des droits accordés à chacun des utilisateurs déclarés dans le système d'exploitation, il est possible d'organiser ces derniers en groupes. Ainsi, au lieu d'accorder de manière individuelle un droit d'accès, il est possible d'attribuer ce droit à tous les membres d'un groupe.
Quel droit peut-on accorder sur un fichier ou un répertoire ? Ils sont au nombre de trois :
r
(read) accorde le droit de
lire le contenu de l'élément,w
(write) accorde le droit de modifier le
contenu de l'élément,x
(execute) accorde le droit d'exécuter le contenu
de l'élément si celui-ci contient un code exécutable.u
(user),g
(group)o
(others). Ceux-ci n'appartiennent
donc pas au groupe auquel est associés l'élément, et aucun d'eux n'en est le propriétaire,a
(all) est également utilisée lors de l'affectation des droits d'accès.rw-r--r--
rwxrwxrwx
rwxr--r--
rwxrw-r--
🐧 Shell Linux : Terminal Langage Bash | ⊞ Shell Windows : Invite de commande Langage Batch | Description |
---|---|---|
Gestion des droits et permissions d'accès | ||
ls -l | ?? | Lister les fichiers du répertoire courant en affichant les droits d'accès et les permissions. |
ls -l [FICHIER] | ?? | Afficher les droits d'accès et les permissions du fichier. |
chmod XXX fichier | attrib | Modifier les droits d'accès et les persmissions d'un fichier.
XXX correspond au code décimal des droits d'accès. Plus de détails sur cette instruction : Wikipédia |
chmod UMD,...,UMD [FICHIER] | attrib | Modifier les droits d'accès et les persmissions d'un fichier.
UMD correspond à la lettre Utilisateur (u , g , o ou a ) suivi de la Modification (- pour enlever un droit
ou + pour l'ajouter) et du Droit (r , w ou x ). |
chown [UTILISATEUR] [FICHIER] | ?? | Modifier le propriétaire d'un fichier. |
Divers | ||
ping [URL/IP] | Tester la liaison vers un autre poste. | |
ifconfig | ipconfig | Obtenir les informations de l'interface réseau. |
./[FICHIER] | [FICHIER] | Exécuter le script de commande Bash contenu dans le fichier .sh pour Linux,
ou le script de commandes Batch contenu dans un fichier .bat ou .cmd sous Windows. |
python [FICHIER] | py [FICHIER] | Exécuter le script python contenu dans le fichier. |
\ | ^ | Échapper un caractère. En plaçant ce caractère devant un autre caractère, ce dernier sera interprété littéralement. |
"[TEXTE]" | ?? | Échapper une chaîne de caractères. |
Comme les langages de programmation, le langage de script Bash permet de faire des boucles.
tables.sh
. gen_table.py
.
Ce script doit créer un dossier intitulé tables_multiplications
contenant dix fichiers texte nommé table_XX.txt
. Chaque fichier devra contenir
une table de multiplication (table de 1 pour le 1er fichier table_01.txt
, etc.. jusqu'à la table de 10 dans le fichier table_10.txt
).
En français | en anglais |
---|---|
ordinateur personnel | personal computer (PC) |
Système d'Exploitation (SE) | Operating System (OS) |
logiciel libre | free software |
interface système ou coque logicielle | shell |
racine | root |