Logiciels de Base

1ère partie : Introduction
Cours 1ère année informatique, semestre 1.

Najib Tounsi

(2e partie ici)

Avis aux lecteurs : La plupart des exemples et figures donnés dans ce document sont issus d'un ordinateur sous MacOS. Mais les concepts introduits sont suffisamment généraux et ne dépendent pas d'un système donné ou d'un logiciel particulier.

☰ Contenu

  1. Systèmes Informatiques
    1. Matériel
    2. Logiciels
  2. Système d'Exploitation
    1. Le Noyau
    2. Logiciels de Base
  3. Logiciels d'Application
  4. Différents Types de Systèmes
    1. Systèmes mono-programmés
    2. Systèmes multi-programmés
    3. Autres types de systèmes
  5. Différents modes d'interactions
    1. Mode commande
      1. L’interprète de commande Shell
    2. Mode Graphique
    3. Caractéristiques du mode graphique
      1. La ligne Menu
      2. Le contenu d'une fenêtre.
    4. Jouer avec la souris
  6. Equivalence entre les deux modes
    1. Exemples de commandes
    2. Configuration des Variables d'environnement dans les deux cas.
      1. En mode graphique
      2. En mode commande
    3. Mode commande vs. mode graphique
  7. Virtualisation
  8. Système de Fichiers
    1. Fichiers/ répertoires
    2. Désignation de fichier
    3. Protection de fichier
    4. Types de fichiers
      1. Fichier texte ou fichier binaire
      2. Fichier données ou fichier programme
      3. Autres classifications
        1. Fichier système ou fichier utilisateur
        2. Fichier  spécial ou fichier régulier
    5. Informations sur les fichiers
    6. Pour en savoir plus

Systèmes Informatiques

Ensemble de ressources matériels et logiciels nécessaires au traitement automatique de l'information. Il convient de rajouter aussi les ressources humaines nécessaires au bon fonctionnement du système : installation, personnalisation, maintenance etc. (on dit les ingénieurs système) .

Matériel

Classiquement, on trouve:

Fig 1 Composants d'un ordinateur

Fig-1. Composants de base d'un ordinateur

Un ordinateur est généralement connecté à un réseau pour partager ou accéder à des ressource supplémentaires. On ne s'y intéresse pas pour l'instant.

L'unité centrale (UC) contient les éléments suivants:

Fig 2 Composants de l'UC

Fig-2. Composants de l'Unité Centrale

où CPU (Central Processing Unit) est l'unité de traitement et calcul (on dit aussi processeur), la mémoire est l'unité qui contient les données et les instructions à exécuter. Les bus sont le moyen de transport des données et des instructions entre ces deux unités.

Logiciels

Les logiciels se composent d'abord du système d'exploitation et d'autres logiciels d'applications.

Fig 3 Différentes couches d'un OS
Fig-3. Les logiciels contenus dans un ordinateur

Système d'Exploitation

Le système d'exploitation (ou système opératoire, Operating System) permet d'utiliser le matériel pour exploiter ses ressources de façon optimum et de faciliter le travail de l'utilisateur. C'est un ensemble de programmes intégrés qui exécutent et coordonnent un ensemble de tâches reliées et interdépendantes.

On peut y voir deux couches :

Fig 3-bis Différentes couches d'un OS

Fig-3-bis. Les couches d'un OS

Le Noyau

La première couche de ces programmes est le noyau. Il s'occupe de

(Cf. Cours Systèmes d'Exploitation, semestre 2.)

Une deuxième couche de programmes est constituée de logiciels de base.

Logiciels de Base

(Voir aussi 2e Partie)

Les logiciels de base sont des programmes de services pour un environnement de programmation de base.

Un premier ensemble de tels programmes est constitué de:

En effet, un ordinateur doit permettre d'écrire et d'exécuter des programmes avant tout...

Un deuxième ensemble est formé de programmes (dits aussi outils, tools) tels que:

L'interprète de commandes assure le dialogue avec l'utilisateur pour la mise en oeuvre de ces services et outils. On le désigne par le nom générique Shell. Par exemple, bash (Bourne Again Shell) sous les OS de la famille Unix/Linux ou MacOS, command.com, cmd.exe ou PowerShell pour  DOS et Windows.

Un Shell offre à un utilisateur la possibilité de rentrer une commande pour demander un service (par exemple la saisie d'un texte de programme, sa compilation ou son exécution, la création ou copie d'un fichier etc.) et fait exécuter ce service en faisant appel à l'outil adéquat.

On reviendra plus tard sur ces programmes (2e Partie).

Logiciels d'Application

Ce sont essentiellement les logiciels qui ne sont pas systématiquement livrés par le vendeur de l'ordinateur, et qui dépendent d'une installation donnée chez un utilisateur. On trouve d'abord les logiciels généraux tels que:

Ensuite, on trouve les applications spécifiques à une organisation particulière, e.g. la gestion de stock pour un commerce, la paie du personnel pour une entreprise, la facturation pour une compagnie etc…

Différents Types de Systèmes

Systèmes mono-programmés

Avec ces systèmes les programmes s'exécutent les uns après les autres. On dit aussi système monotâche. C'est le cas par exemple des premiers PCs. Un seul utilisateur peut utiliser le système qui exécute un programme à la fois. L'inconvénient de ces systèmes c'est qu'il faut attendre qu'une tâche se termine avant d'en lancer une autre, même si la première n'utilise pas le processeur, e.g. attend un événement donné.

Systèmes multi-programmés

Un système multiprogrammé (ou multitâches) est un système qui permet à plus d'un programme d'être exécutés "à la fois". C'est le cas de tous les systèmes actuels. L'avantage de ces systèmes c'est qu'ils optimisent le temps du processeur. Le système permet à un deuxième programme d'être exécuté même si un programme précédent n'est pas terminé. C'est le cas par exemple quand ce dernier effectue une entrée/sortie (attente d'une saisie, écriture sur disque ou impression).

Un système multitâche peut permettre à plusieurs utilisateurs de travailler simultanément. On dit système multi-utilisateurs dans ce cas.

Il y a différentes techniques de partage de l'UC entre les différentes tâches et utilisateurs. (cf. par exemple [1] )

Autres types de systèmes

Différents modes d'interactions

Il y a principalement deux modes d'interaction avec l'ordinateur. Le mode commande avec son écran-lignes-de-textes où on tape  une commande au clavier et l'ordinateur l'exécute affiche le résultat à l'écran, et le mode graphique où on utilise un pointeur (avec souris ou touchpad) pour manipuler des objets graphiques et cliquer sur des icônes dans  des fenêtres pour activer des tâches.

Mode commande

Dit aussi mode ligne commande (ou terminal tty), le mode commande fonctionne sur un écran où on n'affiche que des caractères. La figure Fig-4, montre un écran terminal de 24 ligne de 80 caractères, avec un prompt $. Ici, c'est un terminal de type UNIX disponible sur MacOS.

Fig-4, Terminal 24 x 80

Fig-4. Un terminal de 24 lignes de 80 caractères

La figure suivante (Fig-4-bis) montre le même type de fenêtre mode commande, sous Windows. Programme  du DOS (prompt caractéristique C:\>).

Fig-4, Terminal 24 x 80 sous DOS

Fig-4-bis. Un terminal de 24 lignes de 80 caractères sous DOS

La figure suivante (figure 4-ter) montre le même terminal que la figure Fig-4 ci-dessus, après avoir tapé quelques commandes (lignes précédées du signe $), dont on voit le résultat.

Fig-4-ter, Terminal 24 x 80 avec des commandes

Fig-4-ter. Quelques lignes de commandes (précédée par $) avec résultat

Les commandes montrées dans figure Fig-4-ter sont:

L’interprète de commande Shell

Il y a un programme essentiel à un système d'exploitation et qui réalise ce mode Ce programme interactif est connu sous le nom générique de Shell,

Un Shell est en fait un interprète de commande. Il reçoit la ligne commande que l'utilisateur tape et demande au système d'exploitation de l'exécuter.

Sous Unix, il y a les interprètes de commandes sh (Bourne Shell), bash (Bourne Again Shell), csh (C-shell), ksh (Korn Shell) entre autres.

Sous Windows et DOS, l'interprète de commande est le programme cmd.exe. Plus récemment  est apparu PowerShell avec une syntaxe de commandes proche des Shell Unix.

Mode Graphique

Dit aussi parfois GUI (Graphical User Interface).

Dans ce mode on dialogue avec le système opératoire de façon plus ergonomique avec une souris (ou autre) qui dernière permet de manipuler un pointeur sur l'écran. On peut pointer dans des zones à l'écran ou sur des figures qui représentent des objets informatiques ou des tâches à activer en appuyant sur un bouton de la souris.

En fait, dans ce mode chaque applications ou programme s'exécute dans une fenêtre sur laquelle l'utilisateur peut agir an pointant avec la souris sur des images (icônes) ou zone d'écran (Fig-5).

La fenêtre la plus simple et la plus immédiate correspond à l'explorateur de fichiers qui permet la navigation dans le systèmes de fichiers  de l'ordinateur, dossiers et documents. Sous Mac OS c'est le Finder, et sous Windows, c'est l'explorateur Explorer. Sous Linux, il y en a plusieurs: Konqueror (Dolphin maintenant), Krusader, Commander etc. [2]

Fig-5, l'explorateur de fichiers

Fig-5. Fenêtre de Finder, l'explorateur de fichier du mode graphique MacOS

Caractéristiques du mode graphique

Dans cette figure on voit plusieurs choses, dont principalement:

  1. La ligne menu qui se trouve généralement en haut (File, Edit, ...). Le contenu et les fonctionnalités de cette ligne dépend de l'application, mais il y a des menus invariants d'une application à l'autre.
  2. La fenêtre proprement dite dont le contenu dépend de l'application aussi, mais avec des invariants communs à toutes le fenêtres.
  3. Les boutons boutons ronds de commande de fermeture/agrandissement/réduction de la fenêtre.

La ligne Menu

La ligne menu d'une fenêtre est fonction de l'application ouverte. Elle contient les menus de sélection de fonctionnalités liées à l'application.

Figure 7 - Menu File

Fig-7. Ligne menu d'une fenêtre (en haut)

Figure 7 bis, Menu file déroulé

Fig-7-bis. Menu File déroulé

On y trouve  en général (Fig 7, 7-bis)

Les sélections se font avec la souris et le bouton gauche.  Une sélection peut se faire aussi par une combinaison de touches dite "raccourci clavier",  de type ^O (lire contrôle O), c'est à dire appuyer en même temps sur la touche ctrl  et sur une lettre.

NB. Si une application a été internationalisée, sa ligne menu est localisable (si l'OS est multilingue). Fig-7-ter.

Figure 7 - Menu File arabisé

Fig-7-ter (a). Menu précédent en Arabe

Figure 7 bis, Menu file arabisé déroulé

Fig-7-ter (b). menu ملف  déroulé

Noter la directionnalité des items du menu. Pas forcément de droite à gauche, i.e. menu ملف plutôt à droite et مساعدة à gauche, comme dans la version latine. La question est ouverte...

Le contenu d'une fenêtre.

Le contenu d'une fenêtre est alors dépendant de l'application. Par exemple une fenêtre de navigation sur Internet, une feuille de calcul Excel, un jeu, une application bancaire etc.

Une fenêtre peut avoir  parfois son propre menu  en haut (figure 8). Ses éléments peuvent être matérialisés par des icônes, du texte ou les deux à la fois, comme ici. Parfois aussi des éléments de sélection en bas (ligne dite statut, figure 8-bis).

Figure 8 - Menu application

Fig-8. Menu Back et Forward... du navigateur Mozilla, en plus
du menu File...Help en haut.

Fig-8-bis, ligne statut de Mozilla

Fig-8-bis. Ligne statut du navigateur Mozilla. Ici, l'icône mail pointé.

Jouer avec la souris

Pointer: Ramener le pointeur de la souris  vers un endroit particulier : sur une icône ou sur un texte. Dans le cas d'un texte un trait verticale | symbolise le curseur.

Cliquer : appuyer et lâcher le bouton de la souris 🖱 (ou un des boutons).

Sélectionner : cliquer une fois sur le bouton (droit) de la souris.

Sélectionner un texte : Appuyer et garder le doigt appuyé sur le bouton tout en déplaçant la souris sur le texte choisi.

Double clic : cliquer rapidement deux fois. Vitesse de double clic  ajustable par configuration de la souris.

Couper/Copier/Coller (Cut/Copy/Paste) (^X/^C/^V) du menu Edit : Permet de déplacer (Couper) ou dupliquer (Copier) un objet d'un endroit à un autre. Ce que l'on sélectionne avec la souris est mis dans une zone mémoire appelée presse-papier (clipboard) dès qu'on choisit Couper ou Copier. Dans le premier cas, l'objet sélectionné est supprimé de sa place initiale. Coller permet de restituer le presse-papier à l'endroit nouveau désigné par la souris. On peut ainsi:

Glisser et déposer (Drag and drop) : Technique favorite des GUIs. Consiste à sélectionner un objet et garder le doigt appuyé sur le bouton tout en déplaçant la souris (Drag). Dès qu'on lâche le bouton, l'objet sélectionné est déposé dans la nouvelle zone pointée par la souris (Drop). Un objet est ainsi déplacé d'une zone à une autre.

NB. On peut sélectionner un texte avec le clavier en appuyant sur shift et sur la flèche du déplacement du curseur. Avec ^X/^C/^V on peut le couper/copier/coller.

Equivalence entre les deux modes

Normalement ce qu'on peut faire dans un mode on peut le faire dans l'autre. Si le mode commande est fruste et un peu plus laborieux, le mode graphique, avec souris, boutons et menus, est plus convivial. Cela dit, le mode commande est plus puissant pour certaines opérations surtout quand elles sont répétitives. Grace au Shell le mode commande offre des possibilités de  programmations très avancées où on peut combiner et varier les commandes en vue de réaliser des tâches très élaborées.

Il faut ajouter que le mode commande est plutôt fait pour un travail de programmeur système qui a besoin de dialoguer de façon très proche des possibilités d'un OS.

Exemples de commandes

Voici quelques commandes classiques correspondant à des manipulations de base en mode graphique Windows ou MacOS. Voir table ci-dessous.

Pour avoir de l'aide en mode graphique, on utilise le menu 'Aide' de l'explorateur du fichier (pour ce qui concerne le système d'exploitation) ou de l'application concernée. En mode commande on dispose de la commande help pour Windows et  man pour les OS à base de Unix. Cette dernière commande (qui évoque un manuel utilisateur) est prévue pour toutes les commandes Unix. man ls, affiche l'aide pour la commande Unix ls. Par extension certains logiciels (ou nouvelles commandes) affichent leur aide de la même façon. man curl affiche l'aide de la commande curl (qui transfert une adresse Web (URI)). Sinon, l'option -h permet d'obtenir la manière d'utiliser un programme. curl -h affiche   l'aide sur cette commande curl.

Table-1, Liste des commandes Unix et leur équivalent Dos
Fonction UNIX DOS
Créer répertoire mkdir nomRépertoire
md nomRépertoire
Aller vers un répertoire cd nomRépertoire cd nomRépertoire
Afficher le nom du répertoire courant pwd pwd
Remonter d'un répertoire cd .. cd ..
Retirer répertoire (vide) rmdir nom Répertoire rd nom Répertoire
Copier un fichier vers un un autre cp fichier-1 fichier-2 copy fichier-1 fichier-2
Renommer un fichier mv fichier-1 fichier-2 rename fichier-1 fichier-2
Afficher un fichier cat fichier ou
more fichier
type fichier
Effacer un fichier rm fichier del fichier
Demander l'aide sur une commande man nomCommande help nomCommande
Lister les fichiers d'un répertoire ls ou ls -l dir

Configuration des Variables d'environnement dans les deux cas.

Les variables d'environnement sont des variables systèmes qui contiennent des choix de configuration ou préférences utilisateur. Par exemple, la variable USER qui contient le nom de l'utilisateur ou la variable SHELL qui contient le nom de l'interprète de commande.

Une variable d'environnement intéressante est la variable PATH. Elle contient la liste des répertoires qui contiennent les fichiers binaires qu'on peut exécuter. Exemple, C:\;C:\System;C:\Programe file\bin sous Windows (séparateur ;), ou /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin sous Unix (séparateur :).

Plus précisément, quand on tape le nom d'une commande, celle-ci est cherchée dans les répertoires indiqués par la variable d'environnement PATH. Quand on rajoute un logiciel au système et qu'on veuille l'exécuter en tapant simplement son nom, on doit modifier cette variable et rajouter le chemin d'accès vers le répertoire où le nouveau logiciel a été placé. Sous Windows par exemple, les commandes de compilation cc ou javac ne sont pas accessibles directement. Il faut modifier la variable d'environnement PATH pour  le répertoire correspondant.

En mode graphique

En mode commande

En mode commande et sous Windows, on peut modifier la variable d'environnement PATH par

set PATH = %PATH%;C:\Programe file\JDK7.1\bin

pour rajouter le chemin d'accès C:\Programe file\JDK7.1\bin à la valeur de PATH.  La notation %PATH% désigne l'ancienne valeur de la variable. Le caractère ; sert de séparateur.

Sous UNIX par

PATH=$PATH:/usr/local/mysql/bin
export PATH

pour rajouter le chemin /usr/local/mysql/bin à la variable PATH. Ici, $PATH désigne l'ancienne valeur et le caractère : sert de séparateur.

Mode commande vs. mode graphique

Le mode ligne commande bien que  plus laborieux est parfois plus puissant. Surtout pour un travail de programmeur système. L'ensemble des outils (commandes) et leur combinaisons sont parfois très efficaces.

Il est parfois très utile de lancer des commandes par lots; chose plus simple en mode commande. Surtout pour les traitements répétitifs. Par exemple traiter un ensemble de fichiers par une ligne commande de forme plus ou moins complexe. (chercher avec find les fichiers a.out, core, *.bak, *~ etc. pour les effacer ou les archiver). La commande suivante cherche les fichiers d'extension .o du répertoire utilisateur pour les effacer.

find $HOME -name "*.o" -exec rm {} \;

Le mécanisme de script du mode GUI permet aussi de faire le même genre de tâche.

Le mode commande s'impose aussi quand on se connecte à distance (telnet) à un ordinateur dans un réseau. On a alors un Shell et on doit taper des commandes.

Virtualisation

Système de Fichiers

Un ordinateur  stocke ses informations dans des fichiers sur disque. On appelle système de fichiers l'ensemble des moyens pour stocker et retrouver ces informations. Cela revient principalement à mettre les informations dans des unités séparées, les nommer et désigner leur emplacement. Une telle unité d'information est appelée fichier (File). L'organisation logique des ces unités et l'ensemble des règles qui les gouvernent s'appelle un système  de fichiers (File System) ou système de gestion de fichiers SGF..

Fichiers/ répertoires

La plupart des systèmes de fichiers structurent leurs fichiers en une collections hiérarchisée de répertoires (directory). Un répertoire est alors une collection de fichiers. Un répertoire peut contenir d'autres (sous) répertoires, et ainsi de suite. On a alors une structure d'arbre où les nœuds sont des répertoires et les feuilles des fichiers. Figure-9 montre un tel arbre avec la racine en haut et les feuilles vers le bas.

Fig-9 Arbre fichiers et répertoires

Fig-9. Structure d'arbre de fichiers et répertoires.  

Dans cette figure, on voit un répertoire appelé MonDossier qui contient deux sous-répertoires Autre et Prog et un fichier README.txt.  Le sous répertoire Autre contient trois fichiers, index.html, lettre.doc et mail.txt et le sous répertoire Prog contient les fichiers hello.c et tp1.java. Le sous répertoire Dossier1 contient quant à lui un seul fichier courrier.txt.

On peut noter qu'un répertoire est en fait un fichier spécial contenant l'information "liste de fichiers ou sous-répertoires"

Avec l'explorateur des fichiers en mode graphique on  visualise mieux cette structure d'arbre grâce au décalage de gauche à droite. Les répertoire sont marqués par l'icône triangle gris.

Fig-9-bis, fichiers et répertoires sous Finder

Fig-9-bis. Structure d'arbre de fichiers et répertoires
vue par l'explorateur de fichiers.

En mode graphique, les répertoires sont matérialisés généralement par une icône dossier (folder)  et les fichiers par un icône document, dont le graphique reflète le type de contenu et l'outil de création de document (figure 9-ter). Exemple, le dessin correspondant à Mozilla pour le document HTML index.html. Voir ci-après la discussion sur les types de fichiers.

figure-9-ter, Icônes folder et document
Fig-9-ter. Icônes dossiers et documents.

Désignation de fichier

Un fichier doit être désigné par son chemin d'accès (path) dans la hiérarchie des fichiers (cf. figure 9) . Il y a deux types de chemins : chemin absolu et chemin relatif.

Un chemin absolu est la référence – unique pour un fichier – donnée à partir de la racine et où les répertoires intermédiaires sont cités nommément, séparés par la caractère / (ou \ sous Windows).

Exemples:

/home/ali/MonDossier/README.txt (par exemple sous UNIX)

C:\>\users\ali\MonDossier\README.txt (sous Windows)

C:\>\users\ali\MonDossier\PROG\hello.c

sont respectivement les chemins absolus du fichier README.txt sous UNIX ou Windows et du fichier  hello.c (voir figure 9). On constatera qu'un chemin absolu commence forcément par / qui es le "nom" de la racine du système de fichiers.

Un chemin relatif est une référence donnée par rapport au répertoire courant. Elle ne commence donc pas par /. Soit Autre le répertoire courant.

lettre.doc est le fichier de ce nom sous Autre
Dossier1/courrier.txt est le fichier courrier.txt sous le répertoire Dossier1 sous Autre

Une convention système est de désigner le répertoire courant par le caractère point . et son parent par deux points .. . Ainsi, et toujours sous le répertoire Autre

./lettre.doc est la même fichier que lettre.doc
../MonDossier/README.txt est le fichier README.txt sous MonDossier

Une erreur de jeunesse (ou mauvaise habitude DOS) est de considérer qu'il suffit de donner le nom d'un fichier pour le trouver (surtout si il s'agit d'une commande UNIX). Sinon on essai d'aller (par des cd) vers le répertoire qui le contient – et qui peut être protégé – pour pouvoir l'utiliser. Cette manipulation marche pour ses sous répertoires à soi, mais pas pour les autres.  On doit prendre l'habitude de désigner un fichier par son chemin d'accès.

En pratique, et pour éviter de taper leur chemin complet, le système de fichier offre une aide pour les noms de commandes. Ces noms sont cherchés sous le répertoire courant, sinon dans une liste de répertoire standards qui est donnée par la variable environnement PATH. Voir plus haut §6.2.2.

Protection de fichier

Toute personne ne peut pas utiliser n'importe quel fichier, et si oui, pas pour faire n'importe quel travail. Le système de fichier offre un mécanisme simple pour protéger les fichiers.

Il y a deux niveaux de protection pour un fichier : les droits d'accès (QUI peu accéder au fichier) et les privilèges (QUOI faire avec le fichier).

Considérons le système de fichier de UNIX. La commande ls -l permet d'afficher les informations ou les propriétés décrivant un fichier.

figure-10, ls -l
Fig-10. Propriétés de fichiers UNIX.

On distingue d'abord les informations courantes telles que le nom, la date de création, la taille et le propriétaire du fichier. Ensuite il y a une chaîne drwxrwxr-x ou -rw-r--r--. Le premier caractère à gauche indique si c'est un répertoire d ou un fichier normale -. Le reste de la chaîne (e.g. rw-r--r--) s'appelle le mode et indique les caractéristiques de protection.

D'abord il y a le droit d'accès, c'est à dire QUI a le droit d'accéder au fichier ou répertoire.  UNIX distingue entre trois catégories d'utilisateurs :

Un fois qu'on a le droit d'accéder à un fichier, qu'est-ce qu'on peut faire avec (le QUOI). C'est le privilèges. On peut accéder à un fichier pour:

Ainsi, le mode est constitué des 3 triplets

rwx rwx rwx

Dans l'ordre, on a les privilèges associés au propriétaire d'un fichier, ensuite les gens de son groupe et puis les autres. La négation d'un privilège est indiquée par la caractère (-). Par exemple:

rw- r-- r--

signifie droits de lecture/écriture pour le propriétaire et seulement le droit de lecture pour le groupe et les autres.

rwx rwx r-x

signifie tous les droits, lecture/écriture/exécution pour le propriétaire et le groupe, e seulement le droit de lecture/exécution pour les autres.

Pour un répertoire, lire r signifie lister son contenu, écrire w signifie modifier son contenu, i.e. y rajouter ou supprimer un fichier et exécuter x signifie y accéder par la commande cd.

Types de fichiers

On peut classer les fichiers selon plusieurs dimensions. Nous en avons choisi deux ici: fichier texte vs. fichier binaire, fichier données vs. fichier programme.

Fichier texte ou fichier binaire

Un fichier texte est un fichier qui contient un texte lisible ou plus généralement un texte visualisable sur écran ou imprimable. Un fichier binaire est un fichier qui contient des données codés dans un format que seul un logiciel peut comprendre ou interpréter. En d'autres termes, un fichier binaire n'est pas affichable par un simple éditeur.

Exemples de fichiers textes

Un fichier texte est codé en UTF-8 (Unicode Transformation Format 8) qui est le code pour toute les langues du monde. UTF-8 inclut le format ASCII.

On peut distinguer dans cette classe les fichiers dits texte brut (plain text), où le texte ne porte aucune information autre que ce qu'il dit. Il n'y a pas de style de type texte gras ou italique ou la notion de paragraphe (à part le saut de ligne ou les espaces de décalage). Exemple de tel texte (poème Achwaq, mis en musique et chanté par Riad Sounbati. Texte Mustapha AbdouRahman)

هتف الصبح و غنى بنشيد .. رائع اللحن شجي النغمات كالمُنى تُقبل كالحلم السعيد .. في خيال كابتسام الزهرات.

ou bien

  Uniform Resource Identifiers (URI): Generic Syntax

 Status of this Memo

   This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements
...

Par contre, un texte riche (rich text) est un texte qui porte des balises de formatage comme la couleur des caractères, le style gras ou italique, la division en paragraphe etc. Ces balises ne font évidemment pas partie de l'objet du texte. Exemple (en HTML ici) :

 Ceci est une texte <br />
 en <strong> gras </strong>

<br /> signifie aller à la ligne, et  <strong> et </strong> entourent un texte à rendre en caractères gras. Il faut bien sur que le logiciel qui ouvre un tel texte puisse interpréter ces balises pour rendre le format. Texte en gras.  Ici ce serait un navigateur Web. Sinon le texte sera affiché tel qu'il est créé, avec les balises apparentes.

Fichier données ou fichier programme

Dans cette classification, un fichier contient soit des données (texte ou binaires!) soit un code (texte ou binaire!) à exécuter. Un fichier texte est une donnée pour un éditeur. Un fichier source C est une donnée pour le compilateur C. L'éditeur de texte ou le compilateur sont eux-mêmes contenu dans des fichiers qui sont donc des fichiers programme (reconnaissables sous Windows à l'extension caractéristique .exe, comme gcc.exe pour le compilateur GNU C++).

Cette distinction est importante dans le cas où, dans une ligne commande comme

    $ gcc   hello.c

le premier mot à apparaître est celui d'un fichier programme à exécuter (le compilateur GNU gcc), et le mot suivant serait le nom d'un fichier donné comme entrée à la commande (le source hello.c).

Le tableau suivant montre des exemples de fichiers dans différents cas. Les noms de fichiers sont supposés suggérer leur contenu...


Fichier Texte  
Binaire
Données
lettre.txt
hello.c
index.html
hello.py
...
lettre.doc
article.pdf
fichier client.dbf
dans une BD
...
Programme
hello.py
maCom.bat
...
Emacs
Firefox
hello.exe
...

A noter:

Fig 10, PDF vu en mode texte

Fig-10-(a). Un fichier PDF vu en mode "texte" par un éditeur de texte

fig-10-b, PDF vue par un previewer

Fig-10-(b). Un fichier PDF vu en mode "texte" par un viewer

Autres classifications

Fichier système ou fichier utilisateur

Cette distinction est surtout utile pour protéger les zones systèmes et pour pouvoir sauvegarder et restaurer les parties du disques utiles à l'utilisateur.

Fichier  spécial ou fichier régulier

Un fichier régulier est un fichier normal comme ceux dont on vient juste de parler jusqu'à maintenant. Un fichier spécial est par exemple un répertoire, un alias (lien vers un fichier), un "canal" de communication entre client et serveur, un dispositif d'entrée/sortie, etc.

Cette distinction  est visible sous UNIX avec la commande ls -l d'information sur les fichiers. La ligne information d'un fichier régulier n'a aucune lettre spécifique en début de ligne et commence par un tirait '-'.

$ ls -l
total 8
-rw-r--r-- 1 Najib staff 7 Nov 17 17:48 myFile
drwxr-xr-x 2 Najib staff 68 Nov 17 17:49 myDirectory
prw-r--r-- 1 Najib staff 20 Nov 17 17:49 tube
lrwxr-xr-x 1 Najib staff 6 Nov 17 17:49 alias -> myFile

Informations sur les fichiers

Un Système d'exploitation mémorise pour un fichier un certain nombre d'informations. Ce sont principalement le nom du fichier, sa taille en octets, la date de création et/ou de modification, le nom du l'utilisateur propriétaire du fichier et les droits d'accès. On peut voir ces informations avec  la commande DOS dir /P ou la commande  Unix ls -l (voir juste ci-dessus), si on est en mode commandes. En mode graphique sous Windows, c'est la rubrique propriétés du menu contextuel (bouton droit de la souris) quand on sélectionne le fichier. La figure suivante donne un aperçu des informations générales sur un fichier texte sous Mac OS (menu info de Finder ou ^I),

Fig-11, les infos sur un fichier MacOS

Fig-11, Informations générales sur un fichier sous MacOS.

et dont voici le résultat de la commande ls -l

    -rw-r--r--  1 Najib  staff  58 Oct 23 17:07 hello.c

avec dans l'ordre, le droit d'accès, l'auteur, la taille, la date de modification et le nom de fichier.

Mais l'information a plus importante pour un fichier (une autre façon de les classer, soit-dit en passant) c'est la nature de son contenu qui détermine la façon de le traiter et le type d'applications qui peuvent l'ouvrir, quand on clique sur le fichier (Open with dans la fig-11). En général l'extension dans le nom d'un fichier (.txt, .html, .pdf, .c etc.) est un bon indicateur du type de contenu. Mais ce n'est pas toujours significatif car l'extension est modifiable à volonté. Quoique certains logiciels exigent une extension bien déterminée sinon il n'ouvrent pas le fichier (e.g. extension .c pour certains compilateurs C).

En générale, et avant d'ouvrir un fichier, les applications en analysent le contenu pour essayer de reconnaître s'il correspond bien à ce qu'elles attendent et que le fichier est donc ouvrable.

Sous Unix, la commande file donne le type de contenu d'un fichier indépendamment du nom.

$ file *
Pile.class: compiled Java class data, version 50.0 (Java 1.6)
bonjour.doc: ... Name of Creating Application: Microsoft Macintosh Word ...
bonjour.docx: Zip archive data, at least v2.0 to extract
hello.c: ASCII c program text
index.html: HTML document text
lettre.txt: ASCII text
mail.doc: UTF-8 Unicode text
tp1.java: ASCII Java program text

Noter les deux fichiers .doc reconnus l'un comme fichier M$Word et l'autre comme simple texte Unicode. Noter que .docx, n'est pas encore reconnu, et que hello.c et lettre.txt sont reconnus comme des fichiers texte, et qu'en plus, l'un est un code source C.

La relation entre un type de fichier et le logiciel qui le traite n'est pas bijective. Un même fichier peut être ouvert par plusieurs applications (heureusement!), e.g. un texte .txt est lisible par Blocnote, Wordpad ou firefox,  et une même application peut ouvrir plusieurs types de fichier, e.g. Firefox peut lire des fichiers simple texte, HTML, source C etc. En fait quand ce n'est pas HTML, Firefox se contente d'afficher le contenu brut d'un fichier.

Mais alors, comment déterminer par quelle application un ficher doit préférablement  être ouvert? En fait, il y a un choix par défaut fixé par le système. Par exemple, les fichiers .doc sont ouvrables par M$Word. Mais on peut, en manipulant les options et les propriétés d'un fichier fixer un autre choix, par exemple OpenOffice qui est un équivalent de M$Office.

Dans la figure-11 ci-dessus, en déroulant l'option "open with", on peut sélectionner une autre application pour traiter un fichier. Dans la figure-11-bis,  on peut choisir l'application pour ouvrir un fichier hello.c

Fig 11-bis, open with

Fig-11-bis (a). Emacs est choisie par défaut

fig-11-ter, Open with

fig-11-bis (b). Autres choix possibles. Xcode par exemple.

Voir Logiciels De Base, 2e partie (logicielsDeBase-2.html).

Pour en savoir plus

[1] http://en.wikipedia.org/wiki/Operating_system#Multi-tasking_vs._single-tasking

[2] https://www.techrepublic.com/article/10-linux-file-managers-worth-checking-out/

[3] http://fr.wikipedia.org/wiki/Machine_virtuelle, http://fr.wikipedia.org/wiki/Machine_virtuelle#Virtualisation, http://en.wikipedia.org/wiki/Platform_virtualization#Concept

That's all folks



Auteur: Najib Tounsi
Date: Oct. 2013
Dernière Mise à jour: Jan 2022