{"id":2520,"date":"2012-06-26T16:44:44","date_gmt":"2012-06-26T15:44:44","guid":{"rendered":"http:\/\/www.blaess.fr\/christophe\/?p=2520"},"modified":"2012-11-30T13:42:25","modified_gmt":"2012-11-30T12:42:25","slug":"comment-effacer-involontairement-un-fichier-source","status":"publish","type":"post","link":"https:\/\/www.blaess.fr\/christophe\/2012\/06\/26\/comment-effacer-involontairement-un-fichier-source\/","title":{"rendered":"Comment effacer involontairement un fichier source&#8230;"},"content":{"rendered":"<p style=\"text-align: justify;\"><a href=\"http:\/\/www.blaess.fr\/christophe\/2012\/06\/26\/comment-effacer-involontairement-un-fichier-source\/\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-2524\" title=\"Comment se tirer une balle dans le pied\" src=\"http:\/\/www.blaess.fr\/christophe\/wp-content\/uploads\/2012\/06\/balle-dans-le-pied.jpg\" alt=\"Comment se tirer une balle dans le pied\" width=\"150\" height=\"213\" \/><\/a>Avec Bash, la compl\u00e9tion des commandes, noms de fichiers, etc. gr\u00e2ce \u00e0 la touche \u00ab\u00a0tabulation\u00a0\u00bb est tr\u00e8s pratique et je l&rsquo;utilise en permanence. En pratique mon auriculaire gauche y trouve presque sa position de repos naturel lorsque je travaille en ligne de commande. C&rsquo;est aussi un moyen tr\u00e8s efficace de perdre des fichiers involontairement. Voici ce qui vient de m&rsquo;arriver.<\/p>\n<p>\n<!--more-->\n<\/p>\n<p style=\"text-align: justify;\">Je veux v\u00e9rifier un point de d\u00e9tail pour un cours. Je vais \u00e9crire un petit programme d&rsquo;exemple. Je me cr\u00e9e un r\u00e9pertoire temporaire de travail.<\/p>\n<pre>[~]$ <strong>mkdir tmp<\/strong>\n[~]$ <strong>cd tmp\/<\/strong>\n[tmp]$<\/pre>\n<p style=\"text-align: justify;\">J&rsquo;\u00e9dite alors mon fichier source. J&rsquo;utilise g\u00e9n\u00e9ralement <code>vi<\/code> lorsqu&rsquo;il s&rsquo;agit d&rsquo;un petit programme de quelques lignes.<\/p>\n<pre>[tmp]$ <strong>vi essai.c<\/strong>\n[tmp]$<\/pre>\n<p style=\"text-align: justify;\">Puis je veux compiler mon programme en nommant l&rsquo;ex\u00e9cutable <code>essai<\/code>.<\/p>\n<pre>[tmp]$ <strong>gcc -Wall essai.c -o ess<\/strong>\nessai.c: In function \u2018main\u2019:\nessai.c:21:47: erreur: \u2018i\u2019 undeclared (first use in this function)\nessai.c:21:47: note: each undeclared identifier is reported only once for each function it appears in\n[tmp]$<\/pre>\n<p style=\"text-align: justify;\">Ah&nbsp;! J&rsquo;ai tap\u00e9 un peu vite sur la touche \u00ab\u00a0Entr\u00e9e\u00a0\u00bb et j&rsquo;ai nomm\u00e9 l&rsquo;ex\u00e9cutable <code>ess<\/code> au lieu de <code>essai<\/code>.<\/p>\n<p style=\"text-align: justify;\">C&rsquo;est alors que voulant effacer ce fichier ex\u00e9cutable au nom erron\u00e9 (avant de regarder l&rsquo;erreur de compilation) je tape successivement<\/p>\n<pre>[tmp] <strong>rm es&lt;tabulation&gt;&lt;Entr\u00e9e&gt;<\/strong><\/pre>\n<p style=\"text-align: justify;\">persuad\u00e9 que le shell allait compl\u00e9ter la ligne ainsi<\/p>\n<pre>[tmp] <strong>rm essai<\/strong><\/pre>\n<p style=\"text-align: justify;\">Mais ce que j&rsquo;aper\u00e7ois sur la ligne de commande est bien diff\u00e9rent, et se confirme lorsque je v\u00e9rifier le contenu du mon r\u00e9pertoire.<\/p>\n<pre>[tmp] <strong>ls <\/strong>\n[tmp]<\/pre>\n<h2>Explication<\/h2>\n<p style=\"text-align: justify;\">Lors de la compilation, une erreur s&rsquo;est produite (une variable non d\u00e9clar\u00e9e). Aussi le compilateur n&rsquo;a-t-il cr\u00e9\u00e9 aucun fichier ex\u00e9cutable. Et mon appui sur la touche Tabulation a compl\u00e9t\u00e9 la ligne avec le nom du seul fichier pr\u00e9sent dans le r\u00e9pertoire&nbsp;: <code>essai.c<\/code>.<\/p>\n<h2>Conclusion<\/h2>\n<p style=\"text-align: justify;\">Ce n&rsquo;est pas la premi\u00e8re fois que l&rsquo;association <code>rm<\/code> et \u00ab\u00a0Tabulation\u00a0\u00bb me joue un mauvais tour. Il me semblait avoir \u00e9crit un billet sur une autre m\u00e9saventure de ce genre, mais je ne le retrouve pas. Je l&rsquo;ajouterai prochainement.<\/p>","protected":false},"excerpt":{"rendered":"<p>Avec Bash, la compl&eacute;tion des commandes, noms de fichiers, etc. gr&acirc;ce &agrave; la touche &laquo;&nbsp;tabulation&nbsp;&raquo; est tr&egrave;s pratique et je l&rsquo;utilise en permanence. En pratique mon auriculaire gauche y trouve presque sa position de repos naturel lorsque je travaille en ligne de commande. C&rsquo;est aussi un moyen tr&egrave;s efficace de perdre des fichiers involontairement. Voici [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,13],"tags":[],"class_list":["post-2520","post","type-post","status-publish","format-standard","hentry","category-linux-2","category-shell"],"_links":{"self":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/posts\/2520","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/comments?post=2520"}],"version-history":[{"count":1,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/posts\/2520\/revisions"}],"predecessor-version":[{"id":3238,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/posts\/2520\/revisions\/3238"}],"wp:attachment":[{"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/media?parent=2520"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/categories?post=2520"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.blaess.fr\/christophe\/wp-json\/wp\/v2\/tags?post=2520"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}