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.
Les fonctions de base d'un système d'exploitation sont d'assurer la gestion des accès :
Mais aussi :
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 distribution 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 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.
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
./home/martin/videos
Lisa
, donner le chemin relatif pour atteindre le dossier images
.../martin/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 intructions 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", 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.
level_map.png
est dans le dossier docs
du dépôt Git public du jeu : github.com/luffah/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 d'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 | ?? | 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. |
Remarque :
1 - Pour reprendre la main dans la console, utilisez la combinaison de touche CTRL + C
.
2 - Lorsque vous écrivez une commande, vous avez la possibilité d'appuyer sur la touche TAB
afin d'autocompléter la fin de la commande. Cette technique ne fonctionne que
lorsqu'il n'y a qu'une seule possibilité pour l'autocomplétion. C'est très pratique. Cela permet d'éviter d'avoir à taper tout le nom d'un fichier par exemple.
rmdir
avec la commande rmdir --help
.
On constate que cette commande a une option --ignore-fail-on-non-empty
. Ainsi pour supprimer un dossier non-vide, la commande Bash est :
rmdir nom_dossier --ignore-fail-on-non-empty
.
TAB
. Exemple : Taper rmdir nom_dossier --ig
puis TAB
.xinput --list
Puis utiliser 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 enregistrer 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.
ls > liste_fichiers.txt
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 groupes..
Quel droit peut-on accorder sur un fichier ou un répertoire ? Ils sont au nombre de trois :
rw-r--r--
644
rwxrwxrwx
777
rwxr--r--
744
rwxrw-r--
764
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. |
mkdir Julien
echo bla > Julien/fichier_01.txt
echo blabla > Julien/fichier_02.txt
echo blablabla > Julien/fichier_03.txt
ls -l
chmod 777 Julien/fichier_01.txt
chmod 741 Julien/fichier_01.txt
chmod g+w Julien/fichier_01.txt
chmod g-w,g+x Julien/fichier_01.txt
chmod a-x Julien/fichier_01.txt
Comme les langages de programmation, le langage de script Bash permet de faire des boucles.
for var in 1 2 3
do
echo $var
done
for i in 1 2 3 4 5 6 7 8 9 10
do
for j in 1 2 3 4 5 6 7 8 9 10
do
echo $i x $j = $(($i*$j))
done
echo # Ligne vide
done
os
, puis faites vos recherches ...
import os
os.mkdir("tables_multiplications")
for i in range(1, 11):
# Création de la table de multiplication
table = ""
for j in range(1, 11):
table += str(i) + " x " + str(j) + " = " + str(i*j) + "\n" # \n correspond à un saut de ligne
# Enregistrement de la table dans un fichier
nom_fichier = "table_0" + str(i) + ".txt" if i<10 else "table_" + str(i) + ".txt"
with open("tables_multiplications/"+nom_fichier, 'w') as f:
f.write(table)
En anglais :