<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ULLM (Utilisateurs de Logiciels Libres du pays Martégal) &#187; shell</title>
	<atom:link href="http://www.ullm.org/category/didacticiels/shell/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.ullm.org</link>
	<description>Un site utilisant WordPress</description>
	<lastBuildDate>Mon, 19 Dec 2022 09:43:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Atelier shell : des commandes au script en passant par le terminal</title>
		<link>https://www.ullm.org/atelier-shell-commandes-et-terminal/</link>
		<comments>https://www.ullm.org/atelier-shell-commandes-et-terminal/#comments</comments>
		<pubDate>Fri, 11 Mar 2016 14:50:26 +0000</pubDate>
		<dc:creator>tuxoulipo</dc:creator>
				<category><![CDATA[Ateliers]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[Toutes catégories]]></category>

		<guid isPermaLink="false">http://www.ullm.org/?p=636</guid>
		<description><![CDATA[Avertissement Notre association, dans le cadre de ses ateliers du jeudi a proposé une découverte du shell et de ses commandes. Ce modeste document ne prétend pas rivaliser avec les cours et tutoriels complets et de grande qualité disponibles sur &#8230; <a href="https://www.ullm.org/atelier-shell-commandes-et-terminal/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h3>Avertissement</h3>
<p style="text-align: justify;">Notre association, dans le cadre de ses ateliers du jeudi a proposé une découverte du shell et de ses commandes. Ce modeste document ne prétend pas rivaliser avec les cours et tutoriels complets et de grande qualité disponibles sur internet. Il risque même de faire dresser les cheveux sur la tête des spécialistes qui se seraient égarés sur notre site. Qu&#8217;ils veuillent bien me pardonner ce frémissement capillaire ou cette révélation de leur calvitie.</p>
<p style="text-align: justify;">Je conseille à ceux qui voudraient une information plus complète de consulter les sites et documents proposés dans la liste non exhaustive ci-dessous :</p>
<ol>
<li>Tout d&#8217;abord le document proposé par <a href="https://openclassrooms.com/courses/reprenez-le-controle-a-l-aide-de-linux/la-console-ca-se-mange">OpenClassRooms </a>qui vous accompagne pas à pas dans la découverte du shell.</li>
<li><a href="http://www.tuteurs.ens.fr/unix/shell/script.html">Un aide mémoire sur la programmation shell</a> disponible aussi au format pdf</li>
<li><a href="http://abs.traduc.org/abs-fr/">Un guide avancé de la programmation du shell</a></li>
<li>Vous pouvez aussi consulter <a href="http://doc.ubuntu-fr.org/console">la documentation disponible sur le site d&#8217;ubuntu</a></li>
</ol>
<p><span id="more-636"></span></p>
<h3>Le shell c&#8217;est quoi ?</h3>
<p style="text-align: justify;">Dans le contexte informatique et plus précisément pour les systèmes d&#8217;exploitation Unix et Linux, c&#8217;est un programme qui interpréte des commandes qui sont tapées au clavier par un utilisateur.</p>
<h3>Au clavier !? Mais où voit-on la saisie ?</h3>
<p style="text-align: justify;">Dans un terminal ou une console&#8230;</p>
<div id="attachment_684" class="wp-caption aligncenter" style="width: 586px"><a href="http://www.ullm.org/wp-content/uploads/2013/04/image_000.jpg"><img class="size-full wp-image-684  " title="image_000" src="http://www.ullm.org/wp-content/uploads/2013/04/image_000.jpg" alt="Atelier shell image 000" width="576" height="296" /></a><p class="wp-caption-text">Atelier shell image 000</p></div>
<p style="text-align: justify;">Comme le montre la copie d&#8217;écran ci-dessus, dans la plupart des distributions Linux, on trouve un terminal, ou console dans le menu <strong>Accessoires</strong>, avec les bureaux gnome ou xfce, dans le menu <strong>Outils/Konsole</strong>, avec les bureaux KDE. Une fois que vous avez cliqué, sur <strong>Émulateur de terminal, ou Konsole</strong>, une fenêtre semblable à celle présentée dans la copie d&#8217;écran ci-dessous est ouverte.</p>
<div id="attachment_635" class="wp-caption aligncenter" style="width: 460px"><a href="http://www.ullm.org/wp-content/uploads/2013/04/image_002.jpg"><img class="size-full wp-image-635 " title="image_002" src="http://www.ullm.org/wp-content/uploads/2013/04/image_002.jpg" alt="Image 002 pour tutoriel sur le shell " width="450" height="311" /></a><p class="wp-caption-text">Image 002 pour tutoriel sur le shell</p></div>
<h3>Quelques commandes</h3>
<div id="attachment_894" class="wp-caption aligncenter" style="width: 512px"><a href="http://www.ullm.org/wp-content/uploads/2013/04/image_002_ter.jpg"><img class="size-full wp-image-894" title="image_002_ter" src="http://www.ullm.org/wp-content/uploads/2013/04/image_002_ter.jpg" alt="Atelier shell image 002_ter" width="502" height="79" /></a><p class="wp-caption-text">Atelier shell image 002_ter</p></div>
<p style="text-align: justify;">Regardons de plus près les copies d&#8217;écran ci-dessus et ci-dessous. Sur la la première ligne de l&#8217;image 002_ter vous voyez écrit :<br />
<strong>ecmpc@ecmadmin-dame:~$</strong>. Sur votre terminal vous devriez voir un curseur qui clignote à droite du caractère $. Il vous invite à écrire une première commande. Examinons tout d&#8217;abord chacun des termes que vous pouvez lire :</p>
<ol>
<li><strong>ecmpc</strong> est le nom de l&#8217;utilisateur suivi du séparateur@</li>
<li><strong></strong><strong>ecmadmin-dame</strong> dans l&#8217;image 002_ter est le nom de la machine suivi du caractère <strong>:</strong> qui est un séparateur.</li>
<li>Nous trouvons ensuite le signe <strong>~</strong> qui indique que le répertoire actif est celui de l&#8217;utilisateur.</li>
<li>Enfin, le signe $ indique que le terminal a été lancé par un utilisateur, sinon la ligne se terminerait par un caractère <strong>#</strong>, comme vous pouvez le constater sur l&#8217;image 002_bis ci-dessous qui est un copie d&#8217;écran prise sur un ordinateur équipé d&#8217;une distribution Mageia et donc d&#8217;un bureau KDE. Vous noterez, dans ce cas là les modifications portant sur l&#8217;utilisateur qui est <strong>root</strong>, c&#8217;est à dire l&#8217;administrateur du système et la machine est désignée par <strong>localhost</strong></li>
</ol>
<div id="attachment_669" class="wp-caption aligncenter" style="width: 447px"><a href="http://www.ullm.org/wp-content/uploads/2013/04/image_002_bis.jpg"><img class="size-full wp-image-669" title="image_002_bis" src="http://www.ullm.org/wp-content/uploads/2013/04/image_002_bis.jpg" alt="Atelier shell image 002 bis" width="437" height="65" /></a><p class="wp-caption-text">Atelier shell image 002 bis</p></div>
<h4>Commandes « informatives »</h4>
<p style="text-align: justify;">La copie d&#8217;écran ci-dessous vous montre l&#8217;exemple de l&#8217;utilisation de 3 commandes : <strong>pwd,ls et ls-l</strong>. Ces trois commandes affichent une information, sans modifier quoi que ce soit au système. Pour exécuter une commande, il suffit d&#8217;écrire le nom de cette commande et la valider en appuyant sur la touche « Entrée ». La réponse est affichée dans le terminal lui-même. Pour effacer le contenu du terminal, il suffit d&#8217;utiliser le raccourci clavier <strong>Ctrl+L</strong>. La flèche directionnelle vers le haut permet de remonter l&#8217;historique des commandes précédemment utilisées.</p>
<div id="attachment_640" class="wp-caption aligncenter" style="width: 603px"><a href="http://www.ullm.org/wp-content/uploads/2013/04/image_003.jpg"><img class="size-full wp-image-640 " title="image_003" src="http://www.ullm.org/wp-content/uploads/2013/04/image_003.jpg" alt="Atelier shel image 003" width="593" height="410" /></a><p class="wp-caption-text">Atelier shel image 003</p></div>
<ol>
<li><strong>La commande pwd</strong><br />
Cette commande signifie <strong>Print Working Directory</strong>. Cette commande affiche le nom complet du répertoire de travail. Vous pouvez le constatez sur l&#8217;image 003. La ligne de réponse suit immédiatement l&#8217;appel à la commande et affiche <strong>/home/ecmpc</strong>, c&#8217;est à dire le chemin d&#8217;accès au répertoire personnel de l&#8217;utilisateur <strong>ecmpc</strong>.</li>
<li><strong>La commande ls</strong><br />
La commande <strong>ls</strong> affiche les noms des fichiers et des répertoires contenus dans le répertoire de travail actif, dans l&#8217;image 003, il s&#8217;agit du répertoire de l&#8217;utilisateur <strong>ecmpc</strong>, nous l&#8217;avons vu. Si vous saisissez cette commande sur votre machine personnelle, vous devriez voir s&#8217;afficher la liste des répertoires (dossiers) et fichiers contenu dans votre répertoire personnel</li>
<li><strong>La commande ls -l</strong><br />
La commande <strong>ls -l</strong> est un appel à la commande <strong>ls</strong> qui utilise l&#8217;option <strong>-l</strong>. Cette option modifie le mode d&#8217;affichage. Comme vous pouvez le constater, répertoires et fichiers sont affichés sous forme d&#8217;une liste et des information supplémentaires sont apportées.</p>
<div class="cattention"><img class="flotte" style="margin-left: 6px;" title="info" src="http://www.ullm.org/wp-content/uploads/2012/04/info.png" alt="info" width="48" height="48" /><br />
<span class="fondcolor">Information</span></p>
<p style="text-align: justify;">Lorsque vous utilisez l&#8217;option d&#8217;une commande vous devez d&#8217;abord saisir le nom de la commande, <strong>ls</strong>, puis une espace, suivie d&#8217;un tiret <strong>-</strong>, lui-même suivi de la lettre symbolisant la commande ( dans notre cas l, comme &laquo;&nbsp;list&nbsp;&raquo; ) <strong>la lettre l accolée au tiret, sans espace</strong>.</p>
</div>
</li>
<li id="niveau_V4"><strong>Analyse d&#8217;une ligne affichée par la commande ls -l</strong><br />
Soit la première ligne de l&#8217;image 003 :<br />
<strong><strong>drwxrwxr-x 3 ecmpc ecmpc 4096 avril 11 09:56 atelier_shell</strong></strong></p>
<ul>
<li><strong>drwxrwxr-x</strong><br />
De gauche à droite :<br />
La lettre <strong>d</strong> indique que l&#8217;élément listé est un répertoire (directory) en anglais.<br />
Le groupe de trois lettres <strong>rwx</strong> indique que le propriétaire de ce répertoire à le droit de lire -<strong>r comme read </strong>, d&#8217;écrire &#8211; <strong>write en anglais</strong>, d&#8217;exécuter &#8211; <strong> x comme eXecute </strong>.<br />
Le groupe suivant de trois lettres <strong>rwx</strong> indique que le groupe de ce répertoire à le droit de lire &#8211; <strong>r comme read </strong>, d&#8217;écrire &#8211; <strong>write en anglais</strong>, d&#8217;exécuter &#8211; <strong> x comme eXecute </strong>.<br />
Le groupe de trois lettres <strong>r-x</strong> indique que tous ceux qui ne sont pas le propriétaire du répertoire et qui n&#8217;appartiennent pas au groupe associé à ce répertoire ont le droit de lire &#8211; <strong>r comme read </strong>, n&#8217;ont pas le droit d&#8217;écrire &#8211; <strong>un tiret &#8211; à la place de w</strong>, d&#8217;exécuter &#8211; , mais ont le droit d&#8217;exécuter<strong> x comme eXecute </strong>.</p>
<div class="cattention"><img class="flotte" style="margin-left: 6px;" title="info" src="http://www.ullm.org/wp-content/uploads/2012/04/info.png" alt="info" width="48" height="48" /><br />
<span class="fondcolor">Information</span></p>
<p style="text-align: justify; text-indent: 15px;">S&#8217;agissant d&#8217;un répertoire, cela signifie le droit d&#8217;ouvrir ce répertoire et de voir son contenu et de créer de nouveaux dossiers ou fichiers dans ce répertoire.</p>
</div>
</li>
<li><strong>Le nombre 3</strong><br />
Ce nombre indique le nombre de répertoires contenus dans le répertoire listé, y compris les deux répertoires <strong>.</strong> et <strong>..</strong> !</li>
<li><strong>ecmpc</strong><br />
L&#8217;identifiant du propriétaire de l&#8217;élément listé.</li>
<li><strong>ecmpc</strong><br />
L&#8217;identifiant du groupe associé à l&#8217;élément listé.</li>
<li><strong>4096</strong><br />
La taille en octets de l&#8217;élément listé.</p>
<div class="cattention"><img class="flotte" style="margin-left: 6px;" title="info" src="http://www.ullm.org/wp-content/uploads/2012/04/info.png" alt="info" width="48" height="48" /><br />
<span class="fondcolor">Information</span></p>
<p style="text-align: justify; text-indent: 15px;">Vous remarquerez que tous les éléments listés, sauf un, ont la même taille, 4096 octets, alors qu&#8217;ils « contiennent » un nombre différents de répertoire. Le verbe contenir est un abus ou une facilité de langage qui ne rend pas compte de l&#8217;organisation réelle du système de fichiers. En réalité chaque dossier « contient », non pas physiquement fichiers et répertoires, mais il contient des liens sur des dossiers et répertoires. Si bien que mon commentaire concernant le nombre 3 est abusif. Ce nombre désigne le nombre de liens physiques du répertoire. Un répertoire, même vide a toujours au moins deux liens physiques vers les dossiers <strong>. et ..</strong>!<br />
L&#8217;élément qui a une taille de 13 octets est un fichier et non un répertoire. Vous pouvez le savoir en constatant que la ligne d&#8217;affichage le concernant ne commence pas par un <strong>d</strong></p>
</div>
</li>
<li><strong>avril 11 09:56</strong><br />
Ce groupe indique la date de création ou pour les fichiers de mise à jour de l&#8217;élément listé. L&#8217;année ne figure pas dans ce cas là, il s&#8217;agit de l&#8217;année courante.</li>
<li><strong>atelier_shell</strong><br />
Il s&#8217;agit évidemment du nom du fichier listé.</p>
<div class="cattention"><img class="flotte" style="margin-left: 6px;" title="info" src="http://www.ullm.org/wp-content/uploads/2012/04/info.png" alt="info" width="48" height="48" /><br />
<span class="fondcolor">Information</span></p>
<p style="text-align: justify; text-indent: 15px;">Notez que les noms de fichiers et des répertoires ne sont pas affichés de la même façon.</p>
</div>
</li>
</ul>
</li>
<li><strong>La commande factor</strong>
<p style="text-aligne: justify;">Juste pour le fun, une commande qui réjouira les mathématiciens et qui apporte vraiment une information indispensable. Tapez :</p>
<p class="ccode">factor 214356684</p>
<p>Non, ce n&#8217;est pas mon patrimoine personnel en euros. Et la machine vous répondra :</p>
<p class="ccode">2214356684: 2 2 3 61 292837</p>
<p>Ce qui correspond à la décomposition en facteurs premiers du nombre 2214356684 ! L&#8217;information importante est que vous savez maintenant que 292837 est un nombre premier !</li>
<li><strong>La commande cal</strong>
<p style="text-aligne: justify;">La commande cal permet d&#8217;afficher un calendrier. Sans option, elle affiche le calendrier du mois courant. Diverses options permettent d&#8217;obtenir le calendrier d&#8217;une année entière&#8230;<br />
L&#8217;image 003.1 ci-dessous propose un florilège intéressant.</p>
<div id="attachment_1071" class="wp-caption aligncenter" style="width: 620px"><a href="http://www.ullm.org/wp-content/uploads/2013/04/image_003.1.jpg"><img class="size-full wp-image-1071" title="image_003.1" src="http://www.ullm.org/wp-content/uploads/2013/04/image_003.1.jpg" alt="Atelier shell image 003.1" width="610" height="300" /></a><p class="wp-caption-text">Atelier shell image 003.1</p></div></li>
</ol>
<h4>Commandes « modificatrices »</h4>
<p style="text-align: justify;">Le shell ne propose pas à l&#8217;utilisateur que des commandes informatives, on peut aussi utiliser des commandes qui modifient le système ou l&#8217;environnement de l&#8217;utilisateur. Nous allons en mettre en œuvre quelques unes. Mais avant de passer à quelques commandes modificatrices, examinons d&#8217;abord un commande qui ne modifie pas le système ou l&#8217;environnement mais qui modifie le répertoire de travail dans le terminal : la commande <strong>cd</strong>.</p>
<p><div id="attachment_781" class="wp-caption aligncenter" style="width: 580px"><a href="http://www.ullm.org/wp-content/uploads/2013/04/image_005.jpg"><img class="size-full wp-image-781    " title="image_005" src="http://www.ullm.org/wp-content/uploads/2013/04/image_005.jpg" alt="Atelier shell image 005" width="570" /></a><p class="wp-caption-text">Atelier shell image 005</p></div>
<p style="text-align: justify;">Je vous propose de procéder aux manipulations que vous pouvez voir dans la copie d&#8217;écran ci-dessus, image 005. Vous constaterez que j&#8217;ai, une fois de plus, changé de machine. Celle-ci porte un nom qui la localise « coin-du-bureau ». Le but de cette manipulation est de changer le répertoire de travail et de réutiliser une commande que nous venons de découvrir.</p>
<ol>
<ol>
<li>Saisissez au clavier la commande <strong>cd Documents</strong>comme sur la première ligne de l&#8217;image 005-1
<div id="attachment_898" class="wp-caption aligncenter" style="width: 398px"><a href="http://www.ullm.org/wp-content/uploads/2013/04/image_005-1.jpg"><img class="size-full wp-image-898" title="image_005-1" src="http://www.ullm.org/wp-content/uploads/2013/04/image_005-1.jpg" alt="Atelier shell image 005-1" width="388" height="109" /></a><p class="wp-caption-text">Atelier shell image 005-1</p></div>
<div class="cattention"><img class="flotte" style="margin-left: 6px;" title="info" src="http://www.ullm.org/wp-content/uploads/2012/04/info.png" alt="info" width="48" height="48" /><br />
<span class="fondcolor">Information</span></p>
<p style="text-align: justify;">Notez que les noms de fichiers et des répertoires ne sont pas affichés de la même façon. En principe toutes les distributions Linux possèdent dans le répertoire de l&#8217;utilisateur un sous répertoire nommé <strong>Documents</strong>. Soyez attentif, lors de la saisie de cette commande :</p>
<ul>
<li>Le mot cd est séparé du mot Documents par une espace.</li>
<li>Le mot Documents commence par un <strong>D</strong> majuscule et se termine par un <strong>s</strong></li>
</ul>
</div>
</li>
<li>Saisissez la commande pwd, comme vous pouvez le voir dans la deuxième ligne de l&#8217;image 005-1. Constatez par vous-même que cette commande affiche le répertoire de travail <strong>/home/<em>nom de l&#8217;utilisateur</em>/Documents</strong>. Cela signifie que si nous utilisons des commandes qui modifient les répertoires et les fichiers, cette modification interviendra, en l&#8217;absence d&#8217;autres indications, dans le répertoire de travail <strong>Documents</strong> de l&#8217;utilisateur <strong><em>nom de l&#8217;utilisateur</em></strong>, en l&#8217;occurrence dans notre exemple <strong>pierre</strong>.</li>
<li>Vous n&#8217;êtes pas obligé de procéder aux manipulations des 3 dernières lignes de l&#8217;image 005-2, elles ne sont là que pour rappeler la signification du signe <strong>~</strong>.
<div id="attachment_902" class="wp-caption aligncenter" style="width: 397px"><a href="http://www.ullm.org/wp-content/uploads/2013/04/image_005-2.jpg"><img class="size-full wp-image-902" title="image_005-2" src="http://www.ullm.org/wp-content/uploads/2013/04/image_005-2.jpg" alt="Atelier shell 005-2" width="387" height="164" /></a><p class="wp-caption-text">Atelier shell 005-2</p></div>
<p>En effet, lorsque l&#8217;on saisit la commande <strong>cd ~</strong>, le prompt est modifié et devrait ressembler à ceci :<br />
<em>nom de l&#8217;utilisateur</em>@<em>nom de la machine</em><strong>~$</strong>.<br />
Le caractère <strong>~</strong> a permis de ramener le répertoire de travail au niveau du répertoire de l&#8217;utilisateur.  Il était possible de saisir <strong>cd ..</strong>, pour obtenir le même résultat. En effet les<strong> ..</strong>, désigne le répertoire parent du répertoire actif. Le point seul,<strong> . </strong>, désigne le répertoire actif lui-même. Après avoir saisi à nouveau <strong>cd Documents</strong>, le prompt doit avoir cette forme :<br />
<em>nom de l&#8217;utilisateur</em>@<em>nom de la machine</em><strong>~/<span style="color: #0000ff;">Documents</span>$</strong></li>
</ol>
</ol>
<div style="margin-left: 50px;">
<div class="cattention"><img class="flotte" src="http://www.ullm.org/wp-content/uploads/2012/04/PanneauAttention.png" alt="" /><br />
<span class="fondcolor">Attention</span> Dans les manipulations suivantes vous utiliserez des commandes qui permettent de créer de nouveaux répertoires et fichiers, de les effacer et de les copier ou les déplacer. Soyez très attentif au répertoire de travail actif et aux répertoires dans lesquels des modifications sont apportées.</div>
</div>
<ol>
<li><strong>La commande mkdir</strong>
<p style="text-align: justify;">Sur la copie d&#8217;écran ci-dessous vous constatez que nous utilisons une nouvelle commande <strong>mkdir</strong> qui signifie <strong>Make Directory</strong>. Cette commande telle qu&#8217;elle est utilisée dans l&#8217;image 006 crée successivement trois nouveaux répertoires &#8211; <strong>source, cible, bidon</strong> &#8211; dans le répertoire de travail de l&#8217;utilisateur <strong>pierre</strong>. Le nom du nouveau répertoire est saisi, séparé par une espace après la commande.</p>
<div id="attachment_810" class="wp-caption aligncenter" style="width: 580px"><a href="http://www.ullm.org/wp-content/uploads/2013/04/image_0062.jpg"><img class="size-full wp-image-810" title="image_006" src="http://www.ullm.org/wp-content/uploads/2013/04/image_0062.jpg" alt="Atelier shell image 006" width="570" /></a><p class="wp-caption-text">Atelier shell image 006</p></div>
<p style="text-align: justify;">Après la création de ces trois nouveaux répertoires, utilisez la commande <strong>ls</strong>, suivie de deux options, l&#8217;option <strong>l</strong>, déjà utilisée, et une nouvelle option, <strong>t</strong>, qui affiche la liste des fichiers et répertoires par ordre de date et heure de création. Vous pouvez ainsi constater que les trois répertoires ont été créés dans la même minute mais que <strong>bidon</strong> l&#8217;empotre d&#8217;une courte tête !</p>
<div class="cattention"><img class="flotte" style="margin-left: 6px;" title="info" src="http://www.ullm.org/wp-content/uploads/2012/04/info.png" alt="info" width="48" height="48" /><br />
<span class="fondcolor">Information</span></p>
<p style="text-align: justify;">Lorsque vous utilisez l&#8217;option d&#8217;une commande vous devez d&#8217;abord saisir le nom de la commande, <strong>ls</strong>, puis une espace, suivie d&#8217;un tiret <strong>-</strong>, lui-même suivi de la lettre symbolisant la commande ( dans notre cas t, comme &laquo;&nbsp;time&nbsp;&raquo; ) <strong>la lettre t accolée au tiret, sans espace</strong>. De plus notez que lors de l&#8217;emploi de plusieurs commandes, celles-ci sont accolées et l&#8217;on n&#8217;utilise qu&#8217;un seul tiret.</p>
</div>
</li>
<li><strong>Redirection de commande et pipe</strong>
<p style="text-align: justify;">L&#8217;image 007-1, présente une nouvelle option de la commande <strong>ls</strong>, l&#8217;option <strong>R</strong>.</p>
<p>Cette option appliquée à la commande <strong>ls</strong>, va lister les dossiers, fichiers y compris les fichiers cachés, puisque l&#8217;option <strong>a</strong> est aussi invoquée. Si l&#8217;on utilise une machine installée depuis un certain temps, le nombre de lignes affichées peut être extrêmement important. Conséquence : on ne peut pas lire l&#8217;intégralité de l&#8217;affichage dans le terminal, même en utilisant la barre verticale de défilement.</p>
<div id="attachment_887" class="wp-caption aligncenter" style="width: 581px"><a href="http://www.ullm.org/wp-content/uploads/2013/04/image_007-1.jpg"><img class="size-full wp-image-887" title="image_007-1" src="http://www.ullm.org/wp-content/uploads/2013/04/image_007-1.jpg" alt="Atelier shell image 007-1" width="571" height="103" /></a><p class="wp-caption-text">Atelier shell image 007-1</p></div>
<p style="text-align: justify;">Sur la copie d&#8217;écran ci-dessus, j&#8217;ai voulu m&#8217;assurer du nombre de lignes qui serait affiché. Pour cela la commande <strong>ls</strong> invoquée est suivie du caractère <strong>|</strong> qui est obtenu en appuyant sur AltGr + touche marquée 6.</p>
<p style="text-align: justify;">Ce signe crée un pipe (tube) qui détourne le résultat de la commande <strong>ls</strong> de la sortie standard d&#8217;affichage et la transmet à une autre commande <strong>wc -l</strong> qui, avec l&#8217;option <strong>l</strong> utilisée, va compter chaque ligne fournie par la commande <strong>ls</strong>. Comme chaque ligne correspond à un fichier ou un répertoire, le nombre 34465 correspond au nombre de ces dossiers ou fichiers listés par la commande <strong>ls</strong>.</p>
<p style="text-align: justify;">Connaître ce nombre n&#8217;a qu&#8217;un intérêt limité. Il faudrait pouvoir faire défiler la liste de ces répertoires et fichiers et savoir dans quel répertoire ils se trouvent. Pour cela, il faut utiliser un tube avec la commande <strong>less</strong>, comme vous le voyez dans l&#8217;image 007-1. Le contenu du terminal est effacé et la liste des fichiers est affichée. Seul le début de la liste est visible comme le montre l&#8217;image 007-2, ci-dessous. Vous avez alors accès aux touches de défilement vertical, qui permettent d&#8217;avancer ligne par ligne, au touche page vers le haut ou le bas, et le raccourci clavier <strong>Ctrl+Fin(de ligne) ou début</strong>, vous permet d&#8217;accéder directement à la fin ou au début de l&#8217;affichage de la liste entière.</p>
<div id="attachment_888" class="wp-caption aligncenter" style="width: 564px"><a href="http://www.ullm.org/wp-content/uploads/2013/04/image_007-2.jpg"><img class="size-full wp-image-888" title="image_007-2" src="http://www.ullm.org/wp-content/uploads/2013/04/image_007-2.jpg" alt="Atelier shell image 007-2" width="554" height="471" /></a><p class="wp-caption-text">Atelier shell image 007-2</p></div>
<p style="text-align: justify;">On quitte cet affichage en appuyant sur la touche <strong>Q</strong> et l&#8217;on retrouve le contenu du terminal comme vous pouvez le constater ci-dessous dans l&#8217;image 007.3.</p>
<div id="attachment_889" class="wp-caption aligncenter" style="width: 580px"><a href="http://www.ullm.org/wp-content/uploads/2013/04/image_007-3.jpg"><img class="size-full wp-image-889" title="image_007-3" src="http://www.ullm.org/wp-content/uploads/2013/04/image_007-3.jpg" alt="Atelier shell image 007-3" width="570" height="297" /></a><p class="wp-caption-text">Atelier shell image 007-3</p></div>
<p style="text-align: justify;">De retour de la commande <strong>ls -alR | less</strong> tapez, comme le montre la copie d&#8217;écran ci-dessus, la commande <strong>ls -alR &gt; ./source/texte.txt</strong>, ligne 4 de l&#8217;image 007.3. Cette commande ressemble, par sa structure, à la précédente si ce n&#8217;est que le caractère <strong>|</strong> est remplacé par <strong>&gt;</strong>. Le principe de fonctionnement est le même. La sortie de la commande <strong>ls</strong> n&#8217;est pas affichée dans le terminal, rien n&#8217;est affiché mais le flux de sortie de la commande est enregistré dans un fichier nommé <strong>texte.txt</strong> qui sera placé dans le répertoire <strong>source</strong>. Notez l&#8217;usage du <strong>./</strong>. Le point indique que le répertoire <strong>source</strong> est dans le répertoire de travail courant. <strong>Le caractère &gt; permet d&#8217;opérer une redirection de la sortie de la commande ls vers un fichier</strong>. Après exécution de cette commande, vous pouvez, comme le montre l&#8217;image 007.3, enchaîner les commandes</p>
<p style="margin-left: 75px;"><strong>cd source</strong><br />
<strong>ls -l</strong></p>
<p>pour constater que le fichier <strong>texte.txt</strong> est bien présent dans le répertoire <strong>source</strong>. Constatez l&#8217;affichage de <strong>ls</strong>, la taille de ce fichier sur mon ordinateur est de <strong>2208387 octets</strong>, soit plus de 2 Mo. D&#8217;où l&#8217;intérêt des pipes et de la redirection. Pour des raisons de visibilité de l&#8217;affichage les dernières lignes de l&#8217;image 007.3, sont reproduites dans l&#8217;image 007.4, ci-dessous.</p>
<div id="attachment_915" class="wp-caption aligncenter" style="width: 580px"><a href="http://www.ullm.org/wp-content/uploads/2013/04/image_007-4.jpg"><img class="size-full wp-image-915" title="image_007-4" src="http://www.ullm.org/wp-content/uploads/2013/04/image_007-4.jpg" alt="Atelier shell image 007.4" width="570" height="107" /></a><p class="wp-caption-text">Atelier shell image 007.4</p></div>
<p style="text-align: justify;">L&#8217;image 007.4, montre que le répertoire actif est <strong>~/source</strong>. Réutilisez la commande précédente, <strong>ls -alR &gt; autre_texte.txt</strong> en nommant, cette fois, le fichier <strong>autre_texte.txt</strong>. L&#8217;enregistrement se fera dans le répertoire de travail <strong>source</strong>. Saisissez à nouveau la commande <strong>ls -l</strong>. Constatez la différence de taille entre le deux fichiers <strong>autre_texte.txt</strong> 249 octets, comparée au 2 Mo de <strong>texte.txt</strong>, différence que vous n&#8217;aurez pas de peine à expliquer.</p>
</li>
<li><strong>La commande cp</strong>
<p style="text-align: justify;">La commande <strong>cp</strong> permet de copier répertoires et fichiers et de les coller (<strong>c</strong>opy<strong>p</strong>aste) dans un autre répertoire. L&#8217;image 010 montre que l&#8217;on invoque les commandes suivantes :</p>
<p class="pneg">- <strong>cd ..</strong> qui permet d&#8217;accéder au répertoire parent du répertoire de travail.</p>
<p class="pneg">- <strong>ls -l ./source</strong> qui affiche le contenu du répertoire <strong>source</strong>. Ceci permet de vérifier que ce répertoire contient bien les deux fichiers que nous avons créés précédemment,<strong>autre_texte.txt</strong> et <strong>texte.txt</strong>.</p>
<div id="attachment_819" class="wp-caption aligncenter" style="width: 580px"><a href="http://www.ullm.org/wp-content/uploads/2013/04/image_010.jpg"><img class="size-full wp-image-819 " title="image_010" src="http://www.ullm.org/wp-content/uploads/2013/04/image_010.jpg" alt="Atelier shell image 010" width="570" /></a><p class="wp-caption-text">Atelier shell image 010</p></div>
<p style="text-align: justify;">On invoque ensuite la commande <strong>cp</strong> :</p>
<p class="ccode">cp ./source/texte.txt ./cible</p>
<p>.<br />
Cette commande est invoquée avec deux arguments, le premier, <strong>./source/texte.txt</strong>, séparé de <strong>cp</strong> par une espace représente la source de la copie, ici le fichier <strong>texte.txt</strong> dans le répertoire <strong>source</strong>, le deuxième <strong>./cible</strong>, séparé du premier par une espace, <strong>./cible</strong>représente le répertoire cible dans lequel sera copié le fichier <strong>texte.txt</strong>. Comme le nom du fichier n&#8217;a pas été précisé, le fichier copié portera le même nom.</p>
<p class="ccode">ls -l ./cible</p>
<p>permet de vérifier qu&#8217;il y a bien maintenant dans le répertoire <strong>cible</strong> un fichier nommé <strong>texte.txt</strong></p>
<div id="attachment_820" class="wp-caption aligncenter" style="width: 580px"><a href="http://www.ullm.org/wp-content/uploads/2013/04/image_011.jpg"><img class="size-full wp-image-820 " title="image_011" src="http://www.ullm.org/wp-content/uploads/2013/04/image_011.jpg" alt="Atelier shell image 011" width="570" /></a><p class="wp-caption-text">Atelier shell image 011</p></div>
<p style="text-align: justify;">Enfin, la commande <strong>cp</strong> est invoquée une dernière fois, image 011, avec le même premier argument et un deuxième argument différent</p>
<p class="ccode">cp ./source/texte.txt ./cible/texte_autre.txt</p>
<p>Cette fois on précise dans le deuxiéme argument un nouveau nom pour le fichier cible, <strong>texte_autre.txt</strong>.</p>
<p>Puis on utilise la commande <strong>ls</strong> pour vérifier que les deux répertoires source et cible contiennent bien ce que l&#8217;on attend :</p>
<p class="ccode">ls ./source</p>
<p>qui affiche <strong>autre_texte.txt</strong> et <strong>texte.txt</strong> les deux fichiers d&#8217;origine.</p>
<p class="ccode">ls ./cible</p>
<p>qui affiche <strong>texte_autre.txt</strong> et <strong>texte.txt</strong> qui sont les deux fichiers copiés dans le répertoire cible.</p>
<p>En conclusion, la commande <strong>cp</strong> conserve le fichier d&#8217;origine. Si on le copie dans un autre répertoire, ce fichier peut-être renommé. Si on le copie dans le même répertoire ce fichier  <strong>doit</strong>  être renommé. Si on tente de copier un fichier sur lui-même comme dans l&#8217;image 011.1, le logiciel vous rappelle la logique la plus élémentaire.</p>
<div id="attachment_970" class="wp-caption aligncenter" style="width: 518px"><a href="http://www.ullm.org/wp-content/uploads/2013/04/image_011_1.jpg"><img class="size-full wp-image-970" title="image_011_1" src="http://www.ullm.org/wp-content/uploads/2013/04/image_011_1.jpg" alt="Atelier shell image 011.1 : la logique la plus élémentaire" width="508" height="155" /></a><p class="wp-caption-text">Atelier shell image 011.1 : la logique la plus élémentaire</p></div></li>
<li><strong>La commande mv</strong>
<p style="text-align: justify;">Cette commande <strong>mv</strong>, au lieu de copier, déplace c&#8217;est à dire que le fichier source est supprimé. Son utilisation est illustrée par l&#8217;image 012. Dans un premier temps on utilise la commande <strong>dir</strong> qui est l&#8217;équivalent de la commande <strong>ls</strong></p>
<p class="ccode">dir ./cible</p>
<p>qui permet de vérifier le contenu du répertoire cible.</p>
<p class="ccode">dir ./source</p>
<p>qui permet de vérifier le contenu du répertoire source.<br />
Tout va bien.</p>
<p><div id="attachment_823" class="wp-caption aligncenter" style="width: 580px"><a href="http://www.ullm.org/wp-content/uploads/2013/04/image_012.jpg"><img class="size-full wp-image-823 " title="image_012" src="http://www.ullm.org/wp-content/uploads/2013/04/image_012.jpg" alt="Atelier shell image 012" width="570" /></a><p class="wp-caption-text">Atelier shell image 012</p></div>
<p style="text-align: justify;">Puis l&#8217;on invoque, image 012, la commande <strong>mv</strong> avec deux arguments séparés par une espace, le premier pour la source, le deuxième pour la cible.</p>
<p class="ccode">mv ./source/autre_texte.txt ./cible/mon-autre-texte.txt</p>
<p>puis</p>
<p class="ccode">ls ./souce</p>
<p>pour vérifier le contenu du répertoire source.</p>
<p class="ccode">ls ./cible</p>
<p>pour vérifier le contenu du répertoire cible.<br />
Tout va bien. La source ne contient plus qu&#8217;un seul fichier, <strong>texte.txt</strong>. Le répertoire cible en contient trois &#8211; <strong>texte.txt</strong> et <strong>texte_autre.txt</strong> copiés par la commande <strong>cp</strong> et <strong>mon-autre-texte.txt</strong> déplacé par la commande <strong>mv</strong> à partir du fichier <strong>autre_texte.txt</strong>, placé initialement dans le répertoire <strong>source</strong>.</li>
<li><strong>La commande rmdir</strong>
<p style="text-align: justify;">La commande <strong>rmdir</strong>, pour re<strong>m</strong>ove <strong>dir</strong>ectory, permet d&#8217;effacer un répertoire. Mais elle renverra un message d&#8217;erreur si le répertoire n&#8217;est pas vide. Ce qui peut paraître une sage précaution.</p>
<div id="attachment_824" class="wp-caption aligncenter" style="width: 580px"><a href="http://www.ullm.org/wp-content/uploads/2013/04/image_013.jpg"><img class="size-full wp-image-824 " title="image_013" src="http://www.ullm.org/wp-content/uploads/2013/04/image_013.jpg" alt="Atelier shell image 013" width="570" /></a><p class="wp-caption-text">Atelier shell image 013</p></div>
<p style="text-align: justify;">Vous pouvez constatez cela en examinant l&#8217;image 013 ci-dessus. Une première commande est invoquée :</p>
<p class="ccode">ls -t</p>
<p>Comme nous l&#8217;avons déjà vu l&#8217;option <strong>t</strong> trie la sortie de la commande <strong>ls</strong> par ordre chronologique de l&#8217;élément créé du plus récent au plus ancien. Vous voyez les trois répertoires créés récemment avec la commande <strong>mkdir</strong>, d&#8217;abord <strong>cible</strong>, le plus jeune, puis <strong>source</strong> et enfin <strong>bidon</strong> le plus vieux !</p>
<p class="ccode">rmdir source</p>
<p>Réponse :</p>
<p class="ccode">rmdir : échec de suppression de «source»: le dossier n&#8217;est pas vide.</p>
<p>puis</p>
<p class="ccode">rmdir cible</p>
<p>Même échec.</p>
<p class="ccode">rmdir bidon</p>
<p>Pas de message d&#8217;échec. Donc suppression réussie, confimée par l&#8217;affichage de la commande :</p>
<p class="ccode">ls -t</p>
<p>Le répertoire <strong>bidon</strong> n&#8217;est plus listé. CQFD</li>
</ol>
<h4>Les commandes de l&#8217;interactivité</h4>
<ol>
<li>
<p style="text-align: justify;"><strong>La commande echo</strong> permet d&#8217;afficher du «contenu» dans le terminal. Quel contenu ? Le plus intéressant est qu&#8217;elle permet d&#8217;afficher le «contenu» d&#8217;une variable. Mais qu&#8217;est-ce qu&#8217;une variable ?</p>
<p style="margin-left: 30px; text-indent: -20px;"><strong>- Notion de variable</strong> :<br />
La variable est un concept important en programmation informatique. Intuitivement, il s&#8217;agit d&#8217;un nom qui se réfère à une chose. Informatiquement, c&#8217;est une référence à une adresse mémoire.<br />
Il s&#8217;agit d&#8217;une entité créée dans l&#8217;ordinateur à laquelle on donne un nom et qu&#8217;on utilise en invoquant ce nom dans le code source du programme, capable de contenir des informations dont la valeur peut varier au cours du temps selon les manipulations que le programme lui fait subir. (<a title="Concept de variable" href="http://fr.wikibooks.org/wiki/Programmation/Variables" target="_blank"><strong>In WikiBook</strong></a> ).</p>
<p style="margin-left: 30px; text-indent: -20px;"><strong>- Types de variable</strong> :<br />
Pour faire court nous pouvons dire que le shell permet de travailler avec trois types de variables<br />
<code>Les variables définies par l'utilisateur</code><br />
<code>Les variables prédéfinies par le système</code><br />
<code>Les variables spéciales</code><br />
Dans la cadre de cette courte présentation qui se veut surtout pratique, nous parlerons d&#8217;abord brièvement des variables prédéfinies par le systèmes, appelées souvent variables d&#8217;environnement.</p>
<p style="margin-left: 30px; text-indent: -20px;"><strong>- Les variables d&#8217;environnement</strong> :<br />
Nous ne passerons pas en vue toutes les variables d&#8217;environnement. Notre objectif est d&#8217;illustrer l&#8217;affichage du contenu d&#8217;une variable en utilisant par ordre d&#8217;entrée en scène, les variables :</p>
<table>
<tbody>
<tr>
<td><code>PWD</code></td>
<td>qui contient toujours le nom du répertoire courant.</td>
</tr>
<tr>
<td><code>USER</code></td>
<td>qui contient le nom de l&#8217;utilisateur connecté.</td>
</tr>
<tr>
<td><code>SHELL</code></td>
<td>contient le nom du shell actif.</td>
</tr>
<tr>
<td><code>TERM</code></td>
<td>contient le nom du type de terminal utilisé.</td>
</tr>
<tr>
<td><code>LANG</code></td>
<td>contient les références de l&#8217;encodage linguistique par défaut du système.</td>
</tr>
<tr>
<td><code>HOSTNAME</code></td>
<td>évidemment le nom de la machine.</td>
</tr>
</tbody>
</table>
<p>Ces mots son les noms, tous écrits en lettres majuscules, des variables.<br />
Pour une information plus complète sur les variables d&#8217;environnement, consultez <a title="Le site du zéro" href="http://www.siteduzero.com/informatique/tutoriels/reprenez-le-controle-a-l-aide-de-linux/les-variables-d-environnement" target="_blank"><strong>le site du zéro</strong></a>.</p>
<p>L&#8217;image 017 ci-dessous, vous montre tout d&#8217;abord une utilisation de la commande <strong>pwd</strong> et de la commande <strong>echo</strong>. En première ligne on invoque d&#8217;abord la commande</p>
<p class="ccode">pwd</p>
<p>.<br />
Réponse :</p>
<p class="ccode">/home/pierre</p>
<p>Puis on saisit la commande</p>
<p class="ccode">echo $PWD</p>
<p>Réponse</p>
<p class="ccode" style="margin-bottom: 10px;">/home/pierre</p>
<div class="cattention"><img class="flotte" style="margin-left: 6px;" title="info" src="http://www.ullm.org/wp-content/uploads/2012/04/info.png" alt="info" width="48" height="48" /><br />
<span class="fondcolor">Information</span></p>
<p style="text-align: justify;">Notez la commande <code>echo</code> est suivi du nom de la variable <code>PWD</code> précédé du caractère <strong>$</strong>. Ce caractère indique qu&#8217;il s&#8217;agit d&#8217;une variable, ce n&#8217;est plus la commande <strong>pwd</strong> écrite en miniscule. <code>echo $PWD</code> affiche le contenu de la variable <code>$PWD</code> :<br />
<code>/home/pierre</code></p>
</div>
<div id="attachment_850" class="wp-caption aligncenter" style="width: 580px"><a href="http://www.ullm.org/wp-content/uploads/2013/04/image_017.jpg"><img class="size-full wp-image-850 " title="image_017" src="http://www.ullm.org/wp-content/uploads/2013/04/image_017.jpg" alt="Atelier shell image 017" width="570" /></a><p class="wp-caption-text">Atelier shell image 017</p></div>
<p style="text-align: justify;">Les commandes suivantes saisies dans le terminal de l&#8217;image 017 ci-dessus, sont très intéressantes. En effet, on change le répertoire courant avec la commande :</p>
<p class="ccode">cd Documents</p>
<p>puis</p>
<p class="ccode">pwd</p>
<p>suivi de la réponse</p>
<p class="ccode">/home/pierre/Documents</p>
<p>Mais ce qu&#8217;il faut observer et comprendre c&#8217;est l&#8217;invocation de la commande</p>
<p class="ccode">echo $PWD</p>
<p>&nbsp;</p>
<div class="cattention"><img class="flotte" style="margin-left: 6px;" title="info" src="http://www.ullm.org/wp-content/uploads/2012/04/info.png" alt="info" width="48" height="48" /><br />
<span class="fondcolor">Information</span></p>
<p style="text-align: justify;">Le contenu de la variable <code>$PWD</code> a changé. Il n&#8217;est plus <code>/home/pierre</code>, mais <code>/home/pierre/Documents</code>. Ces manipulations ont permis de mettre en évidence ce qu&#8217;est une variable, elle pointe vers un contenu dont la valeur peut-être modifié. Ce qui a modifié le contenu de <code>$PWD</code>, c&#8217;est l&#8217;interprétation de la commande <code>cd Documents</code> qui a affecté à la variable <code>$PWD</code> une nouvelle valeur. On parle de l&#8217;affectation d&#8217;une variable.</p>
</div>
<div id="attachment_848" class="wp-caption aligncenter" style="width: 580px"><a href="http://www.ullm.org/wp-content/uploads/2013/04/image_014.jpg"><img class="size-full wp-image-848 " title="image_014" src="http://www.ullm.org/wp-content/uploads/2013/04/image_014.jpg" alt="Atelier shell image 014" width="570" /></a><p class="wp-caption-text">Atelier shell image 014</p></div>
<p style="text-align: justify;">L&#8217;image 014 parle d&#8217;elle-même. On invoque la commande</p>
<p><code style="font-weight: bold;">echo "Bonjour, Vous êtes l'utilisateur $USER"</code></p>
<p>On trouve entre guillemet le texte à afficher ET <code>$USER</code>. Mais ce n&#8217;est pas le texte «$USER» qui est affiché mais la valeur contenu par la variable, c&#8217;est à dire l&#8217;ditenfiant de l&#8217;utilisateur connecté.</p>
<div id="attachment_847" class="wp-caption aligncenter" style="width: 580px"><a href="http://www.ullm.org/wp-content/uploads/2013/04/image_015.jpg"><img class="size-full wp-image-847 " title="image_015" src="http://www.ullm.org/wp-content/uploads/2013/04/image_015.jpg" alt="Atelier shell image 015" width="570" /></a><p class="wp-caption-text">Atelier shell image 015</p></div>
<p style="text-align: justify;">L&#8217;image 015 montre le même usage de la commande <strong>echo</strong> déjà commenté à la suite de l&#8217;image 014. On invoque la commande&amp;nbsp;</p>
<p><code style="font-weight: bold;"> echo -e "Bonjour,\n Vous êtes l'utilisateur $USER"</code></p>
<p>comme dans l&#8217;image précédente à deux petits détails près :</p>
<p class="ccode" style="font-weight: normal; margin-bottom: 10px;">Utilisation de l&#8217;option -e qui permet reconnaître les caractères spéciaux</p>
<p class="ccode" style="font-weight: normal;">Utilisation du caractère spécial <strong>\n</strong> qui contraint l&#8217;affichage à un saut de ligne avec retour en début de ligne comme vous le voyez sur l&#8217;image 015</p>
<div id="attachment_849" class="wp-caption aligncenter" style="width: 580px"><a href="http://www.ullm.org/wp-content/uploads/2013/04/image_016.jpg"><img class="size-full wp-image-849  " title="image_016" src="http://www.ullm.org/wp-content/uploads/2013/04/image_016.jpg" alt="Atelier shell image 016" width="570" height="196" /></a><p class="wp-caption-text">Atelier shell image 016</p></div>
<p style="text-align: justify;">Tout a été dit. Je vous laisse le soin d&#8217;analyser par vous-même les commandes et l&#8217;affichage de l&#8217;image 016.</p>
</li>
<li><strong>La commande read</strong>
<p style="text-align: justify;">La commande <strong>read</strong> est une commande qui permet à l&#8217;utilisateur de saisir au clavier un texte. Cette commande est évidemment souvent associée à la commande <strong>echo</strong> qui affiche un texte ou le contenu d&#8217;une variable à l&#8217;écran. L&#8217;image 018 montre une utilisation minimale de la commande <strong>read</strong></p>
<div id="attachment_853" class="wp-caption aligncenter" style="width: 580px"><a href="http://www.ullm.org/wp-content/uploads/2013/04/image_018.jpg"><img class="size-full wp-image-853 " title="image_018" src="http://www.ullm.org/wp-content/uploads/2013/04/image_018.jpg" alt="Atelier shell image 018" width="570" /></a><p class="wp-caption-text">Atelier shell image 018</p></div>
<p style="text-align: justify;">Premier temps saisie de la commande :</p>
<p class="ccode">read nom</p>
<p>Le mot nom est l&#8217;identifiant d&#8217;une variable. Deuxième ligne, le curseur clignote, l&#8217;utilisateur saisit son nom <strong>Pierre</strong>.<br />
Deuxième temps saisie de la commande :</p>
<p class="ccode">echo $nom</p>
<p>qui déclenche l&#8217;affichage du contenu de la variable <strong>$nom</strong>.</p>
<div class="cattention"><img class="flotte" style="margin-left: 6px;" title="info" src="http://www.ullm.org/wp-content/uploads/2012/04/info.png" alt="info" width="48" height="48" /><br />
<span class="fondcolor">Information</span></p>
<p style="text-align: justify;">Pour résumer dans un premier temps la commande</p>
<p class="ccode">read nom</p>
<p>correspond à une affectation de la variable <strong>nom</strong> qui n&#8217;est pas précédée du caractère <strong>$</strong>. L&#8217;affichage est celui du contenu de la variable <strong>$nom</strong>.</p>
</div>
</li>
<li><strong>Affectation d&#8217;une variable</strong>
<p style="text-align: justify;">Pour mieux percevoir ce problème de l&#8217;affectation d&#8217;une variable saisissez dans un terminal ceci :</p>
<p class="ccode" style="margin-bottom: 10px;">nom=Pierre</p>
<p class="ccode">echo $nom</p>
<p>Après la dernière commande vous devriez voir s&#8217;afficher le mot <strong>Pierre</strong> comme le montre l&#8217;image 018.1 ci-dessous.</p>
<div id="attachment_1079" class="wp-caption aligncenter" style="width: 306px"><a href="http://www.ullm.org/wp-content/uploads/2013/04/image_018.1.jpg"><img class="size-full wp-image-1079" title="image_018.1" src="http://www.ullm.org/wp-content/uploads/2013/04/image_018.1.jpg" alt="Atelier shell image 018.1" width="296" height="119" /></a><p class="wp-caption-text">Atelier shell image 018.1</p></div>
<div class="cattention"><img class="flotte" style="margin-left: 6px;" title="info" src="http://www.ullm.org/wp-content/uploads/2012/04/PanneauAttention.png" alt="info" width="48" height="48" /><br />
<span class="fondcolor">Attention</span></p>
<p style="text-align: justify;">Soyez attentif à la différence entre, d&#8217;une part la commande</p>
<p class="ccode">read nom</p>
<p style="text-align: justify;">que nous avons vu précédemment qui invitait l&#8217;utilisateur à enregistrer au clavier un mot qui serait affecté à la variable nom et, d&#8217;autre part, la commande</p>
<p class="ccode">nom=Pierre</p>
<p style="text-align: justify;">qui correspond à une affectation de la variable <strong>nom</strong> qui n&#8217;est pas précédée du caractère <strong>$</strong>. Cette affectation ne se fait pas de manière interactive, mais par programme. Le signe <strong>=</strong>, n&#8217;est pas un signe d&#8217;égalité, mais un opérateur d&#8217;affectation. Veillez à ne placer aucune espace entre le nom de la variable <strong>nom</strong> et le signe <strong>=</strong>, d&#8217;une part, et le signe <strong>=</strong>, et le mot <strong>Pierre</strong>, d&#8217;autre part.</p>
<p style="text-align: justify;">La ligne suivante&#8230;</p>
<p class="ccode">echo $nom</p>
<p style="text-align: justify;">permet,comme nous l&#8217;avons déjà vu précédemment, l&#8217;affichage du contenu de la variable <strong>$nom</strong>. le mot <strong>nom</strong> est, cette fois, précédé du signe <strong>$</strong>.</p>
</div>
<p style="text-align: justify;">L&#8217;image <strong>019</strong>ci-dessous montre une manière plus claire, pour l&#8217;utilisateur, de comprendre ce que l&#8217;on attend de lui. En effet au lieu d&#8217;écrire simplement comme nous l&#8217;avions fait précédemment&#8230;</p>
<p class="ccode">read nom</p>
<p style="text-align: justify;">&#8230;la première ligne se présente ainsi</p>
<p><code style="font-weight: bold;">read -p "Quel est ton nom ?" nom</code></p>
<p style="text-align: justify;">Nous validons et le shell affiche la question&#8230;</p>
<p class="ccode">Quel est ton nom ?</p>
<div id="attachment_854" class="wp-caption aligncenter" style="width: 580px"><a href="http://www.ullm.org/wp-content/uploads/2013/04/image_019.jpg"><img class="size-full wp-image-854 " title="image_019" src="http://www.ullm.org/wp-content/uploads/2013/04/image_019.jpg" alt="Atelier shell iamge 019" width="570" /></a><p class="wp-caption-text">Atelier shell iamge 019</p></div>
<p style="text-align: justify;">Le curseur clignote après le point d&#8217;interrogation de la ligne <strong>Quel est ton nom ?</strong>. L&#8217;utilisateur entre son nom <strong>Alain</strong>. C&#8217;est la valeur que va prendre la variable <strong>nom</strong>. Notez l&#8217;option <strong>-p</strong> qui suit la commande <strong>read</strong>. Cette option signifie <strong>print</strong>, elle indique que la phrase qui suit, placée entre guillemets (<strong>&laquo;&nbsp;Quel est ton nom ?&nbsp;&raquo;</strong> doit-être affichée dans le terminal. Les guillemets délimitent donc ce que l&#8217;on appelle une chaîne de caractères. Nous attirons enfin votre attention sur le fait que chacun des éléments de la ligne de commande est séparé des autres par une espace.</p>
<p style="text-align: justify;">Enfin nous affichons le résultat saisit par l&#8217;utilisateur avec la ligne de commande&#8230;</p>
<p><code style="font-weight: bold;">echo -e "Bonjour $nom\nBienvenue sur la machine $HOSTNAME"</code></p>
<p style="text-align: justify;">Cette ligne de commandes comprend trois éléments :</p>
<ul>
<li>La commande <strong>echo</strong> que nous avons déjà utilisée. Elle affiche le contenu de la chaîne de caractères placée entre guillemets.</li>
<li>L&#8217;option <strong>-e</strong> qui active l&#8217;interprétation du slash inversé (<strong>\</strong>). En clair cela signifie que le slash inversé ne doit pas être affiché comme un caractère, mais que le shell doit interpréter le caractère qui suit l&#8217;anti-slash comme un caractère spécial. Le caractère spécial <strong>n</strong> indique ici un retour à la ligne avec saut de ligne.</li>
<li>Enfin, troisième éléments, la chaîne de caractères. Elle est placée entre guillemets et le fait nouveau est qu&#8217;elle contient le caractère spécial <strong>\n</strong> que nous venons de signaler et deux varabiables : <strong>$nom</strong> et <strong>$HOSTNAME</strong>. Vous remarquerez, évidemment que la commande <strong>echo</strong>, n&#8217;affiche pas les mots <strong>$nom</strong> et <strong>$HOSTNAME</strong> mais le contenu de ces deux variables, c&#8217;est à dire <strong>Alain</strong> et le nom de la machine <strong>au-coin-du-bureau</strong> comme vous pouvez le constater sur l&#8217;image 019.</li>
</ul>
<p style="text-align: justify;">Depuis que nous parlons de commandes dites interactives, certains d&#8217;entre vous doivent se dire, in petto, c&#8217;est idiot ce truc, à quoi ça peut bien servir que je me demande mon propre nom ! C&#8217;est que jusqu&#8217;alors vous portiez deux casquettes, celle du programmeur et de l&#8217;utilisateur du programme. Imaginez maintenant que vous soyez devant un ordinateur et que l&#8217;on vous demande d&#8217;écrire dans un terminal, comme vous le voyez sur l&#8217;image 020 <strong>./dial.sh</strong> et de valider.</p>
<div id="attachment_855" class="wp-caption aligncenter" style="width: 580px"><a href="http://www.ullm.org/wp-content/uploads/2013/04/image_020.jpg"><img class="size-full wp-image-855 " title="image_020" src="http://www.ullm.org/wp-content/uploads/2013/04/image_020.jpg" alt="Atelier shell image 020" width="570" /></a><p class="wp-caption-text">Atelier shell image 020</p></div>
<p style="text-align: justify;">Comme vous pouvez le constater sur l&#8217;image 020, ci-dessus, cette fois vous n&#8217;avez pas écrit une ligne de commandes et pourtant la question posée et l&#8217;affichage sont les mêmes que dans l&#8217;exercice précédent. Tout simplement en écrivant <strong>./dial.sh</strong> vous avez invoqué un programme qui est un script qui contient les lignes de commande que nous avons précédemment. Et cette fois vous n&#8217;es que l&#8217;utilisateur. Ce serait intéressant de devenir le programmeur d&#8217;un script, fut-il très modeste. C&#8217;est ce que nous allons essayer.</p>
</li>
</ol>
<h3>Écriture d&#8217;un premier script</h3>
<ol>
<li><strong>Utilisation d&#8217;un éditeur</strong> :Nous allons utiliser l&#8217;éditeur <strong>gedit</strong> pour écrire ce premier script. Dans la plupart des distributions Linux, vous trouverez cet éditeur dans la rubrique <strong>Accessoires</strong> du Menu. Vous écrirez les lignes suivantes :<br />
<code style="font-weight: bold;">#! /bin/bash</code><code style="font-weight: bold;">read -p "Quel est votre nom ?" nom</code><code style="font-weight: bold;">echo -e "Bonjour $nom.\nBienvenue sur la machine $HOSTNAME.\n"</code><code style="font-weight: bold;">echo "Fin du programme."</code></p>
<p style="text-align: justify;">comme le montre l&#8217;image 021 ci-dessous</p>
<div id="attachment_1909" class="wp-caption aligncenter" style="width: 549px"><a href="http://www.ullm.org/wp-content/uploads/2016/03/image_021.jpg"><img class="size-full wp-image-1909 " title="image_021" src="http://www.ullm.org/wp-content/uploads/2016/03/image_021.jpg" alt="Image 021" width="539" height="276" /></a><p class="wp-caption-text">Image 021 de l&#39;éditeur gedit</p></div></li>
<li><strong>Enregistrement du fichier</strong> :Vous devrez enregistrer ce fichier dans le dossier <strong>source</strong> que nous avons créé précédemment. Pour cela cliquez sur le menu <strong>Fichier/Enregistrer</strong> ou sur le bouton <strong>Enregistrer</strong> et nommez votre fichier <strong>dial.sh</strong>. Votre fenêtre <strong>gedit</strong>devrait alors ressembler à ce que vous voyez sur l&#8217;image 022.
<p><div id="attachment_1910" class="wp-caption aligncenter" style="width: 607px"><a href="http://www.ullm.org/wp-content/uploads/2016/03/image_022.jpg"><img class="size-full wp-image-1910" title="image_022" src="http://www.ullm.org/wp-content/uploads/2016/03/image_022.jpg" alt="image_022" width="597" height="276" /></a><p class="wp-caption-text">lmage_022. gedit après enregistrement du fichier.</p></div>
<p>Les lignes ont été colorisées, ce qui permet de mieux distinguer les différents éléments. Deux lignes sont nouvelles. La première est</p>
<p><code style="font-weight: bold;">#! /bin/bash</code><br />
Elle commence par un <strong>#</strong>. Ce caractère sert à créer des commentaires dans un programme. Tout ce qui est après le <strong>#</strong> ne fait pas partie du programme mais est un commentaire qui peut aider le programmeur ou d&#8217;autres programmeurs à se rappeler ou comprendre ce que fait une ou plusieurs lignes du programme. Un script shell commence toujours par cette première ligne qui indique au système quel est le type de shell utilisé. Ici nous employons le <strong>bash</strong>.</p>
<p>La deuxième ligne nouvelle est la dernière ligne.</p>
<p><code style="font-weight: bold;">echo "Fin du programme."</code></p>
<p>Elle permettra d&#8217;afficher le message <strong>Fin du progamme</strong>.</li>
<li><strong>Rendre le fichier exécutable</strong> :Vous avez donc créé un script appelé <strong>dial.sh</strong>. Mais tel qu&#8217;il est ce script placé dans le répertoire <strong>source</strong> n&#8217;est pas exécutable. Pourquoi ? Parce que les <strong>droits</strong> encore appelés <strong>permissions</strong> sur ce fichier ne le permettent pas. Pour une présentation plus précise des droits sur les fichiers vous devriez consulter <a href="https://doc.ubuntu-fr.org/permissions">ce forum d&#8217;Ubuntu</a> ou revoir <a href="#niveau_V4">la première analyse</a> que nous avions faite de la commande <strong>ls -l</strong>.Revenons tout de même sur la commande <strong>ls -l</strong>. Placez-vous dans le répertoire <strong>source</strong> qui contient votre fichier <strong>dial.sh</strong>. Pour ré-information vous devriez voir dans votre terminal, quelque chose qui ressemble à ce que vous voyez dans l&#8217;image 023 ci-dessous.
<div id="attachment_1919" class="wp-caption aligncenter" style="width: 464px"><a href="http://www.ullm.org/wp-content/uploads/2016/03/image_023.jpg"><img class="size-full wp-image-1919" title="image_023" src="http://www.ullm.org/wp-content/uploads/2016/03/image_023.jpg" alt="" width="454" height="119" /></a><p class="wp-caption-text">Image_023</p></div>
<div class="cattention"><img class="flotte" style="margin-left: 6px;" title="info" src="http://www.ullm.org/wp-content/uploads/2012/04/info.png" alt="info" width="48" height="48" /><br />
<span class="fondcolor">Réinformation</span></p>
<p style="text-align: justify;">Nous avions déjà analysé une ligne semblable, <a href="#niveau_V4">voir ce paragraphe</a>. Nous revenons simplement sur le premier groupe d&#8217;informations.</p>
<p><code style="font-weight: bold;">-rw-r--r--</code></p>
<p style="text-align: justify;">Ce bloc comprend 9 caractères :</p>
<ul>
<li>Le premier indique le type de l&#8217;objet listé. Dans notre cas il s&#8217;agit d&#8217;un tiret <strong>-</strong>. Ceci nous indique que l&#8217;objet est un fichier. Si nous avion vu un <strong>d</strong>, nous aurions eu affaire à un répertoire et un <strong>l</strong> nous aurait indiqué un lien. Nous trouvons ensuite 3 groupes de 3 caractères.</li>
<li>Le premier groupe <strong>rw-</strong> représente les droits du propriétaire du fichier ici <strong>pierre</strong>. La lettre <strong>r</strong> signifie que le propriétaire du fichier a le droit de lire le fichier. La lettre <strong>w</strong> indique que le propriétaire a le droit d&#8217;écrire dans le fichier. En clair, le propriétaire du fichier a le droit de modifier le fichier. Enfin, le dernier caractère est un tiret, <strong>-</strong>. Ce dernier caractère fixe les droits d&#8217;exécution du fichier. Le <strong>-</strong> indique que le propriétaire du fichier n&#8217;est pas autorisé à exécuter le fichier.</li>
<li>Le deuxième et le troisième groupe de caractères se présentent ainsi :<code style="font-weight: bold;">r--r--</code>Ces deux groupes de caractères représentent respectivement les droits du groupe propriétaire du fichier, ici <strong>le groupe pierre</strong> et les droits de tous les autres utilisateurs qui ne sont ni <strong>pierre</strong> ni inclus dans le <strong>groupe pierre</strong>. Vous l&#8217;aurez compris ce fichier n&#8217;est pas exécutable car chacun des troisièmes caractères est un tiret <strong>-</strong>.</li>
</ul>
</div>
<p style="text-align: justify;">Donc pour rendre ce fichier exécutable, vous l&#8217;aurez compris, il suffit que le troisième caractère de chaque groupe de caractères définissant les droits d&#8217;exécution du propriétaire, du groupe et de tous les autres utilisateurs soit autre chose qu&#8217;un tiret. Dans votre terminal tapez donc la ligne de commande suivante :</p>
<p><code style="font-weight: bold;"> chmod 755 ./dial.sh</code></p>
<p style="text-align: justify;">Puis invoquez à nouveau la commande <strong>ls -l</strong><br />
. La réponse à cette commande devrait ressembler à l&#8217;image 024 ci-dessous.</p>
<div id="attachment_1922" class="wp-caption aligncenter" style="width: 464px"><a href="http://www.ullm.org/wp-content/uploads/2016/03/image_024.jpg"><img class="size-full wp-image-1922" title="image_024" src="http://www.ullm.org/wp-content/uploads/2016/03/image_024.jpg" alt="" width="454" height="193" /></a><p class="wp-caption-text">Image_024</p></div>
<p style="text-align: justify;">Cette fois vous pouvez constater chacun des troisièmes caractères dont nous parlions ne sont plus des <strong>-</strong>, mais des x comme e<strong>x</strong>écutable. Il ne reste plus qu&#8217;à vérifier que le script fonctionne bien.</p>
</li>
<li><strong>Lancer l&#8217;exécution du script</strong> :Pour lancer l&#8217;exécution du script vous pouvez , soit le faire à partir d&#8217;un terminal, soit à partir d&#8217;un gestionnaire de fichier double-cliquer sur le nom du fichier ou encore, sélectionner le fichier du script, cliquer sur le bouton droit de la souris,sélectionner <strong>Ouvrir</strong> puis cliquer sur le bouton <strong>Lancer</strong>. L&#8217;image 025 ci-dessous vous montre le processus de lancement du script dans un terminal.<br />
<a href="http://www.ullm.org/wp-content/uploads/2016/03/image_025.jpg"><img class="aligncenter size-full wp-image-1923" title="image_025" src="http://www.ullm.org/wp-content/uploads/2016/03/image_025.jpg" alt="Imahe_025 - Lancement du cript dans un terminal" width="387" height="170" /></a></p>
<div class="cattention"><img class="flotte" style="margin-left: 6px;" title="info" src="http://www.ullm.org/wp-content/uploads/2012/04/info.png" alt="info" width="48" height="48" /><br />
<span class="fondcolor">Réinformation</span></p>
<p style="text-align: justify;">Vous remarquerez dans l&#8217;image 025 ci-dessus que l&#8217;exécution du script <strong>dial.sh</strong> ne se fait pas simplement en écrivant :<br />
<code style="font-weight: bold;">dial.sh</code><br />
mais<br />
<code style="font-weight: bold;">./dial.sh</code><br />
N&#8217;oubliez pas de faire précéder le nom du script de <strong>./</strong> sinon vous recevrez comme réponse<br />
<code style="font-weight: bold;">dial.sh : commande introuvable</code><br />
comme le montre l&#8217;image 026 ci-dessous.</p>
<div id="attachment_1924" class="wp-caption aligncenter" style="width: 400px"><a href="http://www.ullm.org/wp-content/uploads/2016/03/image_026.jpg"><img class="size-full wp-image-1924" title="image_026" src="http://www.ullm.org/wp-content/uploads/2016/03/image_026.jpg" alt="" width="390" height="93" /></a><p class="wp-caption-text">Image_026</p></div>
</div>
<p>Pourquoi le script fonctionne-t-il lorsque j&#8217;écris <strong>./dial.sh</strong> et ne fonctionne-t-il pas lorsque j&#8217;écris <strong>dial.sh</strong> ? Lorsque je place les caractères <strong>./</strong> avant le nom du fichier, ces deux caractères sont interprétés comme un chemin où le système doit trouver le fichier exécutable <strong>dial.sh</strong>. Le point <strong>.</strong> signifie pour le shell, le répertoire courant, c&#8217;est à dire le répertoire nommé <strong>source</strong>, dans lequel <strong>/</strong>, il faut chercher. Comme le montre les images 027, 028,029, je peux indiquer de manières différentes le chemin pourvu qu&#8217;il conduise au bon fichier, ce dernier sera interprété.</p>
<div id="attachment_1926" class="wp-caption aligncenter" style="width: 436px"><a href="http://www.ullm.org/wp-content/uploads/2016/03/image_027.jpg"><img class="size-full wp-image-1926" title="image_027" src="http://www.ullm.org/wp-content/uploads/2016/03/image_027.jpg" alt="" width="426" height="156" /></a><p class="wp-caption-text">Image_027</p></div>
<div id="attachment_1927" class="wp-caption aligncenter" style="width: 398px"><a href="http://www.ullm.org/wp-content/uploads/2016/03/image_028.jpg"><img class="size-full wp-image-1927" title="image_028" src="http://www.ullm.org/wp-content/uploads/2016/03/image_028.jpg" alt="" width="388" height="163" /></a><p class="wp-caption-text">Image_028</p></div>
<div id="attachment_1928" class="wp-caption aligncenter" style="width: 448px"><a href="http://www.ullm.org/wp-content/uploads/2016/03/image_029.jpg"><img class="size-full wp-image-1928" title="image_029" src="http://www.ullm.org/wp-content/uploads/2016/03/image_029.jpg" alt="" width="438" height="158" /></a><p class="wp-caption-text">Image_029</p></div>
<p>Une certitude ces différents appels au script <strong>dial.sh</strong> fonctionnent. Le script est exécuté. Donc si cela fonctionne, c&#8217;est que les différents notations de chemin proposées sont justes. À vous de trouver pourquoi. En revanche si le fichier n&#8217;existe pas comme dans l&#8217;image 030 ou n&#8217;est pas exécutable, vous courez à l&#8217;échec comme le montre la copie d&#8217;écran 031.</p>
<div id="attachment_1933" class="wp-caption aligncenter" style="width: 538px"><a href="http://www.ullm.org/wp-content/uploads/2016/03/image_030.jpg"><img class="size-full wp-image-1933" title="image_030" src="http://www.ullm.org/wp-content/uploads/2016/03/image_030.jpg" alt="" width="528" height="69" /></a><p class="wp-caption-text">Image_031_Le fichier n&#39;existe pas</p></div>
<p>&nbsp;</p>
<div id="attachment_1934" class="wp-caption aligncenter" style="width: 412px"><a href="http://www.ullm.org/wp-content/uploads/2016/03/image_031.jpg"><img class="size-full wp-image-1934" title="image_031" src="http://www.ullm.org/wp-content/uploads/2016/03/image_031.jpg" alt="" width="402" height="85" /></a><p class="wp-caption-text">Image_031_Permission non accordée</p></div>
<p>Vous devriez aussi deviner pourquoi le script n&#8217;est pas interprété par le shell lorsque j&#8217;écris <strong>dial.sh</strong> et pourquoi il se passe quelque chose lorsque j&#8217;écris <strong>ls -l</strong>. Simple ? Non ? Dans le deuxième cas j&#8217;utilise une commande shell connue et le shell est programmé pour chercher à certains endroits précis ces commandes et les interpréter. Mais <strong>dial.sh</strong> ne correspond à aucune commande du shell. Il faut donc lui indiquer le chemin d&#8217;un script <strong>exécutable</strong>.</li>
</ol>
<h3>La documentation</h3>
<p>À RÉDIGER</p>
<h3>Conclusion</h3>
<p style="text-align: justify;">Cet article, comme je l&#8217;avais écrit en préambule, n&#8217;est évidemment pas un cours sur le shell. Il s&#8217;adresse essentiellement aux personnes qui organiseraient, comme l&#8217;a fait l&#8217;ULLM, des ateliers sur le shell. Les participants à ces ateliers ignoraient, pour la plupart, l&#8217;existence d&#8217;un terminal et la possibilité d&#8217;utiliser des commandes pour exécuter un certain nombre de tâches. Cet article est donc conçu comme une invitation à faire des premières gammes, des travaux pratiques comme nous avons tenté de le faire dans le cadre de nos ateliers du jeudi.</p>
<p style="text-align: justify;">La suite logique de ce document est d&#8217;aborder l&#8217;écriture de scripts shell. C&#8217;est ce que propose le document intitulé <a title="Atelier shell : création de scripts" href="http://www.ullm.org/atelier-shell-creation-de-scripts/"><strong>Atelier shell : création de scripts</strong></a>. Le sujet est déjà amorcé dans le présent article lorsquil est question des commandes <strong>echo</strong> et <strong>read</strong>. L&#8217;emploi de la commande <strong>echo</strong>, entraîne la découverte de la notion de <strong>variable</strong>. Et le lien d&#8217;interactivité entre les deux commandes, <strong>echo</strong> et <strong>read</strong> conduit nécessairement à la prise de conscience qu&#8217;il faut effacer l&#8217;écriture dans un terminal rendue absurde par le fait que c&#8217;est la même personne qui écrit l&#8217;une et l&#8217;autre commande, c&#8217;est à dire qui se demande à elle-même son propre nom. L&#8217;usage de ces commandes n&#8217;a de sens que dans un programme qui interroge toute personne qui l&#8217;active ce que nous montrons par la dernière copie d&#8217;écran 020 qui est l&#8217;affichage produit par le programme <strong>dial.sh</strong>. L&#8217;écriture des commandes dans le terminal a disparu. Et nous avons montrer comment écrire un premier script très simple <strong>dial.sh</strong> qui n&#8217;est que la retranscription de ce que nous avions écrit précédemment dans un terminal.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.ullm.org/atelier-shell-commandes-et-terminal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
