Aller au contenu principal

La ligne de commande Windows

D'où vient DOS ?​

En 1980, Digital Research rate ce qui est considéré comme le « contrat du siècle » avec IBM. 1981 est en effet la date de sortie de l'IBM PC, un ordinateur personnel. IBM, convaincu que ce type d'ordinateur serait un échec commercial, décide d'acheter un système d'exploitation plutôt que de le développer. CP/M étant le système d'exploitation alors le plus répandu pour les micro-ordinateurs, on approche Digital Research pour rencontrer Gary Kildall.

Les pourparlers entre Kildall et les représentants d'IBM n'aboutiront pas, ce qui offrira à Bill Gates (de Microsoft) l'occasion de remporter ce marché. Kildall, pour sa part, restera stigmatisé comme celui qui a raté le contrat du siècle. Les principales pierres d'achoppement sur lesquelles on s'accorde sont l'accord de confidentialité et la question des redevances.

Constatant le mécontentement des envoyés d'IBM envers Gary Kildall et Digital Research, et voyant l'occasion de pénétrer le marché des systèmes d'exploitation, Bill Gates se ravise et propose à IBM de fournir un système d'exploitation ; il ira pour sa part le chercher chez Seattle Computer Products, qui commercialisait un système nommé 86-DOS, inspiré de CP/M.

Après la sortie de l'IBM PC, Kildall examine MS-DOS et considère que c'est un plagiat de CP/M. Il menace IBM d'un procès. IBM (qui avait probablement été dans l'ignorance de toutes ces manœuvres) trouve l'accord suivant : l'acheteur de l'IBM PC pourra choisir d'installer soit MS-DOS (sous le nom de PC-DOS), soit CP/M. Mais PC-DOS était vendu à environ 40 USalorsqueCP/Ml′eˊtaitaˋenviron240US alors que CP/M l'était à environ 240 US : le choix de l'utilisateur est vite fait.

Ce n'étaient pas les derniers déboires de Kildall dus à une jurisprudence absente ou imprécise. Il dut volontairement mutiler gravement une de ses créations, Graphical Environment Manager (GEM), parce qu'Apple, qui considérait avoir un copyright sur l'icône de la poubelle par exemple, pouvait intenter des procès sur beaucoup d'autres points.

DOS, que ce soit dans sa version IBM PC-DOS ou dans les versions pour clones MS-DOS, ne comportait pas d'interface graphique. Il était possible avec une grande facilité de créer des graphiques sous le langage BASICA (GW-BASIC pour les clones) livré avec le système, mais les commandes devaient être mémorisées par l'utilisateur et tapées à la main, ce qui rendait le système pénible d'emploi.

Par ailleurs, chaque couple application/périphérique exigeait son pilote spécifique, ce qui rendait la gestion de ces pilotes compliquée et constituait un frein à l'évolution des configurations.

La sortie de Windows 2 (1987) amena Apple à déposer, en 1988, une poursuite pour contrefaçon. Mais Apple la perdit (en appel) à cause du précédent de l'Alto (contre Digital Research). La firme de la Pomme continua tout de même de menacer Microsoft, ce qui aboutit en 1997 à un règlement à l'amiable : Microsoft investirait dans Apple (environ 150 millions de dollars en actions sans droit de vote) et s'engagerait à produire Office et Internet Explorer pour Mac. (Wikipédia)

Ce qu'on retient de cette histoire : c'est en bonne partie par accident, et non par supériorité technique, que MS-DOS (et donc l'interface en ligne de commande qu'on va apprendre aujourd'hui) est devenu le standard plutôt que CP/M.

La ligne de commande​

La ligne de commande permet une communication en mode texte entre l'utilisateur et le système d'exploitation. Elle est généralement utilisée pour les scripts, c'est-à-dire des fichiers ayant une multitude de commandes avec des tests afin d'effectuer des opérations répétitives.

Commandes de base

C'est une façon de donner un ordre à un système d'exploitation. Par exemple :

  • Liste les fichiers
  • Copie un fichier à tel emplacement
  • Déplace ce répertoire vers cet emplacement
  • Lie un élément à un autre
  • Renomme un fichier

Mais pour ce faire, nous devons respecter une syntaxe comme en français ; une façon de communiquer avec le système d'exploitation afin qu'il comprenne ce qu'il doit réaliser.

La commande help est un utilitaire vous permettant d'avoir la liste de commandes disponibles pour l'environnement.

Sous GNU/Linux, le shell Bash est le plus utilisé. Sous Windows, cmd.exe reste le moteur des scripts batch traditionnels, mais PowerShell est aujourd'hui le shell par défaut et recommandé dans l'environnement moderne (Windows Terminal).

Pourquoi doit-on apprendre les commandes ?​

Car il est beaucoup plus simple de naviguer dans un système de fichiers que d'ouvrir des fenêtres et de choisir les fichiers manuellement. De plus, sur Linux tout se fait en ligne de commande... du moins à distance.

La commande help liste les commandes disponibles ; comment en savoir plus sur une commande ?

help dir

Le but n'est pas d'apprendre la commande par cœur, mais de comprendre comment la lire.

Premièrement, en haut nous avons les diverses possibilités :

  • les crochets indiquent un argument facultatif alors que leur absence signifie un argument obligatoire.
  • le + signifie qu'il peut y avoir présence de plusieurs fois cet argument
  • le | signifie un choix entre plusieurs éléments

En ayant vu cela, on peut comprendre la différence entre :

dir
dir c:
dir c:\Users
dir /o:-D C:\Users
dir /w C:\Users
dir /a:h C:\

En ordre :

  1. Liste les fichiers dans le répertoire en cours
  2. Liste les fichiers dans le répertoire racine du disque C:
  3. Liste les fichiers dans le répertoire Users du disque C:
  4. Liste les fichiers en ordre de Date décroissante dans le répertoire Users
  5. Liste les fichiers du répertoire C:\Users en mode Wide (Large)
  6. Liste les fichiers avec l'attribut hidden activé dans le répertoire racine de C:

Relatif ou Absolu

Chemin absolu​

Un chemin absolu vers un fichier est un lien indiquant la position complète du fichier, en intégrant le disque.

C:\Windows\win.ini

Ce chemin est absolu, car il débute par la lettre du disque. Il ne peut pas avoir plusieurs fichiers pointés par ce chemin vu qu'il est absolu.

Chemin relatif​

Un chemin relatif est basé sur l'emplacement actuel de l'utilisateur dans le système de fichiers. Supposons que vous êtes dans le répertoire C:\Windows : le fichier win.ini est directement accessible dans le dossier en cours.

Si vous êtes situé dans le répertoire C:\ (la racine du disque C:) et que vous voulez référencer le fichier win.ini du répertoire C:\Windows, vous rejoindriez le fichier en utilisant le référencement suivant :

Windows\win.ini

On atteint en ordre :

  • le sous-répertoire contenant le fichier : Windows
  • et finalement le nom de fichier : win.ini

La différence étant que votre « référencement » ne commence jamais par le disque, toujours par l'emplacement actuel où vous êtes situés dans la hiérarchie.

La majorité des déplacements de façon manuelle sont réalisés au moins en partie de façon relative. La grande majorité des déplacements dans les scripts sont réalisés en absolu, car on ne peut savoir à partir de quel endroit le script sera exécuté.

Important​

  • On peut comparer les chemins relatifs à la navigation dans une ville : (tourne à droite à la troisième lumière, après tourne à gauche, au deuxième arrêt, tu es arrivé) alors que l'absolu serait d'utiliser l'adresse physique de la personne pour la retrouver.

  • Il est important de comprendre que dans les deux cas, il s'agit du même chemin. De plus, à l'examen, je peux vous demander de façon relative ou de façon absolue.

Dossier parent / actuel​

Dossier parent ..​

Si vous êtes situés dans le dossier C:\Users\10101010 et que vous souhaitez accéder au dossier parent qui est le C:\Users, comment feriez-vous ?

La commande pour changer de répertoire est la commande cd.

  • En absolu le dossier serait accessible par: cd c:\Users
  • En relatif le dossier serait accessible par: cd ..

Le .. représente le dossier parent du répertoire en cours. Il est à noter que chaque répertoire n'a qu'un seul parent, mais une multitude d'enfants, donc on ne peut pas accéder à un enfant sans le nommer.

cd c:\Users
ou
cd ..

Les deux commandes précédentes permettent d'accéder au répertoire c:\Users. Entre les deux, je préfère la deuxième, car elle est plus courte à retenir. N'oubliez pas que le prompt (la ligne d'invite où vous tapez vos commandes) vous montre votre emplacement en cours.

Dossier en cours .​

Il est utilisé lorsqu'on copie ou déplace un élément à partir du dossier en cours, ou vers celui-ci comme destination.

Supposons que vous voulez faire une copie de différents fichiers vers le répertoire C:\Backup et que vous êtes situés dans c:\Backup.

copy c:\Windows\win.ini c:\test\test.ini c:\gros.txt .

La commande précédente copie les 3 premiers arguments vers la destination : le répertoire en cours.

Soit la copie du fichier C:\test\patate.txt vers le dossier C:\test2 peut se réaliser de 4 façons distinctes :

Supposons que vous êtes positionnés dans le répertoire source : C:\test

copy C:\test\patate.txt C:\test2\ (absolu)
copy patate.txt ..\test2\ (relatif)
copy patate.txt C:\test2\
copy C:\test\patate.txt ..\test2\

Important​

  • Rien ne vous oblige à garder la même convention (d'être toujours en absolu ou d'être toujours en relatif) ; l'important c'est de comprendre la hiérarchie et le référencement pour être en mesure d'effectuer n'importe quelle copie ou déplacement nécessaire.

  • Lors d'une copie de fichier, il n'est pas obligatoire d'écrire le nom du fichier de destination, car s'il n'est pas indiqué, on garde le même nom de fichier. On peut donc utiliser cette syntaxe pour renommer le fichier de destination.

Auto-Complétion​

Les répertoires et noms de fichiers peuvent s'auto-compléter. Il est intéressant d'utiliser cette fonctionnalité, qui offre une aide ponctuelle dans la navigation. Pour ce faire, utilisez la touche Tab lorsque vous avez commencé à taper le nom du fichier ou du répertoire (2 à 3 lettres sont l'idéal).

La complétion automatique fonctionne avec Tab, mais elle peut proposer plusieurs choix (il faut parfois appuyer plusieurs fois).

Commandes courantes​

Au-delà de dir et cd, voici les commandes DOS les plus utiles au quotidien :

CommandeExempleDescription
copycopy source.txt dest.txtCopie un fichier
movemove fichier.txt C:\ArchivesDéplace (ou renomme) un fichier ou dossier
deldel fichier.txtSupprime un fichier
md (mkdir)md NouveauDossierCrée un répertoire
rd (rmdir)rd DossierVideSupprime un répertoire vide (/s pour un dossier avec contenu)
typetype fichier.txtAffiche le contenu d'un fichier texte à l'écran
clsclsEfface l'écran
treetreeAffiche l'arborescence des dossiers
renren ancien.txt nouveau.txtRenomme un fichier
attribattrib +h fichier.txtActive (+) ou désactive (-) un attribut de fichier (R, A, H, S — vus au cours 3)
xcopyxcopy C:\Source C:\Dest /S /YCopie avancée : fichiers et sous-dossiers (/S), sans confirmation (/Y)
findstrdir | findstr ".txt"Recherche un texte dans un fichier ou dans la sortie d'une autre commande
sortsort < liste.txtTrie les lignes d'un fichier ou d'une entrée

Caractères génériques​

Deux caractères ont un sens spécial dans un nom de fichier lorsqu'ils sont utilisés en ligne de commande :

  • * remplace n'importe quelle suite de caractères (même vide)
  • ? remplace exactement un caractère
dir *.txt
REM Liste tous les fichiers ayant l'extension .txt

del *.bak
REM Supprime tous les fichiers .bak du répertoire en cours

copy rapport?.docx C:\Backup
REM Copie rapport1.docx, rapport2.docx, rapportA.docx...
REM mais pas rapportfinal.docx (plus d'un caractère après "rapport")

Ces caractères fonctionnent avec la plupart des commandes qui prennent un nom de fichier en argument (dir, del, copy, move, type, ...).

Outils de diagnostic en ligne de commande​

Certains outils Windows sont d'abord des commandes (même s'il existe parfois un chemin détourné pour y accéder par une fenêtre) — contrairement au Gestionnaire de périphériques ou au Panneau de configuration, qui sont d'abord des interfaces graphiques. On les regroupe ici puisqu'ils s'utilisent avant tout en tapant une commande.

CHKDSK​

Le réparateur de disque de Windows se lance automatiquement au démarrage lorsque le système détecte que le volume n'a pas été démonté proprement (par exemple après une coupure de courant ou un arrêt brutal) — un indicateur interne du système de fichiers, le « dirty bit », en garde la trace.

La commande CHKDSK (« Check Disk ») permet de s'assurer que, sur un volume donné, le système de gestion des fichiers n'est pas endommagé (et le répare éventuellement), et que les surfaces du disque ne sont pas dégradées (bad sector) à certains endroits (et marque ces endroits pour qu'ils ne soient plus utilisés).

chkdsk C:
REM Affiche l'état du disque sans le modifier

chkdsk C: /f /r
REM /f : répare les erreurs trouvées
REM /r : localise les secteurs défectueux et récupère l'information lisible

SFC (System File Checker)​

sfc vérifie l'intégrité des fichiers système protégés de Windows et remplace automatiquement un fichier corrompu ou manquant par une copie saine mise en cache par le système.

sfc /scannow
REM Lance une vérification complète (nécessite les droits administrateur)

CHKDSK vs SFC : CHKDSK répare le contenant — le disque et la structure du système de fichiers (secteurs défectueux, intégrité du volume) — alors que SFC répare le contenu — les fichiers système de Windows eux-mêmes (DLL, exécutables). Un disque physiquement sain peut très bien avoir des fichiers Windows corrompus, et vice-versa.

DISKPART​

diskpart est l'outil en ligne de commande pour la gestion des partitions (créer, supprimer, formater, assigner une lettre de lecteur). Il est plus complet que son équivalent graphique, l'interface Gestionnaire de disque de Windows, mais s'utilise en mode interactif : on tape diskpart, puis des commandes à l'intérieur de cet environnement.

diskpart
list disk
select disk 0
list partition
create partition primary

Ce sujet, les partitions, sera couvert plus tard ; nous verrons alors comment utiliser diskpart avec le bagage nécessaire pour bien le comprendre.