<link href="/assets/64d0ba83aa42c90354ff97799bcfc0c2.css" type="text/css" rel="stylesheet"> <script src="/assets/6fd6663d5303bb7eda3ef7493fc29db6.js"></script> <script> $(document).ready(function() { anchors.options = { visible: 'hover', placement: 'right', truncate: 64 }; anchors.add('#body h2, #body h3, #body h4, #body h5'); }); </script> <script> hljs.initHighlightingOnLoad(); </script>

<h3>Console, shell, arborescence de fichiers</h3> <h4>Console (interface en ligne de commande)</h4> <p>La plupart des systèmes d'exploitation (Windows, Mac OS X, Linux, ...) permettent d'interagir avec l'ordinateur sans cliquer dans une interface graphique, mais en « lançant » des commandes comprises par le système d'exploitation, ou plus exactement par un programme particulier qu'on appelle souvent un <strong>shell</strong>. Au première abord, cela ne parait pas très convivial... Mais utiliser une console de commande présente de nombreux avantages, parmi lesquels :</p> <ul> <li>de mieux comprendre comment fonctionne le système d'exploitation ;</li> <li>de faire certaines choses plus rapidement (recherches, copies de fichier, ...) ;</li> <li>de lancer des programmes, sans s'embêter à programmer des interfaces graphiques ;</li> <li>ça fait très « geek » !</li> </ul> <h4>Système de fichiers</h4> <p>Quel que soit le système d'exploitation, les programmes et les fichiers sont stockés sur le "disque dur" de l'ordinateur (cela peut-être de la mémoire non volatile, dans votre smartphone par exemple). Le "système de fichier" permet d'associer une <strong>structure arborescente</strong> au stockage physique : les fichiers sont situés dans des <strong>répertoires</strong> (les « dossiers »), qui peuvent aussi contenir des répertoires (on parle de « sous-répertoires » d'un « répertoire »). Un répertoire unique (le <strong>répertoire racine</strong>) contient l'ensemble de l'arborescence.</p> <p>La position d'un fichier ou un répertoire dans l'arborescence est décrite par un <strong>chemin</strong> ( « path »), où les différents niveaux hiérarchiques sont séparés par des '<strong>/</strong>' : <code>/home/jpjorda/Public/document.pdf</code>, par exemple. Ici, le chemin est décrit à partir de la racine (<strong>/</strong>) de l'arborescence : on parle de <strong>chemin absolu</strong>. On peut également décrire le chemin d'un fichier à partir d'une autre position dans l'arborescence (le <strong>répertoire courant</strong>, ou <strong>répertoire de travail</strong>) : par exemple, du répertoire <code>/home/jpjorda</code>, le chemin du fichier <code>document.pdf</code> est <code>Public/document.pdf</code>. On parle alors de <strong>chemin relatif</strong>.</p> <p>Dans un chemin, il est possible de noter de façon simplifiée le répertoire courant en utilisant un point (<strong>.</strong>). Le <strong>répertoire parent</strong> du répertoire courant est noté <strong>..</strong>. Par exemple, du répertoire <code>/home/jpjorda/Public/</code>, le chemin du répertoire <code>/home</code> est <code>../..</code>.</p> <p>Les noms de fichiers sont sensible à la casse : <code>/home/jpjorda/Toto.pdf</code> est un fichier différent de <code>/home/jpjorda/toto.pdf</code>.</p> <h4>Commandes sous UNIX</h4> <h6>Noms de commande, arguments et options</h6> <p>Les « commandes » sont des programmes permettant d'agir ou d'obtenir des informations sur le système et de manipuler des fichiers et des répertoires. L'exécution des commandes dans le sheel se fait en entrant leur nom, suvi éventuellement d'<strong>options</strong> et d'<strong>arguments</strong>, puis en appuyant sur la touche « entrée ». Les différents parties de la ligne de commande sont <em>séparées par des espaces</em>.</p> <p><strong>Exemples :</strong></p> <pre><code>ls -l -a mon_repertoire</code></pre> <ul> <li> <p>nom de la commande : <strong>ls</strong></p> </li> <li> <p>options : <strong>-l -a</strong></p> </li> <li> <p>argument : __nom_repertoire__</p> </li> <li> <p>Les <strong>options</strong> commencent par <strong>un ou deux tirets</strong>, ce qui les distinguent des arguments.</p> </li> <li> <p><strong>NOTE:</strong> les programmes ne faisant pas partie du shell (comme <code>xmllint</code> ou <code>xsltproc</code>) suivent généralement des conventions identiques.</p> </li> </ul> <h6>Quelques commandes du shell UNIX</h6> <table> <thead> <tr> <th>Action</th> <th>commande UNIX</th> <th>Remarque</th> </tr> </thead> <tbody> <tr> <td>Lister les fichiers du répertoire courant</td> <td>ls</td> <td><em>list</em></td> </tr> <tr> <td>Lister les fichiers du répertoire 'toto'</td> <td>ls toto</td> </tr> <tr> <td>Lister les fichiers du répertoire 'toto' en incluant les fichiers « cachés »</td> <td>ls -a toto</td> </tr> <tr> <td>Afficher une vue de l'arborescence du répertoire courant</td> <td>tree</td> <td>sous linux, tree n'est pas une commande du shell, mais c'est un programme généralement installé par défaut</td> </tr> <tr> <td>Afficher le répertoire de travail</td> <td>pwd</td> <td><em>print working directory</em></td> </tr> <tr> <td>Changer de répertoire courant, pour se placer dans toto/</td> <td>cd toto</td> <td><em>change directory</em></td> </tr> <tr> <td>Revenir au répertoire "maison"</td> <td>cd</td> <td><em>current directory</em></td> </tr> <tr> <td>Créer un répertoire <code>toto</code></td> <td>mkdir toto</td> <td><em>make directory</em></td> </tr> <tr> <td>Copier le fichier <code>monfichier</code> dans le répertoire <code>toto</code></td> <td>cp monfichier toto/</td> </tr> <tr> <td>Dupliquer le fichier <code>monfichier</code> dans <code>monfichier2</code></td> <td>cp monfichier monfichier2</td> </tr> <tr> <td>Déplacer le fichier <code>monfichier</code> dans le répertoire <code>toto</code></td> <td>mv monfichier toto/</td> <td><em>move</em></td> </tr> <tr> <td>Renommer <code>monfichier</code> en <code>monfichier2</code></td> <td>mv monfichier monfichier2</td> </tr> <tr> <td>Créer un fichier vide nommé <code>monfichier</code></td> <td>touch monfichier</td> </tr> <tr> <td>Copier récursivement le répertoire <code>titi</code> dans le répertoire <code>toto</code></td> <td>cp -r titi toto</td> </tr> <tr> <td>Supprimer le fichier <code>monfichier</code></td> <td>rm monfichier</td> <td><em>remove</em>. Attention ! la suppression est définitive</td> </tr> <tr> <td>Supprimer le répertoire vide <code>toto</code></td> <td>rmdir toto</td> </tr> <tr> <td>Voir le contenu du fichier <code>monfichier</code> sur la console</td> <td>cat monfichier</td> </tr> <tr> <td>Voir le contenu du fichier <code>monfichier</code> sur la console de façon paginée</td> <td>more monfichier <em>ou</em> less monfichier</td> </tr> <tr> <td>Afficher l'aide sur la commande <code>ls</code></td> <td>man ls</td> </tr> </tbody> </table>