--- Log opened sam jan 27 19:37:57 2007 19:38 [ Yumi`]: tjs pas pour le ftp :p 19:38 [+Zic_]: leçon n°0 d'aujourd'hui sur le shell : ne pas laissez trainer son mot de passe :) 19:38 [ keikoz]: mdr 19:38 [ LVEB]: :) 19:38 [@FiFouille]: Zic_: ahah +1 19:38 [ seb35690]: Yumi`: je m'y mets ce week-end 19:38 [ keikoz]: et surtout éviter d'avoir sur le même partout -_- 19:38 [ Phlogistique]: f 19:38 [ Yumi`]: moi aussi je pense je vais faire ca demain 19:38 [ shadok]: keikoz: y a pas a dire c'est super sudo ^^ 19:38 [ keikoz]: huhu 19:38 [@gapz]: bon allez hope, go go go ! 19:38 [ keikoz]: oué ^^ 19:38 [ seb35690]: Yumi`: on pourra comparer comme ça 19:38 [ Yumi`]: vi :) 19:38 ::: mode/#ubuntu-fr-classroom [+m] by gapz 19:39 [@gapz]: Bonsoir à toutes et tous, alors se soir je vais tenter de vous initiez à l'utilisation du Shell. Tout abord j'aimerais mettre en avant le fait que ce cours est orienté débutant, et qu'il devrait servir à construire des bases solides pour pouvoir ensuite apprendre plus facilement. 19:39 [@gapz]: Les prérequis pour ce cours sont de savoir ouvrir un terminal, et d'avoir un minimum de vocabulaire (pas grand chose rassurez vous). 19:39 [@gapz]: Pour ceux qui ont déja quelques notions, sachez que ce cours ne présentera pas quelques aspects du Shell et seront abordés dans une prochaine session. 19:40 ::: mode/#ubuntu-fr-classroom [-m] by gapz 19:40 [ LVEB]: 19:40 [ Yumi`]: 19:40 [@gapz]: bon tout le monde sait ouvrir un terminal ? 19:40 [ seb35690]: oui 19:40 [ vulcanoo]: oui 19:40 [ Belou]: oui 19:40 [ Yumi`]: oui 19:40 [ Warflo]: oui ! 19:40 [ MrZeroo00]: oui 19:40 [ Remi]: oui 19:40 [ timruff]: oui 19:40 [ dim_m]: c'est quoi le sommaire à peu près ? 19:40 [ LVEB]: oui 19:40 [ crygor]: oui oui 19:40 [ Surfoo]: affirmatif 19:40 [@gapz]: dim_m: ça arrive 19:40 [ filip_]: oui 19:40 [ Warflo]: cmd.exe ! 19:40 [ dim_m]: ok 19:40 ::: mode/#ubuntu-fr-classroom [+m] by gapz 19:41 ::: hal [n=lren@135.36.100-84.rev.gaoland.net] has joined #ubuntu-fr-classroom 19:41 [@gapz]: Le cours sera structuré de la façon suivante : Je vous parlerais en premier lieu du Shell dans ça généralité, par la suite j'introduirais des notions fondamentales telles que les entrées/sorties, les pipes, les expressions réguliéres (FiFouille se chargera de cette partie) et enfin les variables et les structures de contrôles. 19:41 [@gapz]: N'hésitez surtout pas à poser des questions ! 19:41 ::: mode/#ubuntu-fr-classroom [-m] by gapz 19:42 ::: th01 [n=ubuntu@lns-bzn-21-82-248-135-170.adsl.proxad.net] has left #ubuntu-fr-classroom [] 19:42 ::: th01 [n=ubuntu@lns-bzn-21-82-248-135-170.adsl.proxad.net] has joined #ubuntu-fr-classroom 19:42 ::: bydibule [n=bydi@86.73.51.78] has joined #ubuntu-fr-classroom 19:42 [ dim_m]: il ya des différences si on est sous zsh ? 19:42 [ vulcanoo]: bon le terminal est ouvert 19:42 [@gapz]: dim_m: non pas forcément, normalement tout passe 19:42 [ LVEB]: Pas de question ! 19:42 [@gapz]: je suis aussi sous zsh dim_m 19:42 [ seb35690]: ok pour moi 19:42 [ dim_m]: ok 19:42 ::: mode/#ubuntu-fr-classroom [+m] by gapz 19:42 [@FiFouille]: dim_m: si t'en as, dis nous quoi, on verra ;) 19:43 [@gapz]: Bon déja la question qu'on pourrait se poser : 19:43 [@gapz]: Pourquoi s'initier à l'utilisation du Shell ? 19:43 [@gapz]: Le Shell vous donne accès à toute une gamme d'outil très performant qui vous permetterons d'effectuer des tâches que vous n'auriez pu auparavant mais aussi de les automatiser, et cela d'une manière assez simple. 19:44 [@gapz]: Bien que de nombreuses interfaces graphiques soient disponibles pour GNU/Linux (et autres dérivés d'Unix), le shell reste un très bon outil car légé (donc assez rapide), efficace, accessible... 19:44 [@gapz]: Bien sûr il y a beaucoup d'autre aspect très important, mais plus spécifiques aux langages, et qui donc demandent certaines connaissances en programmation, c'est pour cela que je n'introduirai pas ces aspects ici. 19:44 [@gapz]: ces notions seront d'ailleurs abordées dans une prochaines session 19:44 ::: mode/#ubuntu-fr-classroom [-m] by gapz 19:44 * LVEB ! 19:44 [ LVEB]: oops 19:44 [@gapz]: désolé pour les fautes au passage 19:45 [+skateinmars]: ^^' 19:45 [+racoon97]: :D 19:45 [ LVEB]: :) 19:45 [ seb35690]: j'ai une question 19:45 [@gapz]: bon tout le monde est convaincu qu'il faut apprendre à utiliser le shell ? 19:45 [@gapz]: seb35690: oui ? 19:45 [+Zic_]: et de plus, un shell donne accès à toutes les ressources du système GNU/Linux, il est tellement puissant, qu'il est impossible (mais ça se réalise avec le progrès de Linux) 19:45 [ vulcanoo]: oui 19:45 [ LVEB]: oui!!!!! 19:45 [+Zic_]: de faire autant de GUI que de commande shell 19:45 [ timruff]: oui ca m'a l'air super 19:45 [+Zic_]: (pardon pour la phrase coupée :>) 19:45 [ seb35690]: le shell, c'est ce qu'on a quand on n'a pas l'interface graphique ? 19:46 [ keikoz]: il faudrait peut-être expliquer la différence entre un terminal/shell :) 19:46 [ keikoz]: ah bah voil) 19:46 [+Zic_]: seb35690: oui, c'est un peu ça 19:46 [ timruff]: un truc de geek 19:46 [ Belou]: question : on doit prendre bash ? zsh ? sh ? rab ? 19:46 [@gapz]: seb35690: pas forcément 19:46 [+skateinmars]: Belou, bash de preference 19:46 [@gapz]: Belou: bash 19:46 [@FiFouille]: o/ moi 19:46 [@gapz]: 'fin c'est pas obligatoire mais certain truc passeront pas sous dash je pense 19:46 [+Zic_]: oui car le /bin/sh de Ubuntu 19:46 [ dim_m]: zsh est très bien 19:46 [ vulcanoo]: comment savoir le type de shell? 19:46 [@gapz]: en tout cas sous bash et zsh ça passe parfaitement 19:46 [+Zic_]: est un raccourcis vers dash en fait 19:46 [@gapz]: vulcanoo: echo $SHELL 19:46 [ Warflo]: de toutes façons, yen a beaucoup qui utilisent un gnu/linux et qui non jamais touché à un terminal ? 19:46 [ seb35690]: L'émulateur de terminal sous Gnome est un shell ou pas ? 19:46 [@gapz]: bref 19:46 [+Zic_]: c'est laid, mais c'est comme ça 19:47 ::: mode/#ubuntu-fr-classroom [+m] by gapz 19:47 [+Zic_]: seb35690: oui 19:47 [+skateinmars]: seb35690, c'est un terminal ca 19:47 [@gapz]: Qu'est-ce que le Shell ? 19:47 [@gapz]: skateinmars: je vais expliquer ce qu'il ne faut pas confondre ;-) 19:47 [@FiFouille]: à l'origine de Unix t'avais des terminaux, basiquement un bête écran branché sur une grosse machine, là dedans tu lançais tes programmes qui s'affichaient, et le shell en fait partie 19:47 [@gapz]: C'est (dans une généralité), une interface entre l'utilisateur et le système d'exploitation. L'utilisateur rentrera des commandes, qui ensuite seront interprétées par le Shell, et celui ci retournera un certain résultat. 19:47 [@gapz]: Pour éviter toute confusion, je vais vous expliquer quelques termes : quand on parle du Shell on fait souvent référence à l'interpréteur de commande, auparavant celui-ci s'appelait sh (contraction de shell), et qui à donné ensuite à tout un éventail d'interpréteur tel que bash, csh, zsh, ksh...à ne pas confondre avec un émulateur de terminal comme xterm, eterm, gnome-terminal... 19:48 ::: mode/#ubuntu-fr-classroom [-m] by gapz 19:48 [@gapz]: tout le monde voit à peut près ? 19:48 [ Warflo]: oui ! 19:48 [+gpocentek]: oui :) 19:48 [ seb35690]: ok donc l'équivalent sous ms-dos est command ? 19:48 [+Zic_]: différence entre TTY/gnome-terminal :) 19:48 [ LVEB]: oui, oui 19:48 [ vulcanoo]: oui sauf que les caracteres accentues sont degueu 19:48 [@gapz]: seb35690: non pas tout à fait 19:48 [ shadok]: vulcanoo: sauf que c'est de ta faute :D 19:49 [+Zic_]: vulcanoo: UTF-8 19:49 [@gapz]: sous win y a pas vraiment d'équivalent, enfin bon 19:49 [ vulcanoo]: Zic_: ok 19:49 [ seb35690]: désolé je cherche des équivalences par rapport à ce que je connais :( 19:49 [ vulcanoo]: ben je suis en utf8 19:49 [@FiFouille] gapz: oué si, y'a leur powershell qui essaie de s'en rapprocher (mais on trollera pas la dessus ;) ) 19:49 [@gapz]: oui c'est sur :) 19:49 ::: mode/#ubuntu-fr-classroom [+m] by gapz 19:49 [@gapz]: Comment utiliser le Shell ? 19:50 [@gapz]: bon je le rappel au cas où ;-) 19:50 [@gapz]: Il vous faut un émulateur de terminal (gnome-terminal sous gnome, xterm, aterm...), pour pouvoir taper les commandes. Sachez que toutes les commandes peuvent être regroupées dans un fichier pour former un script, nous aborderons cela un peu plus loin dans le cours. Pour le moment la plupart des exemples seront directement à taper dans le terminal. 19:50 ::: illovae [n=illovae@uni14-1-82-233-221-131.fbx.proxad.net] has joined #ubuntu-fr-classroom 19:50 [@gapz]: vous n'aurez donc pour le moment besoin que d'un émulateur de terminal 19:50 ::: mode/#ubuntu-fr-classroom [-m] by gapz 19:50 [+Zic_]: (gapz: tu pouras leur "raconter" rapidement la différence entre émulateur de terminal/TTY ? car ça en perturbe beaucoup) 19:51 [+Zic_]: pourrais* 19:51 [ LVEB]: genre konsole aussi 19:51 [+Zic_]: gnome-erminal/konsole => Gnome/KDE 19:51 [ illovae]: (bonsoir) 19:51 [+Zic_]: +t 19:52 [@gapz]: l'émulateur de terminal c'est en quelque sorte l'outil graphique qui vous permet d'avoir accès à votre shell 19:52 [ seb35690]: ok 19:52 [+Zic_]: en réalité, les vrais terminaux sont accessibles via la combinaison de touche CTRL + ALT + Fx 19:52 [@gapz]: le tty, c'est le terminal en mode caractère en gros :] 19:52 [+Zic_]: ou X est un chiffre entre 1 et 7 19:52 [+Zic_]: le 7 est la session graphique 19:53 [+Zic_]: un émulateur permet d'afficher une sorte de TTY pour simplifier, dans votre session graphique 19:53 [+Zic_]: histoire que ça soit beau :) 19:53 [@gapz]: tty pour TéléTYpe 19:53 [ LVEB]: ca marche pas ctrl alt 7 19:53 [+Zic_]: et facile à spliter avec vos autres applications graphiques, comme pour l'IRC :) 19:53 [+Zic_]: LVEB: ctrl alt F7 19:53 [ dim_m]: LVEB: F7 19:53 [ Yumi`]: et alt F1 ? c'est pareil que ctrl alt Fx 19:53 [@gapz]: l'émulateur simule le fonctionnement d'un terminal quoi 19:53 [ LVEB]: ah, avidament 19:54 [+Zic_]: LVEB: mais F7 == ta session graphique actuelle :) 19:54 ::: mode/#ubuntu-fr-classroom [+m] by gapz 19:54 ::: crygor [n=crygor@i03v-87-89-79-202.d4.club-internet.fr] has left #ubuntu-fr-classroom [] 19:54 [@gapz]: Les notions fondamentales 19:54 [@gapz]: La première notion que je vais introduire est celle des entrées/sorties, qui est indispensable pour continuer. 19:54 [@gapz]: En général un programme dispose d'une entrée standard, une sortie standard, et une sortie d'erreur standard, aussi connu sous le nom de stdin, stdout, stderr. Globalement stdin représente le clavier, stdout l'écran et stderr la sortie des messages d'erreur vers l'écran. Bien entendu ce n'est pas exactement cela, c'est simplement pour illustrer. 19:55 [@gapz]: Pour "simplifier", ils sont chacun associés à un numéro (appelé descripteur de fichier) : stdin 0, stdout 1, stderr 2, cela permettera ensuite de faire ce que l'ont appel des redirections. 19:55 [@gapz]: Par exemple, si vous un programme du nom de prog est lancé et qu'il est censé faire l'addition de 1+1, le résultat sera retourné sur la sortie standard, et si jamais il y a une quelconque erreur elle sera retournée sur la sortie d'erreur standard. 19:55 [@gapz]: si vous avez* 19:55 [@gapz]: qui est* 19:55 [@gapz]: fioute j'ai oublié des mots ^^ 19:55 [+Zic_]: (pauvre gapz, il n'est plus ce qu'il était) 19:55 [+Zic_]: :> 19:55 ::: pascal_ [n=Pascal@62.253.247.69] has joined #ubuntu-fr-classroom 19:55 [@gapz]: Si par exemple vous tapez "lfdfdfj" dans le terminal, "bash: lfdfdfj: command not found" sera retourné sur stderr. Par contre, si vous tapez ls, le résultat sera retourné sur stdout. Pour l'utilisateur cela se passe de manière totalement transparente. 19:56 ::: mode/#ubuntu-fr-classroom [-m] by gapz 19:56 ::: vulcanoo [n=clement@AClermont-Ferrand-256-1-14-219.w86-209.abo.wanadoo.fr] has left #ubuntu-fr-classroom ["Kopete 0.12.3 : http://kopete.kde.org"] 19:56 [@gapz]: ça parait obscur pour le moment mais vous verrez des exemples parlant juste après 19:56 [ Warflo]: on peut rediriger la sortie standart avec un ">" 19:57 [+skateinmars]: un poil trop rapide gapz ;) 19:57 [+Zic_]: Warflo: chuut, gache pas la surprise 19:57 [ LVEB]: :) 19:57 [+Zic_]: Warflo: c'est pour après :> 19:57 [ Warflo]: (mince) 19:57 [@gapz]: tu verras Warflo j'explique tout ;-) 19:57 [@gapz]: skateinmars: je ralentis alors :) 19:57 ::: Warflo [i=Warflo@AMarseille-256-1-5-231.w86-219.abo.wanadoo.fr] has left #ubuntu-fr-classroom [] 19:57 ::: tinram [n=tinram@ADijon-151-1-79-162.w83-196.abo.wanadoo.fr] has joined #ubuntu-fr-classroom 19:57 [+Zic_]: arf :/ 19:57 [@FiFouille]: y'a des gens qui suivent pas ? faut pas avoir peur de hurler 19:58 [ animimotus]: (yakuake et tilda, à testez) 19:58 [ keikoz]: ARGGGGGGGGGGGGGGGGGGGG 19:58 [ seb35690]: jusque-là ça va 19:58 [+racoon97]: J'AI RIEN COMPRIS ! 19:58 [+Zic_]: tilda, j'ai pas compris comment le rendre beau tient 19:58 [@gapz]: :] 19:58 [ Remi]: on verra DISPLAY:=x ? 19:58 * racoon97 sort un instant :) 19:58 [@FiFouille]: Zic_: oui mais on s'en fiche 19:58 [@gapz]: Remi: non 19:58 [ animimotus]: Zic_: tilda est moche de naissance :) 19:58 [ Yumi`]: animimotus, yakuke c'est genial :) 19:58 [ Remi]: ok 19:58 ::: mode/#ubuntu-fr-classroom [+m] by gapz 19:58 [@FiFouille]: Remi: c'es pas forcément au menu, mais on peut 19:58 [@gapz]: Pour pouvoir exploiter les résultats, nous allons maintenant voir les redirections. 19:58 [+Zic_]: yakuake, c'est pas un truc KDE ? 19:58 [+Zic_]: (taisons-nous) 19:58 [@gapz]: Les redirections permettent simplement (comme le nom l'indique), de rediriger un des trois descripteurs de fichier vu plus haut vers à peu près tout ce que vous voulez (c'est à dire dans un fichier). Les opérateurs utilisés sont ">", ">>", "<", "<<". 19:59 [@gapz]: Par exemple, si vous voulez rediriger le résultat de ls dans un fichier portant le nom de test il vous suffira de faire : "ls > test". Si vous voulez rediriger la stderr de la commande "lfdfdfj" il faudra faire : "ls 2> test". 20:00 [@gapz]: Comme vous l'aurez sans doute remarqué dans le premier exemple, on n'indique pas explicitement "1>" car par défaut le descripteur de fichier redirigé est stdout (dans le cas de l'opérateur ">"). Quand vous utiliserez ">" le contenu du fichier vers lequel stdout est redirigé sera écrasé, et si le fichier n'existe pas il sera créé. 20:00 [@gapz]: C'est pour cela qu'existe ">>", qui permet de rediriger stdout dans le fichier spécifié mais sans en écraser son contenu.Par exemple : "ls >> test", si test n'existe pas il sera créé, si il existe le résultat sera ajouté à son contenu. De la même manière vous pouvez donc rediriger stderr : "lfdfdfj 2>> test". 20:00 ::: mode/#ubuntu-fr-classroom [-m] by gapz 20:00 [ illovae]: c'est quoi le 2 ? 20:01 [@gapz]: stderr 20:01 [ Remi]: oui ? 20:01 [ LVEB]: erreure 20:01 [@gapz]: s'il y a des questions... 20:01 [ illovae]: ah okay donc redige le 2 vers.. on peut user de 0 ou de 1 aussi ? ou c'est juste avec deux ? 20:01 [ illovae]: 2* 20:01 [ animimotus]: touch prout.txt && echo "ça sent" >prout.txt && echo "ouaih du vent" >>prout.txt && cat prout.txt && rm prout.txt 20:01 [+Zic_]: 0 = stdin 20:01 [ keikoz]: tu peux tout rediriger 20:01 [ seb35690]: et pour les opérateurs < et << 20:01 [ seb35690]: ? 20:01 [ LVEB]: avec les trois je crois 20:01 [+Zic_]: 1 = stdout, et 2 = stderr 20:01 [+Zic_]: comme l'a dit gapz :) 20:01 [@gapz]: seb35690: ça arrive 20:01 ::: dim_m_ [n=dimm@ALille-154-1-56-228.w86-198.abo.wanadoo.fr] has joined #ubuntu-fr-classroom 20:02 [ seb35690]: ok 20:02 [ animimotus]: (je ne faisais que passer) 20:02 [@gapz]: donc pour le moment ça va, pas de soucis ? 20:02 [ LVEB]: oui 20:02 ::: mode/#ubuntu-fr-classroom [+m] by gapz 20:02 [@gapz]: Cela ne s'arrête pas là, si par exemple vous voulez rediriger stderr vers stdout, il vous suffit alors d'utilisez "2>&1" qui signifie littéralement rediriger stderr vers ce que représente stdout. Par exemple "ls >fichier 2>&1" redirigera stdout dans fichier ainsi que stderr. Si vous rencontrez "&>fichier" cela signifie rediriger stdout et stderr dans fichier. 20:03 ::: mode/#ubuntu-fr-classroom [-m] by gapz 20:03 [+Zic_]: arf 20:03 [+Zic_]: ça je ne savais pas tient 20:03 [ LVEB]: :) 20:03 [+Zic_]: mais c'est un peu confus, je relis pour comprendre là :) 20:03 [@gapz]: des questions ? (bon je vais vous demandez ça à chaque -m hein) 20:03 [ Yumi`]: heu je vais paraitre peut etre bete mais a quoi sert la redirection ? 20:03 [@FiFouille]: petit exemple 20:03 [ animimotus]: (fiou) 20:03 [+Lutin] gapz: ce qui veut dire que c'est equivalent ? 20:03 [@FiFouille]: vous compilez avec gcc et il fait des erreurs 20:04 [ LVEB]: pourquoi ya & ? 20:04 [@FiFouille]: il les affiche sur la sortie d'erreur, comme mettre ça dans un fichier ? 20:04 [@FiFouille]: gcc fichier.c 2>log_compil.txt 20:04 [@gapz]: LVEB: tu rediriges vers ce que reprèsente stdout, pas dans stdout 20:04 [ keikoz]: LVEB parce que sinon ça redirigerait vers un fichier appelé 1 20:04 [ animimotus]: LVEB: c'est comme toi&moi 20:04 [ seb35690]: le & sert donc à rediriger tout dans le même fichier ? 20:04 [@gapz]: keikoz: ouais ça 20:04 [ Yumi`]: ok ok 20:04 [@gapz]: une connerie une :] 20:04 [ LVEB]: ok merci 20:04 [ keikoz]: en gros le & sert à distinguer un fichier du descripteur de ficheir 20:04 [ Yumi`]: FiFouille, et ce fichier log_compil.txt il va dans le dossier actif 20:05 [+skateinmars]: Yumi`, oui 20:05 [@gapz]: voila, ça pointe vers le descripteur de fichier 1 20:05 [@FiFouille]: Yumi`: oui, tu peux très bien faire 2>/tmp/logs.txt si tu veux 20:05 ::: pascalp [n=Pascal@62.253.247.69] has quit [Connection timed out] 20:05 [ Yumi`]: ok 20:05 [ keikoz]: donc >1 envoie les données vers un fichier appelé "1" et >&1 vers la sortie standard (= l'écran) 20:05 [@gapz]: Lutin: hein ? :) 20:05 [@gapz]: keikoz: vers ce que représente stdout ;-) 20:05 [+Zic_] gapz: ça serait pas plus logique ls 2>&1 >fichier 20:05 [+Zic_] gapz: je ne sais pas si ça marche 20:05 [+Zic_]: :> 20:05 [@gapz]: pas forcément version l'écran si jamais 1 pointe vers un fichier 20:06 [@FiFouille]: Zic_: non, c'est dans l'autre sens, mais on en parle 20:06 [+Zic_]: :) 20:06 [ keikoz]: (j'ai une bonne doc sous la main si ça intéresse :p) 20:06 [+Zic_]: dire que je pensais reposer mon cerveau ce soir 20:06 [+Lutin] gapz: dans ton exemple, ls > fichier 2 >&1 est equivalent a ls &>fichier ? 20:06 [@gapz]: han il va me cassé mon cour lui :] 20:06 [@FiFouille]: keikoz: à la fin, dans les urls de référence alors, que ça soit un peu structuré :p 20:06 [ keikoz]: enfin bref, je vais me bourrer la gueule 20:06 [ keikoz]: passez une bonne soirée :) 20:06 [ animimotus]: LVEB: un fichier texte sous linux ne doit pas forcément se finir par .txt 20:06 [ LVEB]: :) 20:07 [@gapz]: oui LVEB 20:07 [ LVEB]: pourquoi tu dis ca a moi ? 20:07 [@gapz]: Lutin* 20:07 [@gapz]: bye keikoz :-) 20:07 ::: mode/#ubuntu-fr-classroom [+m] by gapz 20:07 [@gapz]: bon il existe d'autre type de redirection avec ">" 20:07 ::: MrZeroo00 [n=badr@adsl196-51-103-217-196.adsl196-12.iam.net.ma] has quit [Read error: 104 (Connection reset by peer)] 20:08 [@gapz]: par exemple pour fermer un descripteur de fichier mais cela n'est pas vraiment utile dans le cadre de ce cour 20:08 [@gapz]: exec 2>&- par exemple 20:08 [+Lutin] gapz: ok, merci 20:08 [@gapz]: Maintenant nous allons utiliser "<" et "<<", qui permettent tout les deux de rediriger l'entrée standard. 20:09 [@gapz]: Par exemple, si l'on utilise le programme wc (qui permet d'afficher le nombre d'octets, de mots et de lignes d'un fichier, man wc ;-)), on peut rediriger stdin via "<", par exemple si l'on veut compter le nombre de ligne dans un fichier : "wc -l < fichier" (revient aussi à faire "wc -l fichier", mais cela est du au fait que wc -l peut prendre en paramètre un nom de fichier). 20:09 ::: mode/#ubuntu-fr-classroom [-m] by gapz 20:09 ::: thomas-ubuntu [n=thomas-u@noo60-1-88-160-100-35.fbx.proxad.net] has quit ["PJIRC forever!"] 20:09 [ animimotus]: [20:08] pourquoi tu dis ca a moi ? <------- parce que >LVEB 20:10 [@gapz]: des questions ? 20:10 [@gapz]: je supose que non :) 20:10 [ LVEB]: javais juste demande : 20:10 [ LVEB]: pourquoi ya & ? 20:10 [@FiFouille] gapz: si, pourquoi utiliser < et pas | ? 20:10 [ Yumi`]: LVEB, keikoz ta repondu 20:10 [ LVEB]: rien avoir avec txt 20:10 [@gapz]: FiFouille: parce qu'avec | on le verra après :P 20:10 [@FiFouille]: LVEB: c'est pour distinguer le descripteur de fichier 1 du fichier 1, 1 fichier, &1 descripteur 20:10 [@gapz]: et que j'avais pas trouvé de meilleur exemple 20:11 [ Yumi`]: keikoz > en gros le & sert à distinguer un fichier du descripteur de ficheir 20:11 [ animimotus]: LVEB: c'était un parenthèse sur ce qu'est un fichier texte... >oO 20:11 [@FiFouille] gapz: /dev/zero ;) 20:11 ::: sirion2 [n=gerondif@ozf77-1-82-231-98-42.fbx.proxad.net] has joined #ubuntu-fr-classroom 20:11 [ seb35690]: question bête 20:11 [@gapz]: oui ? 20:11 [ th01]: ls > fichier c'est la me chose que fichier < ls ?? donc c'est l'inverse de > 20:11 [@gapz]: non c'est pas bon 20:11 [ seb35690]: c'est quoi un descripteur de fichier et la différence avec le fichier ? 20:12 [@gapz]: seb35690: Un descripteur de fichier est simplement un numéro que le système d'exploitation affecte à un fichier ouvert pour garder sa trace. Considérez cela comme une version simplifiée d'un pointeur de fichier. C'est analogue à un handle vers un fichier en C. 20:12 [ seb35690]: ok 20:12 [@gapz]: sous Unix tout est fichier, faut s'en rappeler ;-) 20:12 [ seb35690]: oui 20:12 [@FiFouille]: th01: ls > fichier tu rediriges la sortie standard de ls dans fichier 20:12 [@FiFouille]: th01: ls < fichier tu rediriges le contenu de fichier 'dans' ls 20:12 [ th01]: ok 20:12 [@gapz]: seb35690: tu vois à peu près ? 20:12 [ seb35690]: oui 20:12 [ Yumi`] gapz, c'est le pid ou rien a voir ? 20:12 [@gapz]: Yumi`: rien à voir ;-) 20:12 [ seb35690]: rien à voir à mon avis 20:13 [ Yumi`]: ok 20:13 ::: tinram_ [n=tinram@ADijon-151-1-8-1.w83-194.abo.wanadoo.fr] has joined #ubuntu-fr-classroom 20:13 ::: mode/#ubuntu-fr-classroom [+m] by gapz 20:13 [@gapz]: "<<" quand à lui permet de rediriger aussi stdin mais jusqu'a arriver à une chaine de caractère que l'on aura spécifiée, exemple : "wc -l << EOF" (EOF signifiant End Of File, vous pouvez utiliser de la même manière "FIN", ou encore "FDF" etc...). 20:13 [@gapz]: En utilisant ">" et "<<" nous pouvons facilement ajouter du texte dans un fichier de notre choix de la même manière qu'un éditeur de texte : "cat > fichier << EOF" (l'outil cat permet de concaténer des fichiers et les afficher sur la sortie standard). 20:13 ::: mode/#ubuntu-fr-classroom [-m] by gapz 20:14 [ th01]: je compren bien la redirection > mais pas celle ci < ! 20:14 [@FiFouille]: Yumi`: pid c'est un Process ID, c'est unique sur un système donné, l'autre c'est un descripteur de fichier, pour lire ou écrire et y'en a généralement 3 par défaut, entrée et sortie standard, et sortie d'erreur 20:14 [@gapz]: n'hésitez surtout pas à faire les exemples en local 20:14 [@FiFouille]: th01: on te montrera un exemple un peu plus tard alors ;) 20:14 [@gapz]: th01: < permet de redirigé l'entrée standard 20:14 ::: sirion2 [n=gerondif@ozf77-1-82-231-98-42.fbx.proxad.net] has left #ubuntu-fr-classroom ["Leaving"] 20:14 [ animimotus]: wc -l << EOF ? oO 20:15 [@gapz]: juste savoir ça et après tu verras des exemples plus parlant 20:15 [@gapz]: avec des outils plus parlant ;-) 20:15 [@gapz]: animimotus: oui 20:15 [+Zic_]: animimotus: c'est simple 20:15 [@gapz]: animimotus: qu'est-ce qu'il y a ? 20:15 [ animimotus]: man wc 20:15 ::: dim_m [n=dimm@ALille-154-1-112-173.w90-34.abo.wanadoo.fr] has quit [Read error: 110 (Connection timed out)] 20:15 [@gapz]: tout va bien donc ? 20:15 [@FiFouille]: bon alors << EOF c'est particulier 20:15 [@FiFouille] gapz: deux sec ;) 20:15 [@gapz]: FiFouille: pas de soucis :-) 20:16 [+Zic_]: en clair 20:16 [@FiFouille]: en fait << EOF va rediriger votre entrée standard dans le programme à 'gauche' tant qu'il ne voit pas passer EOF 20:16 [+Zic_]: cat > fichier << EOF 20:16 [@FiFouille]: essayez l'exemple avec wc -l << EOF, tapez qques lignes et faites EOF quand vous le sentez 20:16 [@FiFouille]: ça va donc compter le nombre de ligne EOF non compris 20:16 [ animimotus]: ok pour le cat > fichier << EOF 20:16 [@gapz]: (wc -l compte simplement le nombre de ligne) 20:16 [@FiFouille]: ça marche très bien aussi avec wc -l << POUET hein ;) 20:17 [ animimotus]: il manque pas un paramètre à wc ? 20:17 [@gapz]: non non 20:17 [@gapz]: wc -l lit l'entrée standard 20:17 [@gapz]: contrairement à des outils comme ls etc 20:17 ::: Bixente [n=Bixente@ANantes-157-1-68-211.w86-220.abo.wanadoo.fr] has joined #ubuntu-fr-classroom 20:17 [@gapz]: 'fin je parlerais de ça juste après 20:18 ::: mode/#ubuntu-fr-classroom [+m] by gapz 20:18 [@gapz]: Même si cela ne traite pas directement des redirections il est important de connaitre un fichier spécial nommé null. Il permet de rediriger un descripteur de fichier vers un fichier qui supprimera toutes les données qui lui seront ajouter. Il porte le nom d'absorbeur de données. Si par exemple vous ne voulez pas voir le résultat d'une commande, il vous suffit de rediriger stdout vers /dev/null : "ls >/dev/null". Pour plus d'information sur le fichier null, man null. 20:18 [@gapz]: (il existe aussi zero) 20:18 [@gapz]: La lecture depuis un fichier spécial null retourne toujours "fin de fichier", alors que la 20:18 [@gapz]: lecture depuis zero retourne toujours des caractères \0. 20:18 ::: mode/#ubuntu-fr-classroom [-m] by gapz 20:18 [+Zic_]: en fait /dev/null, c'est un peu la corbeille définitive 20:18 [@gapz]: comme indiqué dans le manuel 20:18 [+Zic_]: genre mv fichier /dev/null 20:18 [@gapz]: Zic_: le trou noir je dirais :] 20:18 [+Zic_]: = rm fichier 20:19 [+Zic_]: ouais, tout ce qui rentre dedans n'en ressort jamais :> 20:19 [ seb35690]: j'ai l'impression de revenir 10 ans en arrière et d'entendre mon prof AFPA sur les serveurs UNIX :-D 20:19 [@gapz]: hehe 20:19 [@FiFouille]: ça permet aussi de se "débarasser" de la sortie d'erreur quand elle est trop casse pied 20:19 [@gapz]: bon tout le monde suit à peu près il n'y a pas de soucis ? 20:19 ::: foxy0brown [n=foxy0bro@cse35-1-82-236-141-195.fbx.proxad.net] has joined #ubuntu-fr-classroom 20:20 [@FiFouille]: find / -name blabla 2>/dev/null pour éviter tous les "Permissions non accordées" 20:20 [ LVEB]: alles ist OK 20:20 [ foxy0brown]: bsr, je suis newbie! 20:20 [@gapz]: foxy0brown: on est la pour ça mais tu es à la bourre 20:20 [@FiFouille]: foxy0brown: assieds toi confortablement et écoute alors ;) 20:20 [ shadok]: *bourre 20:20 [ LVEB]: :) 20:20 [@gapz]: shadok: oui oui :) 20:21 [ shadok]: :) 20:21 [ foxy0brown]: commen g doi faire pour choper wifi radar? cabextract? c des paquets synaptic? 20:21 [ animimotus] gapz: spèce de bourge :p 20:21 [+Zic_]: arf 20:21 [+Zic_]: foxy0brown: #ubuntu-fr 20:21 [@gapz]: Zic_: +4 20:21 ::: mode/#ubuntu-fr-classroom [+m] by gapz 20:21 [+Zic_]: mon premier Linux était un serveur 20:21 [@gapz]: Maintenant je vais un peu parler des commandes pour traiter les fichiers 20:21 [+Zic_]: donc bon, la première chose que j'ai appris, c'est ça (le cours de gapz) 20:22 [+Zic_]: vieux souvenir :> 20:22 [@gapz]: je sais, j'aurais du placer cette partie avant mais bon 20:22 [@gapz]: Les commandes de bases pour traiter les fichiers 20:22 [@gapz]: Ici je vais vous présenter globalement les commandes utilisées pour traiter les fichiers. Comme cela n'est pas le but du cours, cette partie sera assez rapide, mais vous pouvez à tout moment, si vous ne saisissez pas quelques consulter le manuel via la commande "man nom_du_programme" (par exemple "man ls"). 20:22 [@gapz]: et si vous le desirez, en parler plus en profondeur à la fin du cour 20:23 [@gapz]: notament de find, qui permet entre autre pas mal de chose 20:23 [@gapz]: L'interêt de cette partie est de vous fournir une gamme d'outil permettant ensuite de présenter des notions concernant directement le shell. 20:23 [@gapz]: Les commandes les plus courament utilisées sont donc : 20:23 [@gapz]: cp, mv, ls, cd, rm, chmod, chown, find 20:23 [@gapz]: enfin celle que j'utilise le plus quoi :) 20:23 [+Zic_]: moi, c'est mplayer 20:23 * Zic_ sort 20:24 [@gapz]: chacune des commandes correspond directement à un mot 20:24 [@gapz]: par exemple cp = copy, mv move, ls list, cd change directory 20:24 [@gapz]: etc etc 20:24 ::: mode/#ubuntu-fr-classroom [-m] by gapz 20:24 [ LVEB]: rm ? 20:24 [@gapz]: ça vous semble clair ? 20:24 [+Adri2000]: remove 20:24 [+Zic_]: ReMove 20:24 [@FiFouille]: notez que cd n'est pas une commande en soit, mais un truc intégré à votre shell ;) 20:24 [ Yumi`]: juste un truc c'est possible de mettre man en fr? 20:24 [ LVEB]: chmod 20:25 [+Zic_]: manpages-fr Yumi` 20:25 [+Adri2000]: chown change owner (je suppose) 20:25 [+Zic_]: mais pas toutes 20:25 [ Yumi`]: ok merci Zic_ 20:25 [ foxy0brown]: mod? 20:25 [ animimotus]: LVEB: rm c'est une commande dangeureuse... comme dit plus haut :) 20:25 [+Adri2000] gapz: chmod = ? 20:25 [@FiFouille]: chaque fichier a des droits 20:25 [+Zic_]: chmod permet de changer les propriété d'un fichier/dossier 20:25 [ timruff]: oui 20:25 [@FiFouille]: lecture, écriture, exécution 20:25 [+Zic_]: s/propriétés/droits 20:25 [+Zic_]: pardon :) 20:25 [@FiFouille]: et pour différente personnes, le propriétaire du fichier, les gens qui font partie du groupe associé, et les autres 20:25 [@gapz]: euh, Adri2000 change mod :] 20:25 [ animimotus]: own c'est l'owner, le proprio 20:25 [ LVEB]: chown? 20:25 [+Zic_]: par exemple 20:26 [@FiFouille]: avec chmod on peut définir qui peut faire quoi, lire écrire ou éxécuter ;) 20:26 [+Adri2000] gapz: ok ^^ 20:26 [+Zic_]: sous Nautilus, clique droit, Propriétés 20:26 [ th01]: question qui n'a rien à voir avec le cours ! vous êtes tous en UTF8 ou ISO-8859-1 ? squr IRC ? 20:26 [@gapz]: Adri2000: en gros j'en sais rien ^^ 20:26 [+Adri2000]: j'ai compris :p 20:26 [+Zic_]: sur un fichier 20:26 [@gapz]: change mode en fait Adri2000 20:26 [+Zic_]: puis Permission = chmod graphique 20:26 [+Zic_]: en quelque sorte :) 20:26 [@gapz]: chmod (abréviation de change mode) est une commande Unix exécutable dans un environnement de type Unix qui permet de changer les permissions d'accès (spéciales ou non) sur un fichier. 20:26 [ animimotus]: Zic_: sous kde aussi :) 20:26 [+Adri2000]: th01: utf-8 20:26 [ animimotus]: enfin konqueror 20:26 [@gapz]: sachez que l'on peut tout faire avec la ligne de commande 20:26 [+Zic_]: animimotus: je ne savais même plus que c'était dans l'onglet Permission dans Nautilus 20:26 [+Zic_]: je l'utilise rarement 20:27 [+Zic_]: (shell power) 20:27 [@gapz]: et pour preuve je n'utilise pas de navigateur de fichier graphique 20:27 [+Zic_]: niveau traitement de fichier, je ne me sert que du terminal 20:27 ::: mode/#ubuntu-fr-classroom [+m] by FiFouille 20:27 [+Zic_]: c'est BEAUCOUP plus rapide 20:27 [@FiFouille]: petit exemple pour chmod et les valeurs associées 20:27 [@FiFouille]: ls -l /bin/bash 20:27 [@FiFouille]: -rwxr-xr-x 1 root root 677184 2006-12-11 22:20 /bin/bash 20:27 [+Zic_]: chmod +x fichier par exemple 20:27 [+Zic_]: donne le droit d'éxecuter le fichier 20:28 [+Zic_]: :) 20:28 [@FiFouille]: ici, le propriétaire est root, le groupe associé est root aussi 20:28 [@FiFouille]: seul le propriétaire peut modifier le fichier (w pour write) 20:28 [@FiFouille]: tout le monde peut le lire et l'exécuter 20:28 [@FiFouille]: c'est typiquement les permissions sur un fichier exécutable par tout le monde comme bash, votre shell, interpréteur de commande par défaut 20:29 [@gapz]: si vous le souhaitez nous parlerons en détail des droits de fichier à la fin du cour 20:29 [@FiFouille]: un autre exemple, un fichier que vous voulez garder secret 20:29 [@FiFouille]: il aurait par exemple les droits -rw------- 20:29 [@FiFouille]: seul le propriétaire (vous) peut lire et écrire sur ce fichier, les autres n'y ont pas accès 20:29 ::: mode/#ubuntu-fr-classroom [-m] by FiFouille 20:30 [ LVEB]: on fait comment pour sortir d'un man ? 20:30 ::: tinram [n=tinram@ADijon-151-1-79-162.w83-196.abo.wanadoo.fr] has quit [Connection timed out] 20:30 [+Zic_]: à noter aussi : parfois vous croiserez un "d" 20:30 [@FiFouille]: et une dernière chose 20:30 [ animimotus]: FiFouille: et pour définir ça en une seule ligne ? 20:30 [+Zic_]: dans les permission 20:30 [@gapz]: LVEB: q 20:30 [ animimotus]: LVEB: par derrière :) 20:30 [+Zic_]: ça signifie simplement que le "fichier" est en faite un dossier 20:30 [ LVEB]: merci gapz 20:30 [+Zic_]: (tous sous UNIX est considéré comme fichier) 20:30 [@FiFouille]: r = 4, w = 2, x = 1, en faisant la somme on obtient une valeur allant de 0 à 7 20:30 ::: MrZeroo00 [n=badr@adsl196-115-47-217-196.adsl196-10.iam.net.ma] has joined #ubuntu-fr-classroom 20:30 [@FiFouille]: 754 vaut -rwx-r-xr-- 20:30 [@gapz]: *si vous le souhaitez nous parlerons en détail des droits de fichier à la fin du cour* :-) 20:30 ::: hal [n=lren@135.36.100-84.rev.gaoland.net] has left #ubuntu-fr-classroom [] 20:30 [ seb35690] gapz: reprends la main ça part en couille 20:30 [ animimotus]: ugo c'est pas mieux ? 20:30 [ MrZeroo00]: de umask aussi :) 20:30 [+Zic_]: oui :) 20:31 [ LVEB]: 20:31 [@FiFouille]: donc vous voulez créer un script exécutable par vous et les membres de votre groupe, mais seulement modifiable par vous et non exécutable par les 'autres' 20:31 [ animimotus]: histoire de mieux comprendre avec ls -l ;) 20:31 [@gapz]: seb35690: ne t'en fait pas 20:31 [@FiFouille]: chmod 754 script.sh 20:31 [@FiFouille]: ou bien, plus 'clair' 20:31 [@FiFouille]: chmod u+rwx,g+rx,o+r script.sh 20:31 [@FiFouille]: u pour user, g pour group et o pour others 20:32 [ Yumi`]: c'est obliger en chiffre chmod ca peut pa etre en rwx ? 20:32 [ seb35690] gapz: mode +m vite ! :-D 20:32 [@FiFouille]: Yumi`: je viens d'y répondre :p 20:32 [@gapz]: Yumi`: cf la dernière phrase de FiFouille 20:32 [ LVEB]: +M 20:32 [ Yumi`]: mouarf 20:32 ::: mode/#ubuntu-fr-classroom [+m] by gapz 20:32 ::: MrZeroo00 [n=badr@adsl196-115-47-217-196.adsl196-10.iam.net.ma] has quit [Remote closed the connection] 20:32 [@gapz]: les droits de fichier pourrons être aborder en détail à la fin si vous le voulez 20:32 ::: badr [n=badr@adsl196-115-47-217-196.adsl196-10.iam.net.ma] has joined #ubuntu-fr-classroom 20:32 [@gapz]: umask etc... 20:32 [@gapz]: chmod, chown... 20:32 [@FiFouille]: plat de consistence 20:33 [+Zic_]: j'ai faim 20:33 [+Zic_]: je vais manger de bonne pipelines :> 20:33 [@gapz]: Sinon pour parler un peu des outils unix, Pour ceux qui n'aurait jamais touché à cela de leur vie il faut savoir qu'a chaque tâche correspond un programme, par exemple pour copier, supprimer, chercher, et bien d'autre encore plus complexe. Il faut aussi savoir que l'ont peut passer des arguments à chaques commandes (la plupart du temps, ce n'est pas une généralité), par exemple si l'on consulte le manuel de ls on se rend compte que l'on peut lister les fichiers commençant par un point ( .Trash par exemple), il suffit alors de faire "ls -a". 20:34 [@gapz]: donc, en gros tout ce que vous faite en graphique vous pouvez le faire en ligne de commande 20:34 [@gapz]: et même plus. 20:34 ::: badr [n=badr@adsl196-115-47-217-196.adsl196-10.iam.net.ma] has quit [Remote closed the connection] 20:34 [+Zic_]: les les ... ? Après la page de pub, la suite 20:34 ::: MrZeroo00 [n=MrZeroo0@adsl196-115-47-217-196.adsl196-10.iam.net.ma] has joined #ubuntu-fr-classroom 20:34 [+Zic_]: pendant ce temps, envoyez Ubuntu au 4676 par SMS 20:34 [@gapz]: hehe 20:34 [@gapz]: Pour celles et ceux qui le désirent, je pourrais toujours expliquer les commandes fondamentales pour traiter les fichier à la fin de ce cour. 20:34 [+Adri2000] gapz: message coupé après "que l'on peut lister les" 20:34 [@FiFouille]: Zic_: un peu de silence s'il vous plait 20:35 [+Zic_]: mais euh, c'est pas moi qui bavardait, c'est lui msieur :> 20:35 [@gapz]: peut lister les fichiers commençant par un point (.Trash par exemple), il suffit alors de faire "ls -a". 20:35 [@gapz]: Adri2000: merci 20:36 [@gapz]: Le shell tire aussi sa puissance de par la diversité des programmes disponibles. Bon nombre d'outil existent et chacun a une tâche bien précise, la plupart du temps vous trouverez toujours un programme qui réalise ce que vous désirez. Je vais vous présenter ici quelques outils qui servent à traiter du texte en gros. 20:36 [@gapz]: je me répète mais c'est nécessaire, pour bien comprendre que le shell est ultra puissant :-) 20:36 ::: Saucisson_ [n=Scandina@ANice-151-1-6-184.w83-113.abo.wanadoo.fr] has joined #ubuntu-fr-classroom 20:36 ::: xorg62 [n=martin@Mix-Lille-205-2-4.w193-249.abo.wanadoo.fr] has joined #ubuntu-fr-classroom 20:37 [@gapz]: Je vais d'abord vous présenter quelques outils assez simple, en premier lieu cut 20:37 [@gapz]: Pour présenter l'outil cut nous allons par exemple considérer que nous voulons obtenir le premier mot (correspondant au nom de l'utilisateur) du fichier /etc/passwd. 20:37 [@gapz]: Avec cut, vous pouvez supprimer une partie de chaque ligne d'un fichier, soit en indiquant un séparateur (avec l'option -d), soit en indiquant la position (via -c). Voyons tout de suite un exemple : "cat /etc/passwd | cut -d: -f1". L'option "-d:" indique que le séparateur sera ":", et "-f1" indique que l'on veut récupérer seulement la première partie. 20:37 [@gapz]: Si l'on découpe une ligne de ce fichier, cela pourrait donner : "daemon:x:1:1:daemon:/usr/sbin:/bin/sh" , daemon serait la première partie, x la deuxi�me etc etc... 20:37 ::: mode/#ubuntu-fr-classroom [-m] by gapz 20:37 [ xorg62]: 20:38 [ LVEB]: 20:38 [@gapz]: des questions ? 20:38 [@FiFouille]: ça marche aussi avec cut -d: -f1 /etc/passwd 20:38 [@gapz]: oui voila j'allais le dire :-) 20:39 [@gapz]: nous parlerons du pipe après 20:39 [ LVEB] gapz active le mode -m #ubuntu-fr-classroom 20:39 [@gapz]: LVEB: c'est en -m 20:39 [ LVEB]: :) 20:40 [@gapz]: des questions par rapport à l'outil cut ? 20:40 [+Zic_] gapz: il faut mettre le -16 si tu parles de pipes 20:40 [ LVEB]: C'est une citation. 20:40 ::: seb35690 [n=seb35690@lns-bzn-38-82-253-64-121.adsl.proxad.net] has left #ubuntu-fr-classroom [] 20:40 [+Zic_]: il y a des mineures ici :> 20:40 [ LVEB]: :) 20:40 ::: mode/#ubuntu-fr-classroom [+m] by gapz 20:41 [@gapz]: Notez bien que "cat /etc/passwd | cut -d : -f 1" fonctionne aussi. Si le caractère de séparation est un espace et que nous voulons récupérer le chan 1 et 5 alors la commande serait : "cat fichier | cut -d" " -f1,5". 20:41 [@gapz]: Maintenant si l'on travaille en fonction de la position : "cat /etc/passwd | cut -c 1-10". Vous l'aurez compris cette commande récupère les caractères de 1 à 10 du fichier passwd. Vous aussi très bien récupérer les caractères de 5-20 etc. 20:41 [@gapz]: cut -c 1-10 /etc/passwd pour le moment d'ailleurs :-) 20:41 ::: mode/#ubuntu-fr-classroom [-m] by gapz 20:41 [@gapz]: je supose que l'outil cut ne pose pas de soucis ? 20:42 [ LVEB]: ca va pas trop mal... 20:42 [ animimotus]: LVEB: | = pipe = tuyau = redirige un truc vers un autre, comme un pipeline ou un aqueduc :) 20:42 [@gapz]: animimotus: je l'explique juste après 20:42 ::: mode/#ubuntu-fr-classroom [+m] by gapz 20:42 [@gapz]: Toujours dans les outils qui facilitent la vie, vous aurez souvent besoin de ne voir que le début pour la fin d'un texte ou du retour d'une commande. Par exemple lorsque vous tapez "last" ou encore dmesg vous aimeriez ne voir que : soit la fin, soit le début. 20:43 [@gapz]: Il existe pour cela deux outils : head et tail. Si par exemple vous voulez récupérer uniquement les 5 premières lignes du fichier /var/log/Xorg.0.log il vous suffit de faire "cat /var/log/Xorg.0.log | head -n 5". Bien entendu "tail -n 5 /var/log/Xorg.0.log" marche aussi. De la même manière si vous voulez récuperer les 5 dernières lignes du résultat de la commande dmesg : "dmesg | tail -n 5" 20:43 ::: mode/#ubuntu-fr-classroom [-m] by gapz 20:43 [@FiFouille]: PS : la sortie standard (stdout, 1) devient l'entrée standard (stdin, 0) du programme à droite du pipe ( | ) 20:43 [ xorg62]: | 20:44 [@gapz]: FiFouille: ouais j'ai écris les commandes instinctivement 20:44 [@FiFouille]: bon et alors sinon un 'flag', un argument pratique pour tail 20:44 [@gapz]: mais je vais expliquer tout de suite les pipe 20:44 [@FiFouille]: tail -f /var/log/syslog par exemple 20:44 [@FiFouille]: -f pour follow, chaque fois qu'il y a des ajouts ils sont affichés 20:45 [@gapz]: très pratique oui :) 20:45 ::: foxy0brown [n=foxy0bro@cse35-1-82-236-141-195.fbx.proxad.net] has quit ["Quitte"] 20:45 ::: The_Marauder [n=The_Mara@cam44-1-82-67-123-151.fbx.proxad.net] has joined #ubuntu-fr-classroom 20:45 [ xorg62]: quand on veux faire 2 commande a la suite on utilise les pipe 20:45 [Users #ubuntu-fr-classroom] 20:45 [@ChanServ ] [+Uggy ] [ davro-desktop] [ Koroviev ] [ pascal_ ] [ th01 ] 20:45 [@FiFouille ] [+Zic_ ] [ davromaniak ] [ krusaf ] [ Phlogistique] [ th0r ] 20:45 [@gapz ] [ animimotus ] [ Didi3R ] [ LVEB ] [ Ppjet6 ] [ The_Marauder] 20:45 [+Adri2000 ] [ AToMiSeR ] [ dim_m_ ] [ Matbox ] [ PyroSmoke ] [ timruff ] 20:45 [+gpocentek ] [ Belou ] [ don-harry ] [ McPeter ] [ rem__ ] [ tinram_ ] 20:45 [+Lutin ] [ benje ] [ fanch_ ] [ mfv9 ] [ Remi ] [ xorg62 ] 20:45 [+racoon97 ] [ Bixente ] [ filip_ ] [ Miro_Offline ] [ Saucisson ] [ Xzorg666 ] 20:45 [+skateinmars] [ bydibule ] [ illovae ] [ MisterMatt ] [ Saucisson_ ] [ Yumi` ] 20:45 [+Sp4rKy ] [ c3d41c ] [ jnjb ] [ MrZeroo00 ] [ shadok ] 20:45 [+Toadstool ] [ clem-vangelis_] [ keikoz ] [ ObiWanKennedy] [ Surfoo ] 20:45 ::: Irssi: #ubuntu-fr-classroom: Total of 58 nicks [3 ops, 0 halfops, 9 voices, 46 normal] 20:45 [ xorg62]: je me trompe? 20:45 [ LVEB]: On pourra faire une entracte a 21 heures ? 20:45 [@gapz]: xorg62: je vais expliquer cela tout de suite ne y'en fait pas 20:45 [@FiFouille]: xorg62: si on veut faire de la plomberi avec la sortie du premier pour l'entrée du deuxième, oui 20:45 [ animimotus]: LVEB: lol 20:45 ::: mode/#ubuntu-fr-classroom [+m] by gapz 20:46 [@gapz]: Les pipes 20:46 [@gapz]: tant attendu ;-) 20:46 [@gapz]: D'une manière générale les pipes sont tout une gamme de ce que j'appele opérateur. Par exemple les opérateurs de redirection sont des pipes. Ils existent donc aussi une autre gamme d'opérateur permettant de travailler avec les entrées/sorties. La plupart du temps lorsque l'on parle de pipe on parle seulement de "|" 20:46 [@gapz]: Présentation de "|" 20:46 [@gapz]: Cet opérateur permet d'envoyer la sortie standard d'un programme vers l'entrée standard d'un second programme, cela permet ainsi l'enchaînement des commandes. Par exemple : "ls | wc -l". La sortie standard de "ls" devient l'entrée standard de "wc -l". 20:46 ::: mode/#ubuntu-fr-classroom [-m] by gapz 20:47 [ xorg62]: et ben voila 20:47 [@FiFouille]: et faut vraiment le voir comme une plomberie 20:47 [@FiFouille]: une vanne | un chauffe eau | un mitigeur | votre douche 20:47 [ xorg62]: c'est pour enchainé 2 commande 20:47 [ LVEB]: ^^ 20:47 [@FiFouille]: le flux (de texte) passe à travers chaque et subit un traitement 20:47 [ xorg62]: =) 20:48 [@gapz]: Autre exemple : "cat fichier | wc -l", "ls -l | sort" (sort permet de trier les lignes d'un fichier texte, pour plus d'information "man sort"). Vous pouvez bien sûr étendre cela à plus de deux programmes : "cat fichier | wc -l | wc -L". Vous pouvez aussi utiliser les redirections vu précédemment : "ls -la > fichier | wc -l" etc. Dans le cas de "ls -la > fichier" nous pouvons remarquer qu'il n'y a rien sur stdout ou stderr. Pour pallier à cela le programme tee permet de copier l'entrée standard sur la sortie standard et dans un fichier : "ls -la | tee fichier". Dans ce cas : "ls -la | tee fichier | wc -l" 20:48 [ LVEB]: :) 20:48 [@gapz]: je vais pas trop vite j'espère ? 20:49 [@gapz]: tout le monde comprend bien le système ? 20:49 [ xorg62]: c'est impec 20:49 [@FiFouille] gapz: argl, l'erreur classique :p 20:49 [@gapz]: FiFouille: ou ? ou ? 20:49 ::: Tartopom [n=Tartopom@ip-192.net-82-216-243.rev.numericable.fr] has joined #ubuntu-fr-classroom 20:49 [ LVEB]: progra... 20:49 [@FiFouille]: ls -la > fichier | wc -l ça marchera pas malheureusement 20:49 [+Adri2000] gapz: coupé : "Pour pallier à cela le progra" 20:49 [+Zic_]: j'y vais moi :/ petit problème 20:49 [@gapz]: FiFouille: justement 20:49 [+Zic_]: désolé :| 20:49 [ Yumi`]: et les commande secute en meme temp ou lune apres lautre ? 20:49 [+Zic_]: bonne soirée, et bon cours 20:49 [@gapz]: c'est fait exprès FiFouille 20:49 [@gapz]: bonne soirée Zic_ 20:49 [ Yumi`]: sexecute 20:50 [@gapz]: Yumi`: la première en première, la deuxième en deuxième etc.. 20:50 [ Yumi`]: ok gapz merci 20:50 [@FiFouille]: Yumi`: en meme temps, et elles font le traitement que quand elles ont qqch en entrée 20:50 [@gapz]: car elle redirige sa sortie vers l'entrée de l'autre donc il faut qu'elle soit finis 20:50 ::: Zic_ [n=Zic@Final-Fantasy.FF-IRC.net] has quit ["Quitte"] 20:50 [@FiFouille] gapz: mais non :p 20:50 [ xorg62]: a oui 20:50 [ Yumi`]: heuuu 20:50 ::: mode/#ubuntu-fr-classroom [+m] by FiFouille 20:50 [@gapz]: FiFouille: hein ? 20:50 [@FiFouille]: juste une remarque 20:51 [@FiFouille]: les pipes ( | ) 20:51 [@FiFouille]: c'est une lecture bloquante 20:51 [@FiFouille]: donc par exemple ls | wc -l 20:51 [@FiFouille]: wc est lancé, mais bloque (et c'est vraiment ça) en lecture, il attend que qqch lui vienne pour appliquer un traitement 20:51 ::: DracarD [n=j@11.red-62-57-21.user.auna.net] has joined #ubuntu-fr-classroom 20:51 [@FiFouille]: ls | wc -l le montre pas vraiment 20:52 [@FiFouille]: mais par exemple find / | grep chose 20:52 [@gapz]: ha oui exact :) 20:52 [@FiFouille]: grep va afficher une ligne a chaque fois que find lui fournira une ligne avec un 'chose' dedans 20:52 ::: mode/#ubuntu-fr-classroom [-m] by FiFouille 20:52 [ xorg62]: glxinfo | grep rendering 20:52 [ xorg62]: par exemple 20:52 [@FiFouille]: mais encore une fois, c'est de la plomberie 20:53 [@FiFouille]: votre chauffe eau va pas envoyer 200 litres d'eau une fois qu'il a fini de chauffer, il va le faire au fur et a mesure 20:53 [ Yumi`]: donc en gros une commande sexecute elle envoie et quand c'est reçu lautre commence 20:53 ::: Saucisson [n=Scandina@ANice-151-1-45-237.w83-197.abo.wanadoo.fr] has quit [Read error: 110 (Connection timed out)] 20:53 [@gapz]: Yumi`: non :-) 20:53 [ Yumi`]: raaa 20:53 [@gapz]: regarde bien ce qu'a marqué FiFouille 20:53 [@gapz]: c'est progressif 20:54 [ Yumi`]: ok a yai jai compris 20:54 [@FiFouille]: Yumi`: c'est un peu comme à la caisse enregistreuse 20:54 [ Yumi`]: vi vi :) 20:54 [@FiFouille]: la caissière fait rien tant qu'il y a pas un article, mais dès qu'il y en a un, elle le traite 20:55 ::: mode/#ubuntu-fr-classroom [+m] by gapz 20:55 [@gapz]: Présentation de "&" 20:55 [@gapz]: Cet opérateur permet de lancer simultanément deux commandes dont la première sera lancée en arrière plan. Par exemple "ls & ls -la". Vous pouvez aussi l'utiliser pour mettre un programme en arrière plan : "ed &". Pour reprendre la main sur ce programme il faut utiliser la commande fg (bien entendu la gestion des processus sort du cadre de ce cours alors nous ne verrons pas d'autre cas, par exemple plusieurs processus en arrière plan, comment les tuer...) 20:55 ::: mode/#ubuntu-fr-classroom [-m] by gapz 20:55 [@gapz]: on pourra en parler à la fin si vous voulez... ;-) 20:55 [ shadok]: fg = foreground 20:56 [@FiFouille]: bg 20:56 ::: barsanuphe [n=barsanup@gra33-1-82-230-167-222.fbx.proxad.net] has joined #ubuntu-fr-classroom 20:56 [@FiFouille]: = background (et man bash pour le reste) 20:56 [@gapz]: pas de question sur "&" ? 20:56 [@FiFouille]: et && et & c'est pas la meme chose, on verra ça plus tard aussi ;) 20:57 [ animimotus]: oui pour lancer firefox dans un terminal, on fait firefox& mais ça renvoit encore les erreurs ? 20:57 ::: DracarD [n=j@11.red-62-57-21.user.auna.net] has quit ["Me'n vaig"] 20:57 [@gapz]: firefox 2>/dev/null & 20:57 [ shadok]: suffit de les rediriger vers /dev/null animimotus :) 20:57 [@FiFouille]: animimotus: oui, les sorties restent attachées au terminal 20:57 [ shadok]: vouala 20:57 [ animimotus]: ok ) 20:57 [@gapz]: Présentation de "&&" 20:57 [@gapz]: Pour pouvoir bien comprendre ce que fait cet opérateur il faut d'abord que je vous parle rapidement des codes de retour : quand vous lancez une commande, si elle se termine correctement alors le code de retour est "0", ce qui correspond à un succès, dans le cas contraire le code de retour est différent de 0 (bien entendu les codes de retour différent de 0 ont une signification, mais cela sort du cadre du cours encore une fois). Si par exemple vous rentrez une commande erronée, le code de retour sera différent de 0 : "fgsfdg". Pour voir le code de retour de la dernière commande lancée : "echo $?" (pour le moment il n'est pas necessaire de comprendre cette dernière commande). Donc, pour en revenir à l'opérateur "&&", il permet de lancer une commande si seulement la première (celle à gauche de l'opérateur) s'est correctement terminé : "ls && ls /". Si la commande "ls" se termine correctement alors "ls /" sera exécutée. Un second exemple : "fdgfdsg && ls" 20:57 [ xorg62]: a quand un introduction pour le VI (je comprend pas toute les touche) =) 20:58 [@FiFouille]: animimotus: man nohup aussi 20:58 [@FiFouille]: xorg62: je dois en faire une (mais chut) 20:58 ::: mode/#ubuntu-fr-classroom [+m] by FiFouille 20:58 ::: MisterMatt [n=matthieu@vol75-11-82-247-163-224.fbx.proxad.net] has quit [Client Quit] 20:58 [+Adri2000] gapz: coupé encore :( 20:58 [+Adri2000]: "Si par exemple vous rent" 20:58 [@gapz]: Adri2000: mince je vois tout chez moi :-/ 20:59 [@gapz]: Si par exemple vous rentrez une commande erronée, le code de retour sera différent de 0 : "fgsfdg". Pour voir le code de retour de la dernière commande lancé : "echo $?" (pour le moment il n'est pas necessaire de comprendre cette dernière commande). Donc, pour en revenir à l'opérateur "&&", il permet de lancer une commande si seulement la première (celle à gauche de l'opérateur) s'est correctement terminée : "ls && ls /". Si la commande "ls" se termine correctement alors "ls /" sera exécutée. Un second exemple : "fdgfdsg && ls" 20:59 [+Adri2000]: Si la commande "ls" se termine... 20:59 [@gapz]: Si la commande "ls" se termine correctement alors "ls /" sera exécutée. Un second exemple : "fdgfdsg && ls" 20:59 ::: th01 [n=ubuntu@lns-bzn-21-82-248-135-170.adsl.proxad.net] has left #ubuntu-fr-classroom [] 20:59 [+Adri2000]: (fais des paragraphes plus petits :)) 20:59 [@gapz]: mince je pense pas que ça vient de mon client -_- 21:00 ::: mode/#ubuntu-fr-classroom [-m] by gapz 21:00 ::: gaic [n=gapz@88-139-61-111.adslgp.cegetel.net] has joined #ubuntu-fr-classroom 21:00 [@FiFouille]: y'a d'autres gens chez qui ca passe pas ? 21:00 [@gapz]: des questions ? 21:00 [@gapz]: FiFouille: ça passe chez toi ? 21:00 [@FiFouille]: Adri2000: sinon faut vérifier ton MTU :p 21:01 [@FiFouille] gapz: moi ça marche bien 21:01 [ Remi]: chez moi ça passe pas non plus ... 21:01 [@gapz]: xchat Remi ? 21:01 [ Remi]: non Konversation 21:01 [+Adri2000]: xchat 2.8.0 pour moi 21:01 [@gapz]: ha oui 21:01 [ xorg62]: xchat 0.13 chez moi 21:01 [ LVEB]: xchat, passe pas 21:01 [@gapz]: bon bon, je vais copier petite partie par petite partie 21:02 [ dim_m_] gapz: irssi ? 21:02 [@gapz]: oui 21:02 [@FiFouille]: chuteu 21:02 [ dim_m_]: moi ca marche 21:02 [@FiFouille]: bon sinon, y'a des gens qui ont une question, quelle qu'elle soit 21:02 [@FiFouille]: (mais pas sur son client irc ou autre truc rien à voir :p ) 21:02 [@gapz]: oui et les questions ? :)- 21:02 ::: pascal_ [n=Pascal@62.253.247.69] has quit [Remote closed the connection] 21:02 [@gapz]: on dira que non alors 21:02 [@gapz]: Présentation de "||" 21:03 [@gapz]: C'est simplement l'inverse de "&&". La commande à gauche de l'opérateur est éxécutée seulement si le code de retour de la première commande est différent de 0 : "fhgfdsjk || ls", dans ce cas "ls" sera exécuté. 21:03 [ LVEB]: +m 21:03 [@gapz]: LVEB: non c'est pas le basard t'en fait pas 21:03 [@gapz]: "ls | ls -l", dans celui ci "ls -l" ne sera pas exécuté si "ls" produit un code de retour égal à 0. 21:03 [@gapz]: si jamais vous avez des questions sur quoi que ce soit, si jamais je vais trop vite 21:04 [@gapz]: n'hésitez surtout pas à faire les exemples en local 21:04 [@FiFouille]: bon, répétition tout de même 21:04 [@gapz]: oui c'est sur :) 21:04 [@FiFouille]: avec && il arrête d'évaluer dès qu'il a un code de retour faux pour un terme 21:04 [@FiFouille]: avec || il arrête d'évaluer dès qu'il a un code de retour vrai pour un terme 21:06 ::: LVEB_ [n=leo@mon75-7-82-228-48-95.fbx.proxad.net] has joined #ubuntu-fr-classroom 21:06 [@gapz]: Il reste enfin un opérateur, ";" 21:06 [@gapz]: Cet opérateur est équivalent à un retour à la ligne, c'est à dire que "ls; ls -l" éxecutera "ls" dans un premier temps, et une fois la première commande finie, quelque soit le code de retour "ls -l" sera exécuté. 21:06 [@gapz]: c'est pas vraiment d'une grande utilité mais ça peut aider 21:06 [ animimotus]: on peut voir un exemple pratique et concret avec || ? 21:06 [ animimotus]: (avec du sens :) 21:06 [ LVEB_]: :) 21:06 [@gapz]: animimotus: tout de suite 21:07 * gapz réfléchis :) 21:08 [ LVEB_]: et lentement en plus 21:08 [@gapz]: animimotus: avec test par exemple 21:08 [@FiFouille]: test -d /tmp/pouet || mkdir /tmp/pouet 21:08 [@gapz]: tu regardes si un fichier existe, et sinon tu en créer un 21:08 [@gapz]: FiFouille: voila :) 21:08 ::: LVEB_ [n=leo@mon75-7-82-228-48-95.fbx.proxad.net] has quit [Client Quit] 21:08 [ animimotus]: cool ça 21:09 [@FiFouille]: dans ce cas ci c'est un dossier ;) 21:09 [ animimotus]: -d pour directory 21:09 [ animimotus]: -f file ? 21:09 [@gapz]: man test 21:09 [@FiFouille]: animimotus: oui, man bash ;) 21:09 [@gapz]: ça te dit tout ;-) 21:09 [ animimotus]: :) 21:09 [ LVEB]: :) 21:09 [@FiFouille] gapz: ouep, man test c'est encore plus clair :p 21:10 [@gapz]: :-) 21:10 [@gapz]: bon maintenant nous allons parler d'un outil surpuissant que va vous présenter FiFouille 21:10 [@gapz]: j'ai nommé les expressions régulières 21:10 [@gapz]: allez FiFouille, à toi ! 21:10 [ animimotus]: lol 21:11 ::: mode/#ubuntu-fr-classroom [+o skateinmars] by ChanServ 21:11 ::: mode/#ubuntu-fr-classroom [+m] by skateinmars 21:11 ::: mode/#ubuntu-fr-classroom [-o skateinmars] by skateinmars 21:12 [@FiFouille]: bon, alors, c'est maintenant que tout le monde part normalement 21:12 ::: leo__ [n=leo@mon75-7-82-228-48-95.fbx.proxad.net] has joined #ubuntu-fr-classroom 21:12 ::: shadok [n=shad@unaffiliated/shadok] has left #ubuntu-fr-classroom [] 21:12 ::: shadok [n=shad@unaffiliated/shadok] has joined #ubuntu-fr-classroom 21:12 [@FiFouille]: les expressions rationnelles donc, souvent appelées expressions régulières, regex ou regular expressions 21:12 [@FiFouille]: alors c'est simple, c'est une notation qui permet de décrire des chaînes de caractères 21:12 [@FiFouille]: ça permet d'en reconnaître ou de les manipuler 21:13 [@FiFouille]: accessoirement ça permet aussi (d'impressioner|de traumatiser) (sa copine|ses copains|son patron) 21:13 ::: mode/#ubuntu-fr-classroom [+v shadok] by gapz 21:13 [@FiFouille]: pour commencer on va attaquer la chose avec des exemples simple, on va chercher au dictionnaire 21:13 [@FiFouille]: notre dictionnaire ici, sera /usr/share/dict/french 21:13 [@FiFouille]: premier exemple, les verbes en 'er' 21:14 [@FiFouille]: alors il nous faut parcourir le fichier en question, et sortir chaque ligne qui se finit par 'er' 21:14 [@FiFouille]: l'outil utilisé : grep 21:14 [@FiFouille]: grep 'er$' /usr/share/dict/french 21:14 [@FiFouille]: tout simplement 21:14 [@FiFouille]: et l'opérateur $ sert donc pour signaler la fin de ligne 21:14 ::: mode/#ubuntu-fr-classroom [-m] by FiFouille 21:15 [@FiFouille]: tout le monde a testé ? ça sort ce que ça doit ? 21:15 [@FiFouille]: bon, sinon, comme d'hab, des questions ? 21:15 [ animimotus]: ouep 21:15 [@FiFouille]: animimotus: oui ? 21:15 [@gapz]: parfait :-) 21:15 [ animimotus]: (non je disais oui ça marche :p) 21:16 [@FiFouille]: en fait y'en a plus qu'un qui suit, c'est encore mieux que prévu :p 21:16 [@FiFouille]: bon, je continue sans le mute, c'est plus agréable 21:16 [ Phlogistique]: mh, il semble que notre dico soit pas en UTF8 oO 21:16 [ animimotus]: Phlogistique: c'est ce que je me disais 21:16 [+Adri2000]: /usr/share/dict/french: ISO-8859 C program text 21:16 [@FiFouille]: pour les gens qui n'ont pas d'utf-8, une solution 21:16 [+Adri2000]: :) 21:16 [ leo__]: Effectivement... 21:16 [ Yumi`]: ouai 21:16 ::: mode/#ubuntu-fr-classroom [+m] by FiFouille 21:17 [@FiFouille]: iconv -f ISO-8859-15 -t UTF-8 /usr/share/dict/french > /tmp/french.utf8 21:17 [@gapz]: :) 21:17 ::: mode/#ubuntu-fr-classroom [-m] by FiFouille 21:17 [ leo__]: et apres ya les accents ? 21:17 [@FiFouille]: donc iconv va transformer en allant d'un encoding ISO vers UTF et rediriger vers /tmp/french.utf8 21:17 [@FiFouille]: application de ce qu'on a vu avec gapz ;) 21:17 [@FiFouille]: donc maintenant, on fera 21:17 [ animimotus]: cp ? 21:18 [@FiFouille]: grep 'er$' /tmp/french.utf8 21:18 [@FiFouille]: animimotus: cp ? pour faire quoi ? 21:18 [ xorg62]: cp copier coller je croi non? 21:18 [ animimotus]: bah ça redirige dans tmp ? 21:18 [ Phlogistique]: CoPy 21:18 [ Phlogistique]: pour CoPier les fichiers 21:19 [@FiFouille]: animimotus: oui, tu vas avoir un fichier dans /tmp/ appelé french.utf8 et qui sera dans le bon encoding/charset 21:19 [ animimotus]: (lol mais je sais pour cp :p) 21:19 [ leo__]: :p 21:19 [ animimotus]: FiFouille: bah on écrase pas l'ancien ? oO 21:19 [@FiFouille]: il faut savoir que iconv sort le document 'transformé' sur la sortie standard et on redirige dans un fichier 21:19 [ Phlogistique]: FiFouille: encodage plutôt :p 21:19 [ animimotus]: (hs, je sais) 21:19 [@FiFouille]: animimotus: on casse pas l'existant, c'est mal :p 21:19 ::: leo__ is now known as LVEB_ 21:20 [ animimotus]: arf :p 21:20 [@FiFouille]: Phlogistique: encodage pour unicode, charset pour 8859-15, mais bon, troll chut 21:20 [@FiFouille]: alors 21:20 [@FiFouille]: exemple deux maintenant 21:20 ::: LVEB is now known as LVEB__ 21:20 [@gapz]: hehe 21:20 [ Phlogistique]: animimotus: non, sinon les programmes qui utilisent l'ancien seraient tout désorientés 21:20 [@FiFouille]: on voudrait ce qui _commence_ par asbol 21:20 [@FiFouille]: grep '^asbol' /tmp/french.utf8 par exemple 21:21 ::: LVEB_ is now known as LVEB 21:21 ::: daniel44 [n=daniel44@lns-bzn-29-82-248-245-28.adsl.proxad.net] has joined #ubuntu-fr-classroom 21:21 [ LVEB]: :) 21:21 [@FiFouille]: vous l'aurez compris, ^ c'est le début de la ligne 21:21 [@FiFouille]: maintenant si vous voulez avoir _exactement_ la ligne contenant 'coucou' 21:22 [@FiFouille]: elle doit commencer par coucou et finir par coucou, tout simplement 21:22 [@FiFouille]: grep '^coucou$' /tmp/french.utf8 21:22 [ LVEB]: 21:22 [@FiFouille]: alors maintenant, l'opérateur '.' 21:23 [@FiFouille]: en fait . représente n'importe quel caractère 21:23 [@FiFouille]: exemple, les mots de 4 lettres commençant par t et finissant par t 21:23 [@FiFouille]: grep '^t..t$' /tmp/french.utf8 21:24 [ animimotus]: grep '^asbol' /tmp/french.utf8 <------- ne renvoit rien, les mots en asbol- sont rares en français, sauf si on a de la chance :) 21:24 [@FiFouille]: tout le monde se retrouve avec tout, trot, tort, toit, test, ... ? 21:24 [@FiFouille]: animimotus: tu es sur que ton fichier /tmp/french.utf8 est rempli ? 21:24 [@FiFouille]: animimotus: moi j'ai une dizaine de sorties 21:24 [ animimotus]: $ grep '^bol' /tmp/french.utf8 marche chez moi 21:25 [ animimotus]: asbol, j'ai pas d'bol :) 21:25 [@FiFouille]: argl 21:25 [@FiFouille]: oui non, grep '^absol' en fait 21:25 [ animimotus]: ah 21:25 [@FiFouille]: ça m'apprendra à pas faire de copier coller de mon texte :p 21:25 [ animimotus]: cf gapz :p 21:25 [ LVEB]: @fifouille oui 21:25 [ Phlogistique]: Moi j'ai rien qui commence par asbol :'( 21:25 [@FiFouille]: bon, jusqu'à présent tout le monde suit ? 21:26 [ animimotus]: oui 21:26 [ Phlogistique]: oui 21:26 [ animimotus]: (la preuve :p) 21:26 [ LVEB]: oui 21:26 [@FiFouille]: absol ... ument, ution, u désolé pour l'erreur 21:26 [@gapz]: :] 21:26 [ Yumi`]: oui 21:26 [@FiFouille]: petite récap, ^ début, $ fin, . n'importe quel caractère 21:26 [ animimotus]: ok 21:26 [ LVEB]: ok 21:26 [@FiFouille]: bon, maintenant il y a des 'modificateurs' 21:26 [ Yumi`]: ok 21:27 [ animimotus]: . comme wilcard, et non * 21:27 [@FiFouille]: *, + et ? 21:27 ::: clem-vangelis_ [n=vangelis@AOrleans-152-1-194-218.w90-21.abo.wanadoo.fr] has left #ubuntu-fr-classroom ["Quitte"] 21:27 [@FiFouille]: * c'est 0 ou plus caractères 21:27 [@FiFouille]: + 1 ou plus 21:27 [@FiFouille]: ? 0 ou 1 21:27 [@FiFouille]: exemple 21:27 [@FiFouille]: n'importe quel mot qui commence par 't' et finit par 'tant' 21:27 ::: Matbox [n=Matbox@AVelizy-154-1-48-232.w82-124.abo.wanadoo.fr] has quit ["Quitte"] 21:27 [@FiFouille]: grep '^t.*tant$' /tmp/french.utf8 21:28 ::: daniel44 [n=daniel44@lns-bzn-29-82-248-245-28.adsl.proxad.net] has left #ubuntu-fr-classroom ["Kopete 0.12.3 : http://kopete.kde.org"] 21:28 [@FiFouille]: ^t commence par t tant$ fini par tant et au milieu, 0 ou plusieurs fois n'importe quoi (le . ) 21:28 [ animimotus]: (les participes présent, on dit :) 21:28 ::: xorg62 [n=martin@Mix-Lille-205-2-4.w193-249.abo.wanadoo.fr] has quit [Read error: 104 (Connection reset by peer)] 21:29 [@FiFouille]: tout le monde qui se taille, trop fort ;) 21:29 [ LVEB]: et d* c'est 0 ou x fois d ? 21:29 [@FiFouille]: LVEB: exactement ;) 21:29 [@gapz]: FiFouille: c'est une question :] 21:29 [ animimotus]: (merki pour cette partie du cours, perso j'adore :) 21:30 [ LVEB]: moi aussi 21:30 [ animimotus]: (j'avais des questions sur sed cette semaine) 21:30 [ animimotus]: (hs) 21:30 [@gapz]: animimotus: tu adores les expressions régulières ? Et encore, il existe encore pas mal de truc ;-) 21:30 [@gapz]: la plupart du temps c'est rebutant en fait 21:30 [@FiFouille]: animimotus: ça vient plus tard justement 21:30 [ animimotus] gapz: bah pour les plus usuelles, j'aimerais bien les matrîser, oui :) pas forcément les regexp étendues ^^ 21:31 [@FiFouille]: donc on récap encore une fois 21:31 [@FiFouille]: ^ $ début fin, . n'importe quoi 21:31 [ Yumi`]: jadore aussi FiFouille :) c'est genial =) 21:31 [@FiFouille]: * {0,n} + {1,n} ? {0,1} 21:31 [ LVEB]: Yumi`: +1 21:31 [ animimotus]: Yumi`: homotextuel, va :p 21:31 [ Yumi`]: lol 21:31 [ Phlogistique]: Mais les PEG saimieu :p 21:31 [@FiFouille]: alors maintenant on peut faire des 'comptages' différents 21:31 [ LVEB]: loooooooool 21:32 ::: xorg62 [n=martin@Mix-Lille-205-2-4.w193-249.abo.wanadoo.fr] has joined #ubuntu-fr-classroom 21:32 [ Phlogistique]: (sauf que il n'y a aucun programme correct pour les utiliser facilement) 21:32 [@FiFouille]: genre 'm{1,2}' 21:32 [@FiFouille]: ça affiche les mots avec une fois m ou bien mm deux fois de suite 21:33 [@FiFouille]: ça marche chez tout le monde ? 21:33 [ animimotus]: yep 21:34 [@FiFouille]: animimotus: m{1,2} ? 21:34 [ LVEB]: non 21:34 [@FiFouille]: LVEB: hhaaaa 21:34 [@FiFouille]: bon alors, là justement on vient de tomber sur une expressions régulière étendue 21:34 [@FiFouille]: donc si vous voulez que ça marche grep -E ou egrep 21:34 [@FiFouille]: c'est justement le piège ;) 21:34 [ LVEB]: c'est bien grep 'm{1,2}' /tmp/french.utf8 ? 21:35 [@FiFouille]: LVEB: essaie avec egrep ou en faisant grep -E ça ira ;) 21:35 [ animimotus]: LVEB: avec -E devant 21:35 [ Yumi`]: c'est quoi -E 21:35 [ animimotus]: bis 21:35 [@FiFouille]: donc justement, faire attention quand on fait des bidules plus ou moins complexe de pas perdre du temps pour une bêtise pareille 21:35 [ LVEB]: pourquoi ca marche ? 21:35 [@FiFouille]: (ça m'arrive souvent) 21:35 [ animimotus]: Yumi`: pour passer en étendu 21:35 [ LVEB]: ah... 21:35 [ Yumi`]: ok 21:35 [@FiFouille]: y'a les expressions régulières de base, et les étendues 21:36 [@FiFouille]: m{1,2} c'est une étendue justement 21:36 [ animimotus]: FiFouille: on peut pas utiliser egrept de manière générique, du coup ? 21:36 [@FiFouille]: donc faut spécifier d'activer le support 21:36 [@gapz]: et en l'occurence grep ne gère pas nativement les étendues 21:36 [@FiFouille]: ben justement 21:36 [ animimotus]: * egrep 21:36 [ LVEB]: on peut les trouver ou ces expresiions ? 21:36 [@FiFouille]: les expressions régulières étendues c'est complexe 21:36 [@FiFouille]: et qui dit complexe dit lent 21:36 [ animimotus]: lent à traiter ? 21:37 [@FiFouille]: donc si on veut faire un script qui gère 10 000 fichiers et qu'on fait juste des regex de base, on veut pas se taper la lenteur des étendues pour autant 21:37 [ animimotus]: ok 21:37 [@FiFouille]: LVEB: je passerai une série de lien une fois fini ;) 21:37 [@FiFouille]: alors, un exemple 'ludique' 21:37 [ LVEB]: merci 21:37 [@FiFouille]: vous savez tous que les noms de domaine en .eu sont sortis il y a qque temps 21:37 [@FiFouille]: on veut se taper un délire et voir les mots français qui ont un sens 21:37 [ animimotus]: deux ans, oui :) 21:38 [@FiFouille]: alors, on fait quoi ? 21:38 [@FiFouille]: grep '^.*eu[xt]$' /tmp/french.utf8 21:38 [@FiFouille]: tout ce qui se termine en eux ou eut 21:38 [ animimotus]: ah pas mal ^^ 21:38 [@FiFouille]: http//chatouill.eu ça pête non ? ;) 21:38 [ animimotus]: www.voluptu.eu 21:38 [ animimotus]: ^^ 21:39 [ animimotus]: je t'ai vu venir :) 21:39 [ LVEB]: ^^ 21:39 [@FiFouille]: bon alors, je suis désolé, mais avec ça boitam.eu ne sera pas listé 21:39 [@FiFouille]: en meme temps, tant pis, il est déjà pris ;) 21:39 [ LVEB]: del.ici.eu 21:39 [@FiFouille]: LVEB: aussi ;) 21:39 [@FiFouille]: bon alors, ça commence par n'importe quoi 21:40 [@FiFouille]: ^.* 21:40 [ animimotus]: (ils sont malins ces geeks ultimes :p) 21:40 [@FiFouille]: et suivi de 'eu' 21:40 [@FiFouille]: oui mais alors que tout le monde se dit, c'est quoi [xt] ? 21:40 [@FiFouille]: ben c'est simple, c'est soit x soit t ;) 21:40 ::: DracarD [n=j@11.red-62-57-21.user.auna.net] has joined #ubuntu-fr-classroom 21:40 [@FiFouille]: un autre exemple idiot mais pour illuster 21:41 [@FiFouille]: vous voulez les jeux pour kde ou gnome (c'est pas infaillible tout de même) 21:41 [@FiFouille]: apt-cache search games | grep '^[gk]' 21:41 [@FiFouille]: ça commence par g ou k 21:41 [@FiFouille]: tout le monde comprend là ? 21:42 [ animimotus]: oui 21:42 [ LVEB]: :) Tu es un prof exeptionnel ! 21:42 [@FiFouille]: mon public fond comme neige au soleil, la fête ;) 21:42 [@FiFouille]: LVEB: attends, t'as pas encore vu la fin, tu diras plus ça après :p 21:42 [ Phlogistique]: Bouh 21:42 ::: DracarD [n=j@11.red-62-57-21.user.auna.net] has quit [Client Quit] 21:42 [ LVEB]: ^^ 21:43 [ Phlogistique]: apt-cache search prend des regexp 21:43 [ animimotus]: LVEB: j'osais pas le dire de peur qu'on se dise que vraiment j'étais qu'un sale lèche-bottes :p 21:43 ::: The_Marauder [n=The_Mara@cam44-1-82-67-123-151.fbx.proxad.net] has quit [Remote closed the connection] 21:43 [@FiFouille]: Phlogistique: mais chut toi :p 21:43 [ Phlogistique]: donc apt-cache search games '^[gk]' 21:43 [ animimotus]: FiFouille: un grep avec game plutôt ? 21:43 ::: bakalegum [n=baka@84.12.76.86] has joined #ubuntu-fr-classroom 21:43 [ animimotus]: (oops) 21:43 [ Phlogistique]: oO ça marche pas 21:43 [@FiFouille]: Phlogistique: oui non, dans ce cas là, non 21:44 [@FiFouille]: Phlogistique: là il vas sortir toutes les lignes qui correspondent, même dans la description 21:44 [@FiFouille]: Phlogistique: il traite le nom du paquet ET la description, mais soit, on en parlera plus tard :p 21:44 [ animimotus]: apt-cache search game ? :p 21:44 [ animimotus]: (pas infaillble non plus) 21:44 [@FiFouille]: animimotus: ça cherche donc tout ce qui parle de game 21:45 [@FiFouille]: et après on filtre pour avoir des paquets qui commencent par g ou k 21:45 [@FiFouille]: typiquement les trucs de gnome ou kde 21:45 [ animimotus]: ah ok 21:45 [@FiFouille]: bon, un autre exemple (et celui là il est vraiment forcé) 21:45 [@FiFouille]: on veut les jeux, mais avec un paquet commencant ni par g ni par k 21:45 [ animimotus]: gcompris-sound-fr - French sound files for GCompris 21:45 [@FiFouille]: apt-cache search games | grep '^[^gk].*' | grep -v '^lib' 21:46 [@FiFouille]: (on va parler de la fin juste après) 21:46 [ Yumi`]: erf jai louper une etape :( 21:46 [@FiFouille]: donc, ça commence par [^gk] 21:46 [@FiFouille]: et justement, quand on a un ensemble entre [] qui commence par ^, c'est l'inverse qu'on veut 21:46 [@FiFouille]: donc ça commence ^ ni par g ni par k [^gk] 21:47 [@FiFouille]: et comme ça renvoie vraiment bcp bcp de résultats, donc des bibliothèques dont on se fiche un peu, on filtre 21:47 [@FiFouille]: on filtre avec grep -v '^lib' 21:47 [@FiFouille]: et le flag -v dit "sortir les lignes qui ne correspondent pas à la condition" 21:47 [@FiFouille]: donc on affiche que si ça ne commence pas par 'lib' 21:48 [@FiFouille]: j'en ai pas perdu sur ce coup là ? ;) 21:48 [ LVEB]: un peu... 21:48 [ LVEB]: ^^ 21:48 [@FiFouille]: LVEB: qu'est ce qui va pas ? ;) 21:49 [ animimotus]: FiFouille: donc qui ne commence ni par g, ni par k, ni par lib ? 21:49 [@FiFouille]: animimotus: voila, on filtre d'abord sur ni g ni k, puis sur 'pas lib' ;) 21:49 [ LVEB]: J'ai compris mais je trouve que c'est un peu moin limpide que les exemples precedents (pour mon cas) 21:49 [@FiFouille]: bon, je vous rassure, c'est presque fini ;) 21:50 [@gapz]: :) 21:50 [ LVEB]: ^^ 21:50 [@FiFouille]: LVEB: c'est justement le problème des regex, ça se complique vite 21:50 [ animimotus]: snif :'( 21:50 [@gapz]: très vite 21:50 [ LVEB]: :o) 21:50 [ Yumi`]: bah moi jai rien compris merci maman qui soule ! :( 21:50 [ animimotus]: FiFouille: question pour un champion :) 21:50 [@FiFouille]: bon alors, on a vu ^, $, ., ?, *, +, {}, [] et [^] 21:50 [@FiFouille]: ça fait pas mal non ? ;) 21:51 [ LVEB]: Yumi`: maman ?! 21:51 [@FiFouille]: on va encore en voir un autre 21:51 [@FiFouille]: () 21:51 [@FiFouille]: alors il a deux utilités, on va voir la plus simple 21:51 [@FiFouille]: un exemple (artificiel mais simple) 21:52 [@FiFouille]: ls / | grep -E '^m(edia|root)' 21:52 [ animimotus]: FiFouille: comment savoir si dans le fichier /etc/config.txt il y a une chaîne qui s'appelle "kikoo" et si oui, remplacer toute la ligne par "#kikoolol" ? :) 21:52 [ animimotus]: (c'était ma question de la semaine :p) 21:52 [@FiFouille]: animimotus: sed, on voit ça juste après ;) 21:52 [ animimotus]: ok 21:52 [@FiFouille]: tout le monde a essayé ls / | grep -E '^m(edia|root)' ? 21:53 [ animimotus]: ouep 21:53 [@FiFouille]: (enfin, les 2 3 qui restent :p ) 21:53 [ Phlogistique]: Tout le monde 21:53 [ LVEB]: oui 21:53 [ animimotus]: et de 3 ^^ 21:53 [@FiFouille]: bon alors, question ouverte, ça cherche quoi ce truc ? ;) 21:53 [ Yumi`]: oui 21:53 [ bakalegum]: (je vien d arriver maisje sui tres attentif :p ) 21:53 [@gapz]: bakalegum: :) 21:53 [ LVEB]: :) 21:53 [ Phlogistique]: les fichiers dont le nom commence par media ou mroot 21:54 [ Phlogistique]: mais bon, je me demande ce que foutrait à la racine un fichier dont le nom commence par mroot oO 21:54 [@FiFouille]: Phlogistique: fantastique 21:54 [@FiFouille]: ben justement, maintenant essayez sans les () 21:54 [ Yumi`]: jai pas de mroot moi :/ 21:54 [@gapz]: le piège à deux balles FiFouille 21:54 [@FiFouille]: ls / | grep -E '^media|root' 21:54 [@gapz]: mroot :] 21:54 [ animimotus]: Yumi`: :p 21:55 [@gapz]: Yumi`: personne l'a 21:55 [@FiFouille]: donc c'est simple, () permet d'isoler un groupement, on voulait isoler edia|root de ^m 21:55 [ Yumi`]: <== boulet mdr 21:55 [@FiFouille]: sinon, impossible de pouvoir distinguer les deux membres edia et root 21:55 [@FiFouille]: et donc, dans ce cas ci, vous l'aurez compris, | c'est OU 21:56 [@FiFouille]: grep -E '^m(edia|root)' 21:56 [@FiFouille]: commence par media OU mroot 21:56 [ animimotus]: ls / | grep "boulet" me renvoit Yumi`, c'est normal ? :p 21:56 [@FiFouille]: grep -E '^media|root' 21:56 [@FiFouille]: commence par media OU root 21:56 [ Yumi`]: mdr animimotus 21:56 ::: Tartopom [n=Tartopom@ip-192.net-82-216-243.rev.numericable.fr] has quit ["A plus là"] 21:56 [ LVEB]: ^^ 21:56 [@FiFouille]: voila, ça termine la partie sur grep et les regex de base 21:57 [@FiFouille]: j'en ai une autre sur sed, si gapz trouve qu'on a le temps on peut continuer, sinon ça sera après qu'il finisse sa partie sur bash 21:57 [@FiFouille]: des questions, remarques ? 21:57 ::: LVEB__ is now known as tartetatin 21:57 [@gapz]: FiFouille: bas y continu 21:57 [@FiFouille]: bon, alors, on va passer sed en revue alors (bases aussi) 21:57 [ bakalegum]: ok :) 21:57 [@gapz]: sed c'est important, et je passerais rapidement sur les structures de contrôles 21:58 [@FiFouille]: toujours pas de questions, je vous laisse le temps d'en trouver si vous voulez ;) 21:58 ::: tartetatin is now known as LVEB_ 21:58 [ animimotus]: FiFouille: comment savoir si dans le fichier /etc/config.txt il y a une chaîne qui s'appelle "kikoo" et si oui, remplacer toute la ligne par "#kikoolol" ? :) 21:58 [@gapz]: de toute façon je suis pas sur que quelqu'un les connaisse pas apparament 21:58 [ Yumi`]: mr mr mr je peux aller au toilette :p 21:58 [@FiFouille]: tu reliras après :p 21:58 [@FiFouille]: bon alors, sed, la tronche d'une utilisation classique 21:58 [@FiFouille]: sed -e 'expression' [-e 'expression] [fichier] ou bien 21:58 [@FiFouille]: echo "du texte" | sed 'une_seule_expression' 21:59 [@FiFouille]: bon, un exemple tout bête pour commencer 21:59 [@FiFouille]: echo "remi.laurent@gmail.com" | sed 's/@/ at /' | sed 's/\./ pOiNt /' 21:59 [@FiFouille]: s/// c'est ce qu'on appelle la substitution 21:59 [@FiFouille]: donc ici, on remplace @ par ' at ' 21:59 ::: iKs [n=iks@mna75-9-82-243-59-107.fbx.proxad.net] has joined #ubuntu-fr-classroom 22:00 [@FiFouille]: et . par pOiNt 22:00 [@FiFouille]: alors évidement, ici, . doit être considéré comme _le caractère_ . 22:00 [@FiFouille]: et donc, on l'échappe (comme on dit dans le milieu) 22:00 [ animimotus]: FiFouille: si c'était un sed pour pas se faire spammer, c'est raté :p 22:00 [@FiFouille]: on le précède de \ 22:00 [@FiFouille]: on aurait voulu remplacer / ou aurait fait s/\//slash/ 22:00 [@FiFouille]: pour remplacer / par slash 22:01 [@FiFouille]: animimotus: j'en ai déjà suffisament du spam ;) 22:01 [@FiFouille]: animimotus: un peu plus ou moins .. pareil 22:01 [@gapz]: ça s'appel l'échapement :) 22:01 [ LVEB]: :) 22:01 [@FiFouille]: echo "remi.laurent@gmail.com" | sed 's/@/ at /' | sed 's/\./ pOiNt /' 22:01 [@FiFouille]: remi pOiNt laurent at gmail.com 22:01 [ Yumi`]: mouai on va relire et relire 22:01 [@FiFouille]: simple non ? ;) 22:01 [ LVEB] gapz: le fait de remplacer == echapement ? 22:01 [ animimotus]: clair 22:01 [@FiFouille]: alors ici, encore une fois exemple de la plomberie avec | 22:01 [@gapz]: non le \. 22:02 [@FiFouille]: on peut le faire aussi 'plus propre' et plus rapide comme ceci 22:02 [@gapz]: pour que . soit considéré comme un caractère 22:02 [@FiFouille]: echo "remi.laurent@gmail.com" | sed -e 's/@/ at /' -e 's/\./ pOiNt /' 22:02 [@FiFouille]: vous pouvez l'essayer, ça fait (j'espère) la même chose 22:02 [ iKs]: Marde j'avais oublié le cours de ce soir.. 22:03 [ iKs]: ya un ptit resumé sur le wiki deja ou pas ? 22:03 [@FiFouille]: iKs: je pense pas, mais bon, attrape le truc au vol sinon ;) 22:03 [@gapz]: iKs: non mais si tu veux le log sera bientôt en ligne 22:03 [ iKs]: OK 22:03 [ Yumi`]: ou ça en ligne gapz ? 22:03 [@FiFouille]: des questions jusqu'à maintenant ? 22:03 [ iKs]: Et vous avez vraiment fait de l'initiation* 22:03 [@FiFouille]: iKs: oui 22:03 [@gapz]: Yumi`: je sais pas encore ;-) 22:04 [@FiFouille]: bon, sinon, pour les retardataires, j'ai mon cours ici, mais pas formaté toussa 22:04 [ iKs]: ou ya des trucs avancés ? (et c'est toujours pas finit 1H30 après ? oO) 22:04 [ Yumi`]: ok =) 22:04 [@FiFouille]: http://www.fifi.be/~fifi/regex.txt 22:04 [@FiFouille]: et maintenant, chut :p 22:04 [@gapz]: je ferais tourner l'url t'en fais pas 22:04 [ iKs]: Je me tais ^^ 22:04 [@FiFouille]: des questions ? 22:04 ::: ktulu77 [n=theo@chs77-1-82-238-8-65.fbx.proxad.net] has joined #ubuntu-fr-classroom 22:04 [@gapz]: iKs: non et pourtant y a pas eu beaucoup d'intervenant 22:04 [ animimotus]: FiFouille: y'a moyen de remplacer toutes les occurences du . en mm temps ? 22:04 [@FiFouille]: animimotus: comme tu es trop fort 22:04 [ animimotus]: dans la commande echo "remi.laurent@gmail.com" | sed -e 's/@/ at /' -e 's/\./ pOiNt /' ? 22:04 [@FiFouille]: c'est la ligne juste après ;) 22:05 [ animimotus]: ah :) 22:05 [ ktulu77]: coucou tout le monde 22:05 [@FiFouille]: echo "remi.laurent@gmail.com" | sed -e 's/@/ at /' -e 's/\./ pOiNt /g' 22:05 [ ktulu77]: jcrois que j'ai raté le cours 22:05 [@FiFouille]: ktulu77: non, t'es en plein dedans, chut :p 22:05 [@gapz]: ktulu77: pas tout à fait finis 22:05 [ animimotus]: ktulu77: t'as changé de pseudo, boddha ? oO 22:05 [@FiFouille]: et donc s///g fait la substitution non pas une seule fois, mais autant de fois que nécessaire 22:05 [@FiFouille]: g == global 22:05 [ ktulu77]: animimotus: hein ?? non attend il faut pas parler pendant les cours 22:06 [@FiFouille]: si vous essayez vous obtiendeez remi pOiNt laurent at gmail pOiNt com 22:06 [@FiFouille]: s/ee/re/ 22:06 [@FiFouille]: et en même temps vous comprennez enfin cette 'blague' de geek à base de s/erreur/correction/ :p 22:06 [+shadok]: woo comment il est long le cours, chapeau :) 22:06 [@FiFouille]: on la voit pas mal passer sur irc 22:07 [ Phlogistique]: et sur linuxfr.org, mais c'est pas une blague 22:07 [@FiFouille]: alors maintenant, réponse à animimotus 22:07 [@FiFouille]: comment savoir si dans le fichier /etc/config.txt il y a une chaîne qui s'appelle "kikoo" et si oui, remplacer toute la ligne par "#kikoolol" ? :) 22:07 [ animimotus]: :) 22:07 [@gapz]: shadok: on pourrais finir demain matin si on continuait comme ça :-P 22:07 [@FiFouille]: et bien c'est simple 22:07 [ iKs]: trop utile xD 22:07 [+shadok] gapz: clair ^^ 22:07 [@FiFouille]: sed 's/kikoo/#kikoolol/g' /etc/config.txt 22:08 [@FiFouille]: (si j'ai pas 'merdé' ;) ) 22:08 [ iKs]: sed renvoit une valeur ? 22:08 [ animimotus]: -e ? 22:08 [ iKs]: pour savoir si ca y est ou pas.. 22:08 [@FiFouille]: animimotus: -e c'est si t'as plusieurs expressions 22:08 [@FiFouille]: avec une seule c'est pas nécessaire 22:08 [@FiFouille]: iKs: et sed renvoie sur la sortie standard le texte converti 22:08 [ iKs]: le e "stands" pour quoi ? 22:09 [@FiFouille]: -e(xpression) 22:09 [ iKs]: OK 22:09 [@FiFouille]: bon alors, pour ceux qui ont testé, on remarque que ça sort la transformation sur la sortie standard 22:09 [ iKs]: et si ya pas de texte à convertir, il renvoit rien ? 22:09 [@FiFouille]: pas pratique si on veut modifier le fichier en question 22:09 [@FiFouille]: iKs: s'il y a rien à convertir il renvoie le texte non modifié alors 22:09 [@FiFouille]: c'est vraiment un filtre, il renvoie tout, et il modifie si nécessaire 22:10 ::: NotRez [n=nk@laf31-5-82-235-131-142.fbx.proxad.net] has joined #ubuntu-fr-classroom 22:10 [@FiFouille]: pattern replacment comme on dit 22:10 [ iKs]: ah. Mais ca permet pdonc pas de savoir si ya eu modif ou pas.. 22:10 [ bakalegum]: faut rajouter un >/etc/config ? 22:10 [ iKs]: Enfin si la chaine etait pas 22:10 [ iKs]: là* 22:10 [ iKs]: ou s/pas/là/ xD 22:10 [@FiFouille]: bakalegum: pas forcément 22:10 ::: NotRez is now known as Rez\ 22:10 [@FiFouille]: pour sed, y'a le flag -i 22:10 [@FiFouille]: pour -i(n-place) 22:11 [@FiFouille]: ça modifie directement dans le fichier 22:11 ::: Yumi` [n=yumi@gob75-4-82-226-174-237.fbx.proxad.net] has quit ["Quitte"] 22:11 [@FiFouille]: man sed pour plus d'info ;) 22:11 [ LVEB]: bonjour Rez\ 22:11 [ iKs]: Et ca renvoie quand même le fichier ou pas ? (sur la sortie standard) 22:11 [ bakalegum]: dac 22:11 [@FiFouille]: iKs: et pour savoir si une chaîne est dans un fichier, grep c'est mieux (avec le flag -q(uiet) par exemple) 22:11 [@FiFouille]: bon, essayer 22:11 [@FiFouille]: s/r$/z/ 22:11 ::: Yumi` [n=yumi@gob75-4-82-226-174-237.fbx.proxad.net] has joined #ubuntu-fr-classroom 22:11 [@FiFouille]: faites vous un fichier texte de test, mettez des trucs dedans et lancez sed pour voir ce que ça donne 22:12 [@FiFouille]: y'a que ça de vrai, le test ;) 22:12 [@FiFouille]: si pendant ce temps là, y'a des questions, je suis preneur 22:12 [ LVEB]: Il est finit le cours ? 22:12 [@FiFouille]: LVEB: presque 22:12 [@FiFouille]: LVEB: enfin, pour ma partie ;) 22:12 [ LVEB]: ^^ 22:12 [ bakalegum]: j ai une question: 22:13 [@gapz]: ouais je vais pas trop étendre ce qu'il reste ça va faire lourd après 22:13 [@FiFouille]: bakalegum: ouip 22:13 [@gapz]: je vais juste parler de deux trois trucs vite fait alors 22:13 [ bakalegum]: alors la on rempalce kikoo par autre chose, mais il va remplacer kikoo dans sgjdkfgkikoodfsg ... coment faire pour qu il ne remplace que kikoo tout seul 22:13 [ animimotus]: echo " kikootest">kikoo.txt && cat kikoo.txt && sed 's/kikoo/#kikoolol/g' kikoo.txt 22:13 [ bakalegum]: (c pas clair :p) 22:14 [ animimotus]: echo " kikootest">kikoo.txt && cat kikoo.txt && sed 's/kikoo/#kikoolol/g' kikoo.txt && cat kikoo.txt && rm kikoo.txt 22:14 [ animimotus]: en fait je voulais la chaîne "kikoo", mais elle peut être perdue dans la ligne 22:14 [@FiFouille]: bakalegum: sed 's/\skikoo\s/ #kikoolol /' en bien gras pas vraiment propre 22:14 [@FiFouille]: \s remplace un espace (tabulation ou espace) 22:15 [ bakalegum]: ok 22:15 [ animimotus]: FiFouille: et n'importe quoi comme autre chaîne ? 22:15 [ animimotus]: avant, ou après 22:15 [ iKs]: * ? 22:15 [ animimotus]: non 22:15 [@FiFouille]: animimotus: tant que c'est une epxression régulière valide, tu mets tout ce que tu veux ;) 22:15 [@FiFouille]: bon, alors je vais encore donner un exemple qui peut vraiment bien servir 22:16 [ animimotus]: oui mais pour mon exemple ça faisait appel aux regexp étendue 22:16 [@FiFouille]: parfois vous voulez extraire du texte ou bien balader des morceaux de chaînes par ci par là 22:16 [@FiFouille]: alors, de nouveau, l'adresse email ;) 22:16 [@FiFouille]: echo "remi.laurent@gmail.com" | sed -r -e 's/gmail/googlemail/' -e 's/(.*)\.(.*)@(.*)/\2.\1@\3/' 22:16 ::: bakalegum is now known as remi_doubi 22:16 [@FiFouille]: (et c'est maintenant qu'on commence à avoir mal au crâne, et pourtant, c'est simple ;) ) 22:17 ::: filip_ [n=filip@APuteaux-153-1-61-101.w82-124.abo.wanadoo.fr] has quit ["Quitte"] 22:17 [ iKs]: J'ai compris :p 22:17 [@FiFouille]: laurent.remi@googlemail.com 22:17 [@FiFouille]: et voila la sortie 22:17 [ iKs]: Vive le PHP et les Regex sur ce coup :p 22:17 [ Phlogistique]: C'est plus lisible en Ruby :p 22:17 [ iKs]: 1. Remplacement de gmail par googlemail 22:17 [@FiFouille]: c'est toujours des regex, que ça soit du perl, ruby, python, php, java, ... 22:17 [ iKs]: 2. Inversement de remi et de laurent, ou plutot de ce qu'il y a avant et après le point 22:18 [ iKs]: FiFouille: oui mais la syntaxe diffère non ? 22:18 [@FiFouille]: ala, voila mon 'copier coller' du cours préparé 22:18 [ Phlogistique]: ouais mais il y a moyen d'écrire plus joliment les remplacements 22:18 [@FiFouille]: on change gmail en googlemail et on 'inverse autour' du point de remi.laurent 22:18 [ iKs]: Enfin pas sur tout, la preuve :) 22:18 [@FiFouille]: et d'autres exemples 22:18 ::: dim_m_ is now known as dim_m 22:18 [@FiFouille]: foo.bar@foobar.com -> bar.foo@foobar.com 22:18 [@FiFouille]: gmail.baz@fgmail.com -> baz.googlemail@gmail.com 22:18 [@FiFouille]: encore une fois, la substitution ne se fait qu'une fois, on a pas mis de /g pour s/gmail/googlemail/ 22:19 [ iKs]: On peut choisir un nombre de fois ? 22:19 [ iKs]: (et BTW, comme j'étaispas là au début, le s au départ il sers à quoi exactement ?) 22:19 [ animimotus]: oui et mm les lignes d'un fichier texte 22:19 [@FiFouille]: iKs: oui alors, là, sur le coup, je sais pas 22:19 [ animimotus]: * préciser les numéros de lignes 22:20 [@FiFouille]: iKs: avec un chiffre du peux spéficier quelle occurence changer par contre 22:20 [@FiFouille]: echo "moimoimoi" | sed 's/moi/toi/3' moimoitoi 22:20 [@FiFouille]: echo "moimoimoi" | sed 's/moi/toi/2' moitoimoi 22:20 [ iKs]: intéressant.. 22:20 [ iKs]: et si tu sépare par des virgules ? 22:20 [ iKs]: *é,3 ? 22:20 [ iKs]: 2,3 22:20 [ iKs]: ca amrche ca ? 22:21 [ iKs]: Non.. 22:21 [@FiFouille]: iKs: faudra essayer, comme ça, j'en ai aucune idée 22:21 ::: xorg62 [n=martin@Mix-Lille-205-2-4.w193-249.abo.wanadoo.fr] has quit [] 22:21 [@FiFouille]: iKs: doit y avoir moyen, mais faut retrouver 22:21 [@FiFouille]: donc bon, un exemple simple pour venir à nos moutons 22:22 [ animimotus]: commenter ou décommenter une ligne 22:22 [ animimotus]: dans un fichier de conf 22:22 [@FiFouille]: echo "remi.laurent" | sed -r 's/(.*)\.(.*)/\2.\1/' 22:22 [ LVEB]: simple, tu as dis simple ?!?!? 22:23 [@FiFouille]: donc, tout ce qui est avant le . (\.) est mis dans une 'variable' temporaire et pareil pour ce qui est après le . 22:23 [@gapz]: animimotus: sed 's/^#//' 22:23 [@gapz]: :] 22:23 [@FiFouille]: après, dans l'expression qui suit, on peut réutiliser \1 et \2 qui sont ces 'variables' 22:23 [@FiFouille]: c'est une expression régulière étendue, donc sed -r (et pas -E comme pour grep) 22:24 [ animimotus]: yes gapz mais ça serait pas mal de tester avant si la ligne a déjà été commentée, et sinon, appliquer le sed :) 22:24 [ LVEB]: FiFouille: tu trouve ca simple ?!? 22:24 [@FiFouille]: LVEB: bah, ça va 22:24 [@FiFouille]: animimotus: on verra juste après, chut :p 22:24 [@FiFouille]: une autre application exemple 22:24 [ remi_doubi]: j ai saisi 22:24 [@FiFouille]: et celui là vous allez l'aimer :p 22:24 * remi_doubi va chercher un verre de sprite pour feter ca 22:24 [ animimotus]: FiFouille: dis leur qu'on a pas révisé ton cours ensemble, ils vont croire à des trucs :p 22:25 [@FiFouille]: vous avez un dossier avec plein de musique dedans en mp3 22:25 [ iKs]: atta atta 22:25 [@FiFouille]: (Garanti sans trucage) 22:25 [ iKs]: c'est quoi la différence entre simple et etendu ? ^^ 22:25 [ iKs]: +e 22:25 [@FiFouille]: iKs: regarde mon cours ou les logs 22:25 [ iKs]: ok je regarderai ;) 22:25 [@FiFouille]: mais en général les trucs en () {} c'est des étendues, mais faut lire les man pour bien repérer lesquels sont quoi, je les connais pas par coeur 22:26 [@gapz]: iKs: d'une manière générale tu peux faire moins de chose avec les basic qu'avec les étendues quoi 22:26 [ animimotus]: lol 22:26 [@FiFouille]: bon, j'en reviens à mon exemple 22:26 [ animimotus]: une commande étendue est celle qui... est longue à taper ou tient sur deux lignes :p 22:26 [@FiFouille]: LVEB: tu vas pouvoir mieux comprendre je pense 22:26 [@FiFouille]: on a notre dossier, et dedans, plein de mp3 avec le même schéma de nommage 22:27 [@FiFouille]: un exemple de fichier 22:27 [@FiFouille]: Knoklezout_au_taquet-Jamendo-David_TMX.mp3 22:27 [@gapz]: :) 22:27 [@FiFouille]: alors bon, on aime bien Jamendo, mais la pub pour leur site en plein milieu c'est pas marrant 22:27 [ LVEB]: ^^ 22:27 [@FiFouille]: et aussi, le titre avant le chanteur, on aime pas ça 22:27 [@FiFouille]: alors quoi ... on voudrait bien avoir qqch comme ça 22:27 [@FiFouille]: David_TMX - Knoklezout_au_taquet.mp3 22:27 [ remi_doubi]: ^^ 22:27 [@FiFouille]: oh ben ... rien de plus simple en fait 22:28 [ animimotus]: easytag :p 22:28 [@FiFouille]: on va utiliser rename(1) qui vient avec perl(1) 22:28 [ remi_doubi]: lol 22:28 [@FiFouille]: rename 's/^(.*)-Jamendo-(.*)\.mp3/$2_-_$1.mp3/' *.mp3 22:28 [@FiFouille]: on met ce qui est avant -Jamendo dans la variable $1 et après dans la varialbe $2 (mais on ne prend pas .mp3) 22:28 [ remi_doubi]: arf 22:28 ::: trucutu [n=fabrice@AToulouse-252-1-57-183.w83-200.abo.wanadoo.fr] has joined #ubuntu-fr-classroom 22:29 [@FiFouille]: après, c'est simple, on les remet où il faut, on met ce qu'il faut au milieu pour séparer et le .mp3 à la fin 22:29 ::: mr_pouit [n=mr_pouit@lns-bzn-49f-81-56-214-84.adsl.proxad.net] has joined #ubuntu-fr-classroom 22:29 [ remi_doubi]: putain j ai compris, je pourais pas encore le refaire mais j ai compris 22:29 [@gapz]: mr_pouit: \o/ 22:29 [ mr_pouit]: o/ gapz 22:29 [@FiFouille]: oui et, la sortie c'est David_TMX_-_Knoklezout_au_taquet.mp3 en fait 22:29 [ mr_pouit]: o/ les gens 22:29 [@FiFouille]: désolé pour la coquille 22:29 [@FiFouille]: donc je reprends 22:29 [@FiFouille]: Knoklezout_au_taquet-Jamendo-David_TMX.mp3 22:29 ::: mode/#ubuntu-fr-classroom [+v mr_pouit] by gapz 22:29 [@FiFouille]: rename 's/^(.*)-Jamendo-(.*)\.mp3/$2_-_$1.mp3/' *.mp3 22:29 [ LVEB]: il va falloir que je relise tout ca ... 22:29 [@FiFouille]: David_TMX_-_Knoklezout_au_taquet.mp3 22:30 ::: Rez\ is now known as Rez\\ 22:30 [ animimotus]: (ça devient complexe l'air de rien ^^) 22:30 [@gapz]: animimotus: mais la puissance est là quoi :-) 22:30 [ iKs]: FiFouille: rename renomme les fichiers dans le dossier courant ? 22:30 [@FiFouille]: alors si vous êtes pas sur de votre coup, rien de plus simple 22:30 * animimotus admire 22:30 [@FiFouille]: vous faites rename -n 's///' 22:30 [@FiFouille]: il va vous montrer ce qu'il compte faire, sans le faire 22:30 [@FiFouille]: très pratique ;) 22:31 [ remi_doubi]: donc la ca donne quoi si on veut previsualiser avc l'exemple? 22:31 [@FiFouille]: donc sinon c'est pareil que sed, sauf que on utilise $1 $2 $3 ... au lieu de \1 \2 \3 pour les variables temporaires 22:31 [ LVEB]: pas con effectivement 22:31 [@FiFouille]: (et on peut en avoir au maximum 9, pas plus) 22:31 [ animimotus]: -n pour pas appliquer ? 22:31 [@FiFouille]: remi_doubi: c'est sur http://www.fifi.be/~fifi/regex.txt si vous voulez revoir certains parties et les exemples qui vont avec 22:32 [@FiFouille]: animimotus: ouep 22:32 [ animimotus]: -n, --no-act 22:32 [ animimotus]: No Action: show what files would have been renamed. 22:32 [ animimotus]: merki man 22:32 [@FiFouille]: bon, le mot de la fin :p 22:32 ::: mode/#ubuntu-fr-classroom [+m] by FiFouille 22:32 [@FiFouille]: Bon, vous l'aurez compris, les expressions rationnelles on peut en parler des heures 22:32 [@FiFouille]: J'espère ne pas vous avoir dégoûté avec cet aperçu rapide mais assez complet. 22:32 [@FiFouille]: Pour vous donner l'eau à la bouche, voilà une liste non exhaustive des applications qui intègrent les regex 22:32 [@FiFouille]: Programmation : en natif, Perl, Ruby, Python, et aussi PHP, Java, C, C++ etc ... 22:32 [@FiFouille]: Programmes : sed, awk, grep, vim, rename, ... 22:32 [@FiFouille]: Filtres : apache & lighttpd (mod_rewrite, vhosts, ...), adblock (firefox), ... 22:33 [@FiFouille]: et qques urls maintenant :p 22:33 [@FiFouille]: Quelques références qui pourraient vous aider : 22:33 [@FiFouille]: Une introduction à Perl et une introduction au regexp : 22:33 [@FiFouille]: http://sylvain.lhullier.org/publications/perl.html (FR) 22:33 [@FiFouille]: Le livre de référence (édition 1) de Ruby avec une petite partie sur les regexp 22:33 [@FiFouille]: http://rubycentral.com/book/language.html (EN) 22:33 [@FiFouille]: Une approche plus théorique et (donc) moins marrante avec Python: 22:33 [@FiFouille]: http://www.amk.ca/python/howto/regex/ (EN) 22:33 [@FiFouille]: Une introduction rapide réalisée dans notre FSUG (merci à Krunch) : 22:33 [@FiFouille]: http://www.fsugar.be/docu/regex/regex.html (FR) 22:33 ::: mode/#ubuntu-fr-classroom [-m] by FiFouille 22:33 [ animimotus]: FSUG ? 22:33 [@FiFouille]: voila, je vous attends pour les questions maintenant :p 22:34 [@FiFouille]: Free Softwares Users Group (Arlon) 22:34 [ LVEB]: FiFouille: les variables sont en ordre invrse ? 's/^(.*){$2}-Jamendo-(.*){$2} 22:34 [ animimotus]: ok 22:34 [@FiFouille]: LVEB: au fur et à mesure qu'on les crée avec ( ) 22:34 [ iKs]: Et awk lui sers à quoi alors ? 22:34 [@FiFouille]: LVEB: après tu peux les intervertir tant que tu veux dans la substitution 22:34 [ iKs]: On pourrai avoir un apercu de la construction d'une regex avec lui ? 22:35 [@FiFouille]: j'ai qques exemples simples si y'en a qui veulent 22:35 [ iKs]: d'awk ? 22:35 [@FiFouille]: ouep 22:35 [ iKs]: si oui go go go 22:35 [@FiFouille]: bon, un truc pour commencer 22:35 [ LVEB]: FiFouille: (.*)->$1, (.*)->$2... ? 22:36 [@FiFouille]: c'est des trucs que j'ai du faire aux cours, donc c'est un peu artificiel, mais ça donne qques exemples 22:36 [@FiFouille]: LVEB: les machins entre () sont stockés dans les variables $1 $2 $3 oui 22:36 [ iKs]: FiFouille: accouche xD 22:36 [@FiFouille]: Compter le nombre de processus par utilisateur sur la machine 22:36 [ LVEB]: ok => j'ai pige 22:36 [@FiFouille]: ps -aef | awk '$1 !~ /UID/ {print $1 | "sort | uniq -c"}' | awk '{print $2" has "$1" process"}' 22:37 [ LVEB]: argh! 22:37 [ iKs]: je confirme, argh ! 22:37 [ iKs]: explication rapide ? 22:37 [ LVEB]: longue ? 22:37 [ animimotus]: nobody has 1 process ? oO 22:37 [@gapz]: bah c'est pas si obscure :] 22:37 [ animimotus]: y'a un groupe nobody ? :p 22:37 [@FiFouille]: donc, ps, on affiche la liste de process avec toutes les infos, avec awk on voit si la première colonne n'est pas UID, si c'est le cas, on affiche la valeur, on trie, on compte et ensuite on affiche la colonne 2 has colonne 1 processs :p 22:38 [ LVEB]: 0o 22:38 [@FiFouille]: alors le $1 !~ c'est pour se débarasser de la première ligne qui contient les titres des colonnes de ps, sous Solaris y'a pas de flag pour se débarasser des titres de ps ;) 22:38 [ iKs]: donc $x c'est la colonne x ? 22:38 [@FiFouille]: iKs: en utilisant le séparteur IFS (espace/tabulation) par défaut ;) 22:39 [ iKs]: Hum. 22:39 [@FiFouille]: s/IFS/FS/ 22:39 [ iKs]: Faut que je relise le truc là... -_- 22:39 [ LVEB]: 104 has 1 process <---- il me dit ca 0o 22:39 [ animimotus]: un séparateur IFS, iKs 22:39 [@FiFouille]: LVEB: y'a des gens qui ont un compte numéro 104 et qui sont plus dans passwd alors ;) 22:39 ::: gaic [n=gapz@88-139-61-111.adslgp.cegetel.net] has quit ["Quitte"] 22:40 [ LVEB]: et puis un 108 22:40 [ LVEB]: ? 22:40 [ iKs]: Bon j'étudierai awk plus tard :p 22:40 [ animimotus]: LVEB idem 22:40 [@FiFouille]: LVEB: grep 108 /etc/group si tu veux savoir 22:40 [ Phlogistique]: franchement, à l'ère de Perl et Ruby, faut être d'un masochisme pour se servir de awk :p 22:40 [ animimotus]: 103 106 108 115 nobody.... 22:40 [ LVEB]: c'est quoi awk ? 0o 22:40 [@FiFouille]: Phlogistique: la base de script avec awk est vraiment impressionnante, pour faire du sysadmin faut bien en connaitre un peu 22:41 [ LVEB]: j'ai du louper un episode 22:41 [@FiFouille]: bon, alors, pour tous bien vous tuer j'ai mon rapport de shell scripting 22:41 [ Phlogistique]: c'est un langage de programmation pour manipuler du texte 22:41 [ animimotus]: /etc/group:avahi:x:108: 22:41 [@FiFouille]: http://www.fifi.be/~fifi/ex_shell.pdf 22:41 [ Phlogistique]: très utilisé sous Unix 22:42 ::: c3d41c [n=ced@87.142-66-87.adsl-dyn.isp.belgacom.be] has quit ["Quitte"] 22:42 [ LVEB]: c'est ce qu'on a vu Phlogistique ? 22:42 [ iKs]: (HS: Ca existe un plugin mozilla pour Evince ?) 22:42 [ Phlogistique]: LVEB : c'est awk 22:42 [@FiFouille]: alors je dis pas que tous les scripts sont parfaitements optimals, mais bon, j'ai fait de mon mieux ;) 22:42 [ animimotus]: iKs: kpdf powa :) 22:43 [ LVEB]: optimaux ? non ? 22:43 [@FiFouille]: bon, si vous avez des questions la dessus, vous connaissez mon mail ;) 22:43 [@FiFouille]: LVEB: oui, en effet :p 22:43 [ LVEB]: ^^ 22:43 [@FiFouille]: il reste des questions sur les regex ? 22:43 [@FiFouille]: donc je rappelle, deux ressources 22:44 [ animimotus]: remi.googlegmail.com ? 22:44 [@FiFouille]: pour les regex, le cours d'aujourd'hui résumé 22:44 [ animimotus]: :p 22:44 [@FiFouille]: http://www.fifi.be/~fifi/regex.txt 22:44 [@FiFouille]: et pour le shell scripting en général et un peu de awk 22:44 [@FiFouille]: http://www.fifi.be/~fifi/ex_shell.pdf 22:44 [ animimotus]: bravo FiFouille 22:44 [ iKs]: Merci à toi :) 22:45 [ iKs]: Très intéressant la partie sur sed en tout cas :p 22:45 ::: barsanuphe [n=barsanup@gra33-1-82-230-167-222.fbx.proxad.net] has quit [Read error: 104 (Connection reset by peer)] 22:45 [ iKs]: (awk faudra que je reréfléchisse dessus xD) 22:45 [@FiFouille]: ben merci bien, j'étais stressé de merder, finalement ça a pas mal été ;) 22:45 ::: ktulu77 [n=theo@chs77-1-82-238-8-65.fbx.proxad.net] has quit ["Konversation terminated!"] 22:45 [ iKs]: ca a très bien été :) 22:45 [@FiFouille]: y'a un monsieur qui me demande de conclure, il voudrait ajouter des choses 22:45 [@FiFouille] gapz: à toi la parole donc ;) 22:45 [@gapz]: ouais ouais 22:45 ::: ktulu77 [n=theo@chs77-1-82-238-8-65.fbx.proxad.net] has joined #ubuntu-fr-classroom 22:45 [ LVEB]: ton mail est remi.laurent@(gmail|googlemail).com ? 22:46 [ animimotus] gapz: nan mais tu es pas mal non plus, oops, aussi :) 22:46 [@gapz]: bon normalement il y avait encore quelque truc mais vue que la partie sur les expressions régulières a suciter un vive interêt on va éviter d'alourdir cela en rajoutant des notions que je pense vous avez presque tous 22:46 [@FiFouille]: http://www.fifi.be/ en bas à droite pour les contacts ;) 22:46 [@gapz]: c'est à dire if, while, cas etc etc.. 22:46 [ animimotus]: LVEB: Rémi s'appelle pas Sed, hein :p 22:47 [@gapz]: Donc j'aimerais tous vous remercier d'avoir suivis ce cour et j'aimerais aussi remercier FiFouille pour cette magnifique partie sur les expressions régulières :-) 22:48 [ iKs]: Idem :) 22:48 [@gapz]: Voila voila, le log sera bientôt disponible, bonne soirée à tous ! 22:48 [ iKs]: J'attends le début du cours en log et/ou en résumé sur le wiki moa :p 22:48 [ animimotus]: bon on a fait déborder un peu FiFouille mais comme on était bien lancé... :) 22:48 [ iKs]: Merci gapz 22:49 [@gapz]: et merci à tous les habitués de ce chan aussi, de faire régner une bonne ambiance ici ;-) 22:49 [ animimotus] gapz: on continue avec bash quand ? 22:49 [@gapz]: mr_pouit, Adri2000, gpocentek, skateinmars, Lutin, animimotus, Sp4rKy, shadok etc etc ;-) 22:49 [ LVEB]: :) 22:49 [+skateinmars]: re :) 22:49 [@FiFouille]: bon ben, merci public comme dirait l'autre ;) 22:49 [@gapz]: animimotus: bah la prochaine session se sera sur l'écriture de script shell avancé 22:49 [ LVEB]: ^^ 22:50 [@gapz]: on va dire que ça saute un peu une étape mais bon 22:50 [@gapz]: et pour quand j'en ai aucune idée 22:50 [@FiFouille]: faut toujours que je fasse un truc sur vim || ruby moi 22:50 [@gapz]: skateinmars: !!! 22:50 [@gapz]: FiFouille: je peux t'aider sur vim 22:50 [@gapz]: :) 22:50 [@gapz]: imap __i 22:51 [@gapz]: y a des trucs drôles aussi à faire avec :] 22:51 [+mr_pouit] gapz, les mass hl, c'est mal ^^ 22:51 [ LVEB]: C'est dur vim ... 22:51 [ animimotus]: c'est sûr que les newbies ont été un peu assumés par les regexp, c'est un peu costaud quand on est pas prévenu ^^ 22:51 [ animimotus]: * assomés 22:51 [@FiFouille]: j'avais fait un pari avec gapz, que tout le monde se casserait au bout de 30 minutes 22:51 [Users #ubuntu-fr-classroom] 22:51 [@ChanServ ] [+skateinmars] [ bydibule ] [ jnjb ] [ Miro_Offline ] [ Rez\\ ] 22:51 [@FiFouille] [+Sp4rKy ] [ davro-desktop] [ keikoz ] [ MrZeroo00 ] [ Saucisson_] 22:51 [@gapz ] [+Toadstool ] [ davromaniak ] [ Koroviev] [ ObiWanKennedy] [ Surfoo ] 22:51 [+Adri2000 ] [+Uggy ] [ Didi3R ] [ krusaf ] [ Phlogistique ] [ th0r ] 22:51 [+gpocentek] [ animimotus ] [ dim_m ] [ ktulu77 ] [ Ppjet6 ] [ timruff ] 22:51 [+Lutin ] [ AToMiSeR ] [ don-harry ] [ LVEB ] [ PyroSmoke ] [ tinram_ ] 22:51 [+mr_pouit ] [ Belou ] [ fanch_ ] [ LVEB_ ] [ rem__ ] [ trucutu ] 22:51 [+racoon97 ] [ benje ] [ iKs ] [ McPeter ] [ Remi ] [ Xzorg666 ] 22:51 [+shadok ] [ Bixente ] [ illovae ] [ mfv9 ] [ remi_doubi ] [ Yumi` ] 22:51 ::: Irssi: #ubuntu-fr-classroom: Total of 54 nicks [3 ops, 0 halfops, 10 voices, 41 normal] 22:51 [@FiFouille]: j'ai perdu :( 22:52 [@gapz]: hehe, en fait c'est avec moi que tout le monde s'est barré au bout de 30min 22:52 [@gapz]: heuresement il y avait des personnes interessées :-) 22:52 [ animimotus]: FiFouille: nan mais en plus au début tu as bien compléter le "pas à pas" pour les noobs, donc il y en aura eu pour un peu tout le monde, ce soir :) 22:52 [ animimotus]: (en mm temps j'ai appris bcp aussi en début de cours) 22:53 [@gapz]: + davromaniak racoon97 Uggy benje dans le hl :-) sinon je vais me faire tapper 22:53 [@gapz]: + illovae aussi :-), 'fin bref /names quoi :) 22:53 [ timruff]: je regardais un film 22:53 [+racoon97]: han :o 22:53 [ timruff]: je vais archivé le cours 22:53 [ Yumi`] gapz: le lien du log sera afficher dans le topic ? 22:53 [ animimotus]: disons, à titre personnel, que ça m'a plus interpellé que la compilation :p 22:53 [@gapz]: Yumi`: attend je vais le mettre en ligne bientôt 22:53 [@gapz]: je met en forme 22:54 [@FiFouille]: bon, je vais vous laisser moi, sinon ma madame va raler ;) 22:54 [ Yumi`]: daccord :D 22:54 [@gapz]: bonne soirée FiFouille et encore merci ! 22:54 [ Yumi`]: ++ FiFouille merci merci ;) 22:54 [@FiFouille]: bonne soirée à tout le monde, et hésitez pas pour des questions, via jabber ou mail 22:54 [ animimotus]: FiFouille: bonne soirée 22:55 [ LVEB]: FiFouille: ++