Download raw (23.2 KB)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Conforming XHTML 1.0 Strict Template</title> <link href='http://fonts.googleapis.com/css?family=Inconsolata' rel='stylesheet' type='text/css'> <!-- <link rel="stylesheet" title="Default" href="highlight/src/styles/default.css"> <link rel="alternate stylesheet" title="Dark" href="highlight/src/styles/dark.css"> <link rel="alternate stylesheet" title="FAR" href="highlight/src/styles/far.css"> <link rel="alternate stylesheet" title="IDEA" href="highlight/src/styles/idea.css"> <link rel="alternate stylesheet" title="Sunburst" href="highlight/src/styles/sunburst.css"> <link rel="alternate stylesheet" title="Zenburn" href="highlight/src/styles/zenburn.css"> <link rel="alternate stylesheet" title="Visual Studio" href="highlight/src/styles/vs.css"> <link rel="alternate stylesheet" title="Ascetic" href="highlight/src/styles/ascetic.css"> <link rel="alternate stylesheet" title="Magula" href="highlight/src/styles/magula.css"> <link rel="alternate stylesheet" title="GitHub" href="highlight/src/styles/github.css"> <link rel="alternate stylesheet" title="Brown Paper" href="highlight/src/styles/brown_paper.css"> --> <link rel="stylesheet" title="School Book" href="highlight/src/styles/school_book.css"> <!-- <link rel="alternate stylesheet" title="IR_Black" href="highlight/src/styles/ir_black.css"> --> <!-- Don't include languages as individual files in production environment. Instead use <script src="highlight.pack.js"></script> with highlight.pack.js containing all the languages you've chosen when downloading the library --> <script src="highlight/src/highlight.js"></script> <!-- <script src="highlight/src/languages/cs.js"></script> <script src="highlight/src/languages/python.js"></script> <script src="highlight/src/languages/mel.js"></script> <script src="highlight/src/languages/perl.js"></script> <script src="highlight/src/languages/axapta.js"></script> <script src="highlight/src/languages/cpp.js"></script> <script src="highlight/src/languages/sql.js"></script> <script src="highlight/src/languages/smalltalk.js"></script> <script src="highlight/src/languages/profile.js"></script> --> <script src="highlight/src/languages/bash.js"></script> <!-- <script src="highlight/src/languages/html-xml.js"></script> <script src="highlight/src/languages/renderman.js"></script> <script src="highlight/src/languages/1c.js"></script> <script src="highlight/src/languages/delphi.js"></script> <script src="highlight/src/languages/dos.js"></script> <script src="highlight/src/languages/django.js"></script> <script src="highlight/src/languages/vbscript.js"></script> <script src="highlight/src/languages/ini.js"></script> <script src="highlight/src/languages/apache.js"></script> <script src="highlight/src/languages/nginx.js"></script> <script src="highlight/src/languages/ruby.js"></script> <script src="highlight/src/languages/css.js"></script> <script src="highlight/src/languages/lisp.js"></script> <script src="highlight/src/languages/java.js"></script> <script src="highlight/src/languages/javascript.js"></script> <script src="highlight/src/languages/php.js"></script> <script src="highlight/src/languages/diff.js"></script> <script src="highlight/src/languages/avrasm.js"></script> <script src="highlight/src/languages/parser3.js"></script> <script src="highlight/src/languages/scala.js"></script> <script src="highlight/src/languages/tex.js"></script> --> <script> hljs.tabReplace = ' '; hljs.initHighlightingOnLoad(); </script> <style type="text/css" media="screen"> /* @import url("reset.css"); */ /* @font-face { font-family: "Inconsolata"; src: local("☺"), url("Inconsolata.otf") format("opentype"), } */ html, body { margin: 0; } body { font-family: helvetica; font-size: 13px; line-height: 1.308em; max-width: 80em; } div#main { width:60%; padding:1em; float: left; max-width: 60%; } div#help { width:40%; background-color: #00FFFF; padding: 1em; float: left; max-width: 40%; } div#main h1 { margin-top: 1.308em; margin-bottom: 1.308em; border-bottom: 0.2em solid black; } div#main li { list-style-type:circle; } div#help dt:before, div#help dt:after { content:"`"; } div#help dd { margin-bottom: 1.308em; } code { font-family: Inconsolata; font-size: 14px;} pre { white-space: pre-line; } </style> </head> <body> <!-- BEGIN div#body --> <div id="body"> <!-- BEGIN div#main --> <div id="main"> <p>Pour fabriquer une affiche à la Experimental JetSet il nous faut:</p> <h1>Ingrédients</h1> <ul> <li>2 textes d'un bon poids ayant des mots similaires</li> <li>Un peu d'huile de coude</li> <li>de l'Helvetica Bold, ou mieux: un équivalent libre</li> </ul> <h1>Ustensiles</h1> <ul> <li><code>comm</code></li> <li><code>tr</code></li> <li><code>cat</code></li> <li><code>sort</code></li> <li><code>uniq</code></li> <li><code>inkscape</code></li> <li><code>grep</code> (optionnel)</li> <li><code>less</code> (optionnel)</li> </ul> <h1>Étapes</h1> <ol> <li><p>Afficher le contenu du premier fichier dans le shell<br /> <code>cat fichier_1.txt</code></p></li> <li><p>Mettre tous les mots à la ligne<br /> <code>cat fichier_1.txt | tr " " "\n"</code></p></li> <li><p>Supprimer les ponctuations<br /> <code>cat fichier_1.txt | tr " " "\n" | tr [:punct:] "\n"</code></p></li> <li><p>Mettre tous les mots en bas de casse<br /> <code>cat fichier_1.txt | tr " " "\n" | tr [:punct:] "\n" | tr [:upper:] [:lower:]</code></p></li> <li><p>Classer les mots par ordre alphabetique<br /> <code>cat fichier_1.txt | tr " " "\n" | tr [:punct:] "\n" | tr [:upper:] [:lower:] | sort</code></p></li> <li><p>Supprimer les doublons<br /> <code>cat fichier_1.txt | tr " " "\n" | tr [:punct:] "\n" | tr [:upper:] [:lower:] | sort | uniq</code></p></li> <li><p>Enregistrer le resultat<br /> <code>cat fichier_1.txt | tr " " "\n" | tr [:punct:] "\n" | tr [:upper:] [:lower:] | sort | uniq > liste_mots_1.txt</code></p></li> <li><p>Répéter depuis l'étape 1 avec les deuxième fichier<br /> <code>cat fichier_2.txt | tr " " "\n" | tr [:punct:] "\n" | tr [:upper:] [:lower:] | sort | uniq > liste_mots_2.txt</code></p></li> <li><p>Comparer les mots communs des deux listes<br /> <code>comm liste_mots_1.txt liste_mots_2.txt</code><br /> Astuce: utiliser un <em>pager</em> pour analyser le résultat<br /> <code>comm liste_mots_1.txt liste_mots_2.txt | less</code></p></li> <li><p>Sélectionner un mot intéressant du résultat<br /> <code>comm liste_mots_1.txt liste_mots_2.txt | grep "mot"</code></p></li> <li><p>Utiliser la moulinette SVG pour créer le fichier Inkscape<br /> <code>comm liste_mots_1.txt liste_mots_2.txt | grep "mot" | hollande_moderne.py</code></p></li> <li><p>Enregistrer le résultat dans un fichier SVG<br /> <code>comm liste_mots_1.txt liste_mots_2.txt | grep "mot" | hollande_moderne.py > mon_poster.svg</code></p></li> </ol> <p>Voilà une manifique affiche Amstellodamoise! Il ne vous reste plus qu'à l'ouvrir dans Inkscape pour admirer le résultat et ajouter votre touche personnelle!</p> </div> <!-- END div#main --> <!-- BEGIN div#help --> <div id="help"> <h1>Coreutils</h1> <p>Coreutils est un ensemble de logiciel GNU regroupant les outils logiciels essentiels UNIX.</p> <p>En général, on injecte du contenu à traiter par une ligne de commande; ce contenu est appelé <em>standard input</em> (stdin). Une fois passé dans la moulinette, le contenu est transformé en un nouveau contenu, le <em>standard output</em> (stdout).</p> <h1>Résumé des Commandes de base</h1> <h2>Outils systèmes</h2> <dl> <dt><code>ls</code></dt> <dd>Liste les éléments d'un dossier</dd> <dt><code>cd</code></dt> <dd>Change de dossier</dd> <dt><code>mkdir</code></dt> <dd>Crée un nouveau dossier</dd> <dt><code>rm</code></dt> <dd>Supprime un fichier</dd> <dt><code>less</code></dt> <dd>Permet de naviguer dans le contenu d'un fichier</dd> <dt><code>|</code></dt> <dd>Permet de relier des programmes entre eux</dd> <dt><code>></code></dt> <dd>Permet d'écrire le résultat d'une commande dans un fichier</dd> <dt><code>>></code></dt> <dd>Permet d'écrire le résultat d'une commande à la suite d'un fichier</dd> </dl> <h2>Outils pour le texte</h2> <dl> <dt><code>cat</code></dt> <dd>Afficher le contenu d'un fichier</dd> <dt><code>comm</code></dt> <dd>Comparer deux fichiers triés ligne par ligne</dd> <dt><code>csplit</code></dt> <dd>Éclater un fichier en différentes sections</dd> <dt><code>cut</code></dt> <dd>Sélectionner une colonne dans un fichier</dd> <dt><code>fmt</code></dt> <dd>Formater un texte</dd> <dt><code>fold</code></dt> <dd>Mettre toutes les lignes d'un fichier à la même longueur</dd> <dt><code>head</code></dt> <dd>Afficher les premières lignes d'un fichier</dd> <dt><code>join</code></dt> <dd>Joindre les lignes de 2 fichiers en prenant comme critère une colonne commune</dd> <dt><code>nl</code></dt> <dd>Numéroter les lignes d'un fichier</dd> <dt><code>paste</code></dt> <dd>Afficher sur chaque ligne de la sortie standard les lignes correspondantes des fichiers passées en paramètre et séparées par des tabulations</dd> <dt><code>pr</code></dt> <dd>Convertir un fichier texte pour l'imprimer</dd> <dt><code>sort</code></dt> <dd>Trier par ordre alphabétiques les lignes d'un fichier</dd> <dt><code>split</code></dt> <dd>Éclater un fichier en plusieurs fichiers de même taille</dd> <dt><code>tail</code></dt> <dd>Afficher les dernières lignes d'un fichier</dd> <dt><code>tr</code></dt> <dd>Remplacer un caractère particulier dans un fichier (exemple remplacer tous les 'a' par des 'b')</dd> <dt><code>uniq</code></dt> <dd>Supprimer les doublons d'un fichier</dd> <dt><code>wc</code></dt> <dd>Calculer le nombre de lignes, de mots et de caractères d'un fichier</dd> </dl> <h1>Exemples d'utilisation des commandes</h1> <h2>cat</h2> <p>Afficher le contenu d'un fichier.</p> <pre><code># Lit tous les fichiers textes du dossier. $ cat *.txt | less # Combine deux fichiers textes en un seul. $ cat a.txt b.txt > ab.txt </code></pre> <h2>comm</h2> <p>Comparer deux fichiers triés ligne par ligne Par défaut, 3 colonnes sont imprimées. Celle de gauche correspond aux mots présents dans le texte 1 uniquement, celle de droite dans le texte 2 uniquement et celle du milieu aux mots présents dans les deux textes.</p> <pre><code># créer un lexique des deux textes à comparer le lexique est une liste de # tous les mots d'un texte, à la ligne, et triés alphabétiquement $ cat mon_fichier_1.txt | tr " " "\n" | sort | uniq >| lexique_fichier_1.txt $ cat mon_fichier_2.txt | tr " " "\n" | sort | uniq >| lexique_fichier_2.txt # comparer les deux fichiers $ comm lexique_fichier_1.txt lexique_fichier_2.txt > ... équilibrée. équipiers éradiquer, étaient était étions étudiants > été évitant ... </code></pre> <h2>csplit</h2> <p>éclater un fichier en différentes sections.</p> <h2>cut</h2> <p>Sélectionner une colonne dans un fichier</p> <pre><code># affiche les caractères 2 à 4 $ echo "salut" | cut -c 2-4 > alu # affiche les caractères 1 3 et 5 $ echo "salut" | cut -c 1,3,5 > slt # affiche la première phrase de chaque paragraphe $ cut -d. -f1 discours_columbia.txt > ... > Monsieur le Président de l'Université de Columbia, Mesdames et Me... > Je vais essayer d'être à la hauteur de votre Université prestigieus... > Moi je veux vous parler franchement, en ami, ce qui ne veut pas dir... > Vous appartenez à un pays qui est le premier pays du monde par sa p... > Nous sommes au XXIème siècle > Une deuxième chose dont je suis certain, c'est qu'au XXIème siècle,... > Et la troisième idée que je voudrais vous faire partager, c'est que... > ... </code></pre> <h2>fmt</h2> <p>Formater un texte.</p> <pre><code># formate les lignes d'un texte à 20/30 caractères et les centre $ fmt 20 30 discours_columbia.txt | fmt -c </code></pre> <h2>fold</h2> <p>Mettre toutes les lignes d'un fichier à la même longueur.</p> <pre><code># formate les lignes d'un texte à 20 caractères/ligne sans couper les mots $ fold -sw 20 lux_transcript.txt > Annick Lantenois, > organizator and > moderator of the > first table starts > with a quotation by > Hal Foster: > "Le design est l'un > des principaux > agents qui nous > enferme dans un > consumérisme > contemporain" > We aren't anymore > in an econony of > tangible goods but > in an economy of > knowledge, or > cognitive > capitalism. > > Quel est le > positionement des > designers comme > individus à l'égard > de ces > transformation? </code></pre> <h2>head</h2> <p>Afficher les premières lignes d'un fichier.</p> <pre><code># affiche le nom et les 2 premières lignes d'un fichier $ head -vn 2 lux_transcript.txt > ==> lux_transcript.txt <== > Annick Lantenois, organizator and moderator of the first table starts > with a quotation by Hal Foster: "Le design est l'un des principaux > agents qui nous enferme dans un consumérisme contemporain" </code></pre> <h2>join</h2> <p>Joindre les lignes de 2 fichiers en prenant comme critère une colonne commune.</p> <pre><code>$ cat fichier1 > a a1 > c c1 > b b1 $ cat fichier2 > a a2 > c c2 > b b2 $ join fichier1 fichier2 > a a1 a2 > c c1 c2 > b b1 b2 </code></pre> <h2>nl</h2> <p>Numéroter les lignes d'un fichier.</p> <h2>paste</h2> <p>Afficher sur chaque ligne de la sortie standard les lignes correspondantes des fichiers passées en paramètre et séparées par des tabulations.</p> <pre><code>$ cat num2 > 1 > 2 $ cat let3 > a > b > c $ paste num2 let3 > 1 a > 2 b > c $ paste -s num2 let3 > 1 2 > a b c </code></pre> <h2>pr</h2> <p>Convertir un fichier texte pour l'imprimer.</p> <pre><code># met un texte sur 2 colonnes séparées par ' || ' $ pr --columns=2 -J -s' || ' > Annick Lantenois, organizator and modera || - machine > tor of the first table starts with a qu || - discours > otation by Hal Foster: || - pratique > "Le design est l'un des principaux agent || - industrie > s qui nous enferme dans un consumérisme || - espace > contemporain" || > We aren't anymore in an econony of tangi || machine de letcture: Memex > ble goods but in an economy of knowledge || Influence Douglas Engelbart (invente le > , or cognitive capitalism. || PC?) souris/windows > || Texte de programmation était très littér > Quel est le positionement des designers || aire à l'époque. > comme individus à l'égard de ces transfo || Le design du new media -> Brenda Laurel > rmation? || Xanadu Ted Nelson </code></pre> <h2>sort</h2> <p>Trier par ordre alphabétiques les lignes d'un fichier.</p> <pre><code># crée un lexique d'un texte $ cat lux_transcipt.txt | tr ' ' '\n' | sort -du > 1947: > 2ème > 5 > a > à > agents > Alain > an > and > (anglophone) > Annick > anymore > aren't > au > avec > Basé > Brenda > but > by > capitalism. > Catheine > ces > c'est > (cf > citation > coeur > cognitive > collaboration > ... </code></pre> <h2>split</h2> <p>Éclater un fichier en plusieurs fichiers de même taille.</p> <pre><code># Sépare un fichier texte en fichiers de 10 lignes maximum $ split -l 10 stdin_grille_numerique.txt grille # Sépare un fichier texte en fichiers de 2ko $ split -b 2k stdin_grille_numerique.txt grille </code></pre> <h2>tail</h2> <p>Afficher les dernières lignes d'un fichier.</p> <pre><code># Affiche toutes les lignes d'un fichier dans l'ordre inverse. $ tail -r monfichier.txt </code></pre> <h2>tr</h2> <p>Remplacer un caractère particulier dans un fichier (exemple : remplacer tous les 'a' par des 'b').</p> <pre><code># Remplace toutes les lettres capitales par des minuscules. $ cat monfichier.txt | tr A-Z a-z $ cat monfichier.txt | tr "[:lower:]" "[:upper:]" # Remplace toutes les espaces par un saut de ligne. $ cat monfichier.txt | tr " " "\n" # Remplace toutes les "e" accentués par un "e" non-accentué. $ cat monfichier.txt | tr "[=e=]" "e" </code></pre> <h2>uniq</h2> <p>Supprimer les doublons d'un fichier.</p> <pre><code># Compte le nombre d'occurrences d'un mot dans un texte, classés par ordre # alphabétique $ cat monfichier.txt | tr ' ' '\n' | sort | uniq -c # Compte le nombre d'occurrences d'un mot dans un texte, classés par # nombre d'occurrences $ cat monfichier.txt | tr ' ' '\n' | sort | uniq -c | sort -nr </code></pre> <h2>wc</h2> <p>Calculer le nombre de lignes, de mots et de caractères d'un fichier.</p> <pre><code class="bash"># Compte le nombre de mots d'un fichier. $ wc -w stdin_grille_numerique.txt > 2504 stdin_grille_numerique.txt # Compte le nombre de signes d'un fichier. $ wc -c stdin_grille_numerique.txt > 16721 stdin_grille_numerique.txt # Compte le nombre total de fichiers de l'ordinateur $ find / -type f | wc -l </code></pre> <h1>Pour aller plus loin</h1> <p><a href="http://www.gnu.org/software/coreutils/">Page d'accueil Coreutils</a></p> <p><a href="http://en.flossmanuals.net/gnulinux">Floss Manuals</a></p> <p><a href="http://pzwart.wdka.hro.nl/mdma/staff/jjfcramer/command_line_cheat_sheet/">Aide mémoire des commandes shell</a></p> <p><a href="http://automatist.net/techdaze/RegularExpressionScrapbooks">Expression rationelles</a></p> </div> <!-- END div#help --> </div> <!-- END div#body --> <!-- <script type="text/javascript"> var code_blocks = document.getElementsByTagName('code'); for (var i=0; i<code_blocks.length; i++) { code_blocks[i].setAttribute('class', 'bash'); } </script> --> </body> </html>