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

<channel>
	<title>Trucs Libres &#187; bash</title>
	<atom:link href="http://fr.positon.org/tag/bash/feed" rel="self" type="application/rss+xml" />
	<link>http://fr.positon.org</link>
	<description></description>
	<lastBuildDate>Tue, 23 Feb 2016 20:01:11 +0000</lastBuildDate>
	<language>fr-FR</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.7.1</generator>
	<item>
		<title>Script nautilus de recherche de sous-titres opensubtitles.org</title>
		<link>http://fr.positon.org/script-nautilus-de-recherche-de-sous-titres-opensubtitles-org</link>
		<comments>http://fr.positon.org/script-nautilus-de-recherche-de-sous-titres-opensubtitles-org#comments</comments>
		<pubDate>Sun, 31 Aug 2014 09:55:28 +0000</pubDate>
		<dc:creator><![CDATA[dooblem]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[Nautilus]]></category>

		<guid isPermaLink="false">http://positon.org/?p=202</guid>
		<description><![CDATA[Contribution de Mathilde : Ce script permet de lancer une recherche par taille de fichier sur opensubtitles.org, par un simple clique droit sur le fichier video. S&#8217;il n&#8217;existe pas, créer le dossier .local/share/nautilus/scripts dans votre dossier personnel (depuis Nautilus, vous pouvez utiliser le raccourci Ctrl+H pour afficher les fichiers cachés et visualiser le dossier .local). [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Contribution de Mathilde :</p>
<p>Ce script permet de lancer une recherche par taille de fichier sur <a href="http://www.opensubtitles.org">opensubtitles.org</a>, par un simple clique droit sur le fichier video.</p>
<p>S&#8217;il n&#8217;existe pas, créer le dossier <code>.local/share/nautilus/scripts</code> dans votre dossier personnel (depuis Nautilus, vous pouvez utiliser le raccourci Ctrl+H pour afficher les fichiers cachés et visualiser le dossier <code>.local</code>).</p>
<p>Enregistrer le fichier <a href="/wp-content/uploads/files/subtitle">subtitle</a> dans <code>.local/share/nautilus/scripts</code></p>
<p>Ajouter le droit d&#8217;execution au script, dans les propriété du fichier, ou par la commande <code>chmod +x ~/.local/share/nautilus/scripts/subtitle</code></p>
<p>Ouvrir Nautilus (aka &#8220;Fichiers&#8221;). Sélectionner le film dont on veut chercher les sous-titres, clic droit et sélectionner dans le menu déroulant &#8216;scripts&#8217; puis &#8220;subtitle&#8221;.<br />
Une fenêtre de navigateur s&#8217;ouvrira directement sur le site <a href="http://www.opensubtitles.org">opensubtitles.org</a> avec les résultats de la recherche.</p>
<p>NB :<br />
Par défaut, le script recherche des sous-titre en anglais. Pour changer de langue, ouvrir subtitle et modifier la variable LANG.</p>
<p>Contenu du script <a href="/wp-content/uploads/files/subtitle">subtitle</a> :</p>
<pre>
#!/bin/bash

LANG=eng
#LANG=fr

FILE=$1
SIZE=$(stat -c %s $FILE)

xdg-open "http://www.opensubtitles.org/eng/search/sublanguageid-$LANG/moviebytesize-$SIZE"
</pre>
]]></content:encoded>
			<wfw:commentRss>http://fr.positon.org/script-nautilus-de-recherche-de-sous-titres-opensubtitles-org/feed</wfw:commentRss>
		<slash:comments></slash:comments>
		</item>
		<item>
		<title>Comparaison / Différence entre deux images</title>
		<link>http://fr.positon.org/comparaison-difference-entre-deux-images</link>
		<comments>http://fr.positon.org/comparaison-difference-entre-deux-images#comments</comments>
		<pubDate>Mon, 16 Apr 2012 13:00:00 +0000</pubDate>
		<dc:creator><![CDATA[dooblem]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[diff]]></category>
		<category><![CDATA[ImageMagick]]></category>

		<guid isPermaLink="false">http://positon.org:81/?p=115</guid>
		<description><![CDATA[Après une longue recherche sur le Net, voici comment utiliser ImageMagick pour comparer deux image (diff), afin de déterminer si les images sont très proches, ou si l&#8217;une des images est une version redimensionnée de l&#8217;autre. convert image1 image2 -resize '400x300!' MIFF:- &#124; compare -metric AE -fuzz '10%' - null: La commande convert prend 2 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Après une longue recherche sur le Net, voici comment utiliser ImageMagick pour comparer deux image (diff), afin de déterminer si les images sont très proches, ou si l&#8217;une des images est une version redimensionnée de l&#8217;autre.</p>
<pre>
convert image1 image2 -resize '400x300!' MIFF:- | compare -metric AE -fuzz '10%' - null:
</pre>
<p>La commande convert prend 2 images, les redimensionne en une taille plus petite identique, puis les envoie dans un pipe à la commande compare qui compte le nombre de pixels différents.</p>
<p>La commande affiche le nombre de pixel différents. Si c&#8217;est 0 les images sont similaires.</p>
<p>2 paramètres peuvent augmenter la tolérance d&#8217;images similaires :</p>
<ul>
<li>La taille des vignettes à comparer : plus la taille est petite, plus on élimine des détails. Bonne base : 1/4 de l&#8217;image la plus petite.</li>
<li>Le paramètre -fuzz : il s&#8217;agit de l&#8217;écart de couleur toléré. Plus on augmente ce paramètre, plus on tolère des couleurs différentes. En dessous de 2%, la différence de couleurs est quasiment imperceptible à l’œil nu.</li>
</ul>
<p>Notes :</p>
<ul>
<li>Il est préférable de conserver les mêmes proportions que les images originales.</li>
<li>Il faut un point d&#8217;exclamation pour forcer le redimensionnement sans tenir compte des proportions, car dans certains cas les deux vignettes n&#8217;ont pas une taille strictement identique, ce qui fait échouer la commande compare.</li>
</ul>
<p>J&#8217;ai aussi fait un petit script qui redimensionne à 1/4 de la petite image et affiche le pourcentage de différences : <a href="/wp-content/uploads/dotclearold/imdiff">imdiff</a></p>
<pre>
./imdiff /tmp/bad.jpg ../Public/images/bad.jpg
pixel difference: 2.927%
NOK
</pre>
<p>Liens :</p>
<ul>
<li><a href="http://www.imagemagick.org/script/compare.php" title="http://www.imagemagick.org/script/compare.php">http://www.imagemagick.org/script/compare.php</a></li>
<li><a href="http://www.imagemagick.org/Usage/compare/" title="http://www.imagemagick.org/Usage/compare/">http://www.imagemagick.org/Usage/compare/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fr.positon.org/comparaison-difference-entre-deux-images/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Script d&#8217;import de fichier CSV dans MySQL</title>
		<link>http://fr.positon.org/script-d-import-de-fichier-csv-dans-mysql2</link>
		<comments>http://fr.positon.org/script-d-import-de-fichier-csv-dans-mysql2#comments</comments>
		<pubDate>Sun, 13 Nov 2011 20:32:00 +0000</pubDate>
		<dc:creator><![CDATA[dooblem]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[csv]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://positon.org:81/?p=112</guid>
		<description><![CDATA[Voila le petit script sh que j&#8217;ai fait pour faire ça. Il existe la commande MySQL LOAD DATA INFILE, mais cette commande ne crée pas la structure de la table. #!/bin/sh MYSQL_ARGS=&#34;--defaults-file=/etc/mysql/debian.cnf&#34; DB=&#34;mbctest&#34; DELIM=&#34;;&#34; CSV=&#34;$1&#34; TABLE=&#34;$2&#34; [ &#34;$CSV&#34; = &#34;&#34; -o &#34;$TABLE&#34; = &#34;&#34; ] &#38;&#38; echo &#34;Syntax: $0 csvfile tablename&#34; &#38;&#38; exit 1 FIELDS=$(head [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Voila le petit script sh que j&#8217;ai fait pour faire ça. Il existe la commande MySQL LOAD DATA INFILE, mais cette commande ne crée pas la structure de la table.</p>
<pre>
#!/bin/sh

MYSQL_ARGS=&quot;--defaults-file=/etc/mysql/debian.cnf&quot;
DB=&quot;mbctest&quot;
DELIM=&quot;;&quot;

CSV=&quot;$1&quot;
TABLE=&quot;$2&quot;

[ &quot;$CSV&quot; = &quot;&quot; -o &quot;$TABLE&quot; = &quot;&quot; ] &amp;&amp; echo &quot;Syntax: $0 csvfile tablename&quot; &amp;&amp; exit 1

FIELDS=$(head -1 &quot;$CSV&quot; | sed -e 's/'$DELIM'/` varchar(255),\n`/g' -e 's/\r//g')
FIELDS='`'&quot;$FIELDS&quot;'` varchar(255)'

#echo &quot;$FIELDS&quot; &amp;&amp; exit

mysql $MYSQL_ARGS $DB -e &quot;
DROP TABLE IF EXISTS $TABLE;
CREATE TABLE $TABLE ($FIELDS);

LOAD DATA INFILE '$(pwd)/$CSV' INTO TABLE $TABLE
FIELDS TERMINATED BY '$DELIM'
IGNORE 1 LINES
;
&quot;
</pre>
<p><a href="http://dev.mysql.com/doc/refman/5.1/en/load-data.html" title="http://dev.mysql.com/doc/refman/5.1/en/load-data.html">http://dev.mysql.com/doc/refman/5.1/en/load-data.html</a></p>
<p>(Voir le commentaire &#8220;Posted by John Swapceinski on September 5 2011 5:33am&#8221;)</p>
]]></content:encoded>
			<wfw:commentRss>http://fr.positon.org/script-d-import-de-fichier-csv-dans-mysql2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Une solution au problème umask : inotify pour forcer les droits</title>
		<link>http://fr.positon.org/une-solution-au-probleme-umask-inotify-pour-forcer-les-droits</link>
		<comments>http://fr.positon.org/une-solution-au-probleme-umask-inotify-pour-forcer-les-droits#comments</comments>
		<pubDate>Thu, 21 Oct 2010 23:29:00 +0000</pubDate>
		<dc:creator><![CDATA[dooblem]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[inotify]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[SFTP]]></category>
		<category><![CDATA[umask]]></category>

		<guid isPermaLink="false">http://positon.org:81/?p=102</guid>
		<description><![CDATA[Trouver une bonne solution au problème du partage des fichiers entre utilisateurs Linux est un cauchemar. Si elle convient il y a la solution de l&#8217;UID unique. Tous les clients accèdent aux fichiers avec le même UID utilisateur. Seulement on ne sais pas qui fait quoi. Et les utilisateurs ne peuvent pas gérer finement leurs [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Trouver une bonne solution au problème du partage des fichiers entre utilisateurs Linux est un cauchemar.</p>
<p>Si elle convient il y a la solution de l&#8217;UID unique. Tous les clients accèdent aux fichiers avec le même UID utilisateur. Seulement on ne sais pas qui fait quoi. Et les utilisateurs ne peuvent pas gérer finement leurs droits.</p>
<p>Problème : le <a href="http://en.wikipedia.org/wiki/Umask">umask</a> par défaut est TOUJOURS 0022, ce qui fait que tout fichier créé aura les droits <code>rw– r–– r––</code>. Seul le propriétaire peut écrire et personne d&#8217;autre.<br />
Pour partager les fichier, un groupe doit aussi pouvoir écrire.</p>
<p>On peut changer ce umask. Pour la ligne de commande, ça se passe dans les fichiers <code>.bashrc</code> ou <code>.profile</code>, ou dans <code>/etc/profile</code> pour tous les utilisateurs. Pour un partage <a href="http://en.wikipedia.org/wiki/SSH_file_transfer_protocol">SFTP</a>, on s&#8217;en sort avec <a href="http://jeff.robbins.ws/articles/setting-the-umask-for-sftp-transactions">un bricolage</a>. Pour le serveur Apache, on s&#8217;en sort avec le fichier <code>/etc/apache2/envvars</code> sous Debian.</p>
<p>Si le partage de fichier se fait via un seul service, c&#8217;est simple de changer le umask, sinon, c&#8217;est compliqué. Et même en changeant tous les umask de tous les services, tout n&#8217;est pas parfait : par exemple, <a href="http://live.gnome.org/Nautilus">Nautilus</a> via SFTP n&#8217;en fait qu&#8217;à sa tête. Certains clients posent le fichiers et font un chmod derrière : l&#8217;enfer. Il y a aussi la puissance des <a href="http://www.suse.de/~agruen/acl/linux-acls/online/">ACL POSIX</a> qui permettent de forcer les droits. Mais là encore, certains clients vous poserons problème.</p>
<p>Enfin, on ne souhaite pas forcément que tous les fichiers soient posés avec l&#8217;écriture pour le groupe. On peut souhaiter une meilleure granularité.</p>
<p>D&#8217;expérience, j&#8217;ai abandonné l&#8217;idée du correctif à la source pour me tourner vers un bricolage agissant APRÈS la création du fichier.<br />
La solution la plus simple est bien sûr la tâche cron, qui toutes les X minutes fait un <code>chmod -R g+w</code> sur un dossier. Déjà la solution n&#8217;est pas immédiate car désynchronisée de la création de fichiers, et elle rajoute une (très) petite charge supplémentaire à votre système.</p>
<p>Je propose une solution à base d&#8217;<a href="http://en.wikipedia.org/wiki/Inotify">inotify</a>, qui force les droits dès qu&#8217;un fichier est créé :</p>
<pre>
aptitude install inotify-tools
</pre>
<p><strong>Et la commande magique :</strong></p>
<pre>
inotifywait -mrq -e CREATE --format %w%f /tmp/mytest/ | while read FILE; do chmod g=u &quot;$FILE&quot;; done
</pre>
<p><strong>MAJ 2010-10-30</strong><br />
Pour gérer les espaces en fin de fichiers, et les antislashs :</p>
<pre>
inotifywait -mrq -e CREATE --format %w%f /tmp/mytest/ | while IFS= read -r FILE; do chmod g=u &quot;$FILE&quot;; done
</pre>
<p>Merci à vitoreiji (voir commentaires)</p>
<p>La commande <code>inotifywait</code> écoute les événements du dossier <code>/tmp/mytest</code>. Dès qu&#8217;un fichier est créé, il est affiché sur la sortie standard. Chaque ligne-fichier est ensuite lue par la boucle <code>while</code> et les droits sont changés. Le <code>g=u</code> donne au groupe les mêmes droits que l&#8217;utilisateur (avec <code>g+w</code>, si l&#8217;utilisateur pose un fichier <code>rw– ––– –––</code>, les droits deviendraient <code>rw– –w– –––</code>).</p>
<p>Vous pouvez maintenant tester la création/copie de fichiers/dossiers. Même un <code>mkdir -p a/b/c/d/e</code> doit fonctionner.</p>
<p>Pour terminer, on ajoutera tout cela dans un script de démarrage :</p>
<pre>
vi /usr/local/bin/inotifywait.sh &amp;&amp; chmod +x /usr/local/bin/inotifywait.sh
#!/bin/sh
# Take the directory name as argument

inotifywait -mrq -e CREATE --format %w%f &quot;$1&quot; | while read FILE
do
	chmod g=u &quot;$FILE&quot;
done
</pre>
<pre>
vi /etc/init.d/inotifywait.sh &amp;&amp; chmod +x /etc/init.d/inotifywait.sh
#! /bin/sh

case &quot;$1&quot; in
  start|&quot;&quot;)

	rm -f /tmp/inotifywait.log
	/usr/local/bin/inotifywait.sh /path/to/dir/ &gt;/tmp/inotifywait.log 2&gt;&amp;1 &amp;
	
	;;
  restart|reload|force-reload)
	echo &quot;Error: argument '$1' not supported&quot; &gt;&amp;2
	exit 3
	;;
  stop)
	# killall inotifywait ???
	;;
  *)
	echo &quot;Usage: inotifywait.sh [start|stop]&quot; &gt;&amp;2
	exit 3
	;;
esac

:
</pre>
<p>(sous Debian)</p>
<pre>
update-rc.d inotifywait.sh defaults
</pre>
<p>Note : un inconvénient : il y a une limite sur le nombre de fichier surveillés, voir l&#8217;option <code>-r</code> dans <code>man inotifywait</code>.</p>
<p>Et enfin la touche finale qui est utile pour que les fichiers créés conservent le groupe du dossier parent : le <a href="http://en.wikipedia.org/wiki/Setuid">bit setgid</a> au groupe pour tous les dossiers.</p>
<pre>
find /path/to/dir -type d -exec chmod g+s {} \;
</pre>
<p><ins>Liens</ins> :</p>
<ul>
<li><code>man inotifywait</code></li>
<li><a href="http://github.com/rvoicilas/inotify-tools/wiki">inotify-tools</a></li>
<li><a href="http://en.wikipedia.org/wiki/Inotify" title="http://en.wikipedia.org/wiki/Inotify">http://en.wikipedia.org/wiki/Inotify</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fr.positon.org/une-solution-au-probleme-umask-inotify-pour-forcer-les-droits/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>[SSH] Changement de répertoire à la connexion</title>
		<link>http://fr.positon.org/ssh-changement-de-repertoire-a-la-connexion</link>
		<comments>http://fr.positon.org/ssh-changement-de-repertoire-a-la-connexion#comments</comments>
		<pubDate>Thu, 10 Dec 2009 20:09:00 +0000</pubDate>
		<dc:creator><![CDATA[dooblem]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">http://positon.org:81/?p=73</guid>
		<description><![CDATA[Problème : Je souhaite créer un alias serveur-www qui me connecte au serveur en SSH et m&#8217;amène automatiquement dans le dossier /var/www/. Voici : ssh -t serveur 'cd /var/www &#38;&#38; $SHELL' Et pour l&#8217;alias qu&#8217;on pourra ensuite mettre dans son ~/.bashrc : alias serveur-www=&#34;ssh -t serveur 'cd /var/www &#38;&#38; $SHELL'&#34; serveur-www # pour tester Références [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Problème :</p>
<p>Je souhaite créer un alias <code>serveur-www</code> qui me connecte au serveur en SSH et m&#8217;amène automatiquement dans le dossier <code>/var/www/</code>.</p>
<p>Voici :</p>
<pre>
ssh -t serveur 'cd /var/www &amp;&amp; $SHELL'
</pre>
<p>Et pour l&#8217;alias qu&#8217;on pourra ensuite mettre dans son <code>~/.bashrc</code> :</p>
<pre>
alias serveur-www=&quot;ssh -t serveur 'cd /var/www &amp;&amp; $SHELL'&quot;
serveur-www # pour tester
</pre>
<p><ins>Références</ins> :</p>
<ul>
<li><a href="http://groups.google.com/group/comp.security.ssh/browse_thread/thread/ab8981e1c8df2929" title="http://groups.google.com/group/comp.security.ssh/browse_thread/thread/ab8981e1c8df2929">http://groups.google.com/group/comp.security.ssh/browse_thread/thread/ab8981e1c8df2929</a></li>
<li><a href="http://ubuntuforums.org/archive/index.php/t-395113.html" title="http://ubuntuforums.org/archive/index.php/t-395113.html">http://ubuntuforums.org/archive/index.php/t-395113.html</a></li>
<li><code>man ssh</code></li>
<li><code>ssh -t serveur set</code></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://fr.positon.org/ssh-changement-de-repertoire-a-la-connexion/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Avec quelle adresse IP je sors ?</title>
		<link>http://fr.positon.org/avec-quelle-adresse-ip-je-sors</link>
		<comments>http://fr.positon.org/avec-quelle-adresse-ip-je-sors#comments</comments>
		<pubDate>Thu, 20 Aug 2009 11:21:00 +0000</pubDate>
		<dc:creator><![CDATA[dooblem]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[wget]]></category>

		<guid isPermaLink="false">http://positon.org:81/?p=60</guid>
		<description><![CDATA[Pour savoir avec quelle adresse IP on sort sur Internet, on peux aller voir un site du genre http://www.whatismyip.com En mode texte sans navigateur Web, c&#8217;est un peu plus compliqué. On pourra donc utiliser la commande suivante : wget --user-agent=&#34;Mozilla/5.0&#34; -O - http://www.whatismyip.com 2&#62;/dev/null &#124; grep -o &#34;Your IP Address Is: [0-9.]*&#34; Il faut se [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Pour savoir avec quelle adresse IP on sort sur Internet, on peux aller voir un site du genre <a href="http://www.whatismyip.com" title="http://www.whatismyip.com">http://www.whatismyip.com</a></p>
<p>En mode texte sans navigateur Web, c&#8217;est un peu plus compliqué. On pourra donc utiliser la commande suivante :</p>
<pre>
wget --user-agent=&quot;Mozilla/5.0&quot; -O - http://www.whatismyip.com 2&gt;/dev/null | grep -o &quot;Your IP Address Is: [0-9.]*&quot;
</pre>
<p>Il faut se faire passer pour un vrai navigateur sinon le site nous refuse.</p>
<p><strong>MAJ 14/01/2010</strong></p>
<p>Pour trouver son adresse IP externe, <a href="http://dev.petitchevalroux.net/linux/connaitre-son-adresse-externe-linux.305.html">une méthode encore plus élégante</a> :</p>
<pre>
dig +short myip.opendns.com @resolver1.opendns.com
</pre>
<p><strong>MAJ 19/03/2010</strong></p>
<p>D&#8217;ailleurs ça marche même plus ma méthode. Préférez donc :</p>
<p><a href="http://dev.petitchevalroux.net/linux/connaitre-son-adresse-externe-linux.305.html" title="http://dev.petitchevalroux.net/linux/connaitre-son-adresse-externe-linux.305.html">http://dev.petitchevalroux.net/linux/connaitre-son-adresse-externe-linux.305.html</a></p>
<p><strong>MAJ 06/05/2010</strong></p>
<p>Ou encore mieux !</p>
<pre>
curl icanhazip.com
</pre>
<p><a href="http://www.commandlinefu.com/commands/view/2966/return-external-ip" title="http://www.commandlinefu.com/commands/view/2966/return-external-ip">http://www.commandlinefu.com/commands/view/2966/return-external-ip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://fr.positon.org/avec-quelle-adresse-ip-je-sors/feed</wfw:commentRss>
		<slash:comments></slash:comments>
		</item>
		<item>
		<title>Colorer la sortie d&#8217;une commande</title>
		<link>http://fr.positon.org/colorer-la-sortie-dune-commande</link>
		<comments>http://fr.positon.org/colorer-la-sortie-dune-commande#comments</comments>
		<pubDate>Thu, 02 Jul 2009 14:28:00 +0000</pubDate>
		<dc:creator><![CDATA[dooblem]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[diff]]></category>
		<category><![CDATA[vi]]></category>

		<guid isPermaLink="false">http://positon.org:81/?p=55</guid>
		<description><![CDATA[Voici comment colorer simplement la syntaxe d&#8217;une sortie de commande avec vim : Colorer un diff : diff -u /tmp/1 /tmp/2 &#124; vim -R - Colorer un fichier un fichier quelconque (moins d&#8217;intérêt, car on peut simplement ouvrir le fichier avec vim) cat script.sh &#124; vim -R -]]></description>
				<content:encoded><![CDATA[<p>Voici comment colorer simplement la syntaxe d&#8217;une sortie de commande avec vim :</p>
<p>Colorer un diff :</p>
<pre>
diff -u /tmp/1 /tmp/2 | vim -R -
</pre>
<p>Colorer un fichier un fichier quelconque (moins d&#8217;intérêt, car on peut simplement ouvrir le fichier avec vim)</p>
<pre>
cat script.sh | vim -R -
</pre>
]]></content:encoded>
			<wfw:commentRss>http://fr.positon.org/colorer-la-sortie-dune-commande/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Terminer tous les enfants à la mort du parent</title>
		<link>http://fr.positon.org/terminer-tous-les-enfants-a-la-mort-du-parent</link>
		<comments>http://fr.positon.org/terminer-tous-les-enfants-a-la-mort-du-parent#comments</comments>
		<pubDate>Sun, 24 May 2009 10:00:00 +0000</pubDate>
		<dc:creator><![CDATA[dooblem]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bash]]></category>

		<guid isPermaLink="false">http://positon.org:81/?p=50</guid>
		<description><![CDATA[Dans un script Bash, voici la solution la plus simple que j&#8217;ai trouvée pour faire en sorte que tous les processus enfants soient tués en même temps que le parent : # kill every children on exit trap &#34;kill -- -$$&#34; EXIT La commande kill -- -PID permet de tuer l&#8217;ensemble du groupe de processus [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Dans un script Bash, voici la solution la plus simple que j&#8217;ai trouvée pour faire en sorte que tous les processus enfants soient tués en même temps que le parent :</p>
<pre>
# kill every children on exit
trap &quot;kill -- -$$&quot; EXIT
</pre>
<p>La commande <code>kill -- -PID</code> permet de tuer l&#8217;ensemble du groupe de processus identifié par PID.<br />
Sachant que dans notre cas, l&#8217;ID du groupe de processus est le même que l&#8217;ID du processus parent.</p>
<p>Il y aurait aussi peut-être la solution de programmer, dans l&#8217;enfant, la commande exit dès que ce dernier reçoit le signal que son parent a changé.</p>
]]></content:encoded>
			<wfw:commentRss>http://fr.positon.org/terminer-tous-les-enfants-a-la-mort-du-parent/feed</wfw:commentRss>
		<slash:comments></slash:comments>
		</item>
		<item>
		<title>Faire taire le terminal</title>
		<link>http://fr.positon.org/faire-taire-le-terminal</link>
		<comments>http://fr.positon.org/faire-taire-le-terminal#comments</comments>
		<pubDate>Tue, 10 Mar 2009 18:24:00 +0000</pubDate>
		<dc:creator><![CDATA[dooblem]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bash]]></category>

		<guid isPermaLink="false">http://positon.org:81/?p=47</guid>
		<description><![CDATA[Assez d&#8217;entendre les bips incessants lorsque vous utilisez la complétion dans votre terminal ? Ajouter la ligne suivante au fichier ~/.bashrc # desactiver le son de cloche xset -b]]></description>
				<content:encoded><![CDATA[<p>Assez d&#8217;entendre les bips incessants lorsque vous utilisez la complétion dans votre terminal ?</p>
<p>Ajouter la ligne suivante au fichier <code>~/.bashrc</code></p>
<pre>
# desactiver le son de cloche
xset -b
</pre>
]]></content:encoded>
			<wfw:commentRss>http://fr.positon.org/faire-taire-le-terminal/feed</wfw:commentRss>
		<slash:comments></slash:comments>
		</item>
		<item>
		<title>Augmenter l&#8217;historique des commandes bash</title>
		<link>http://fr.positon.org/augmenter-lhistorique-des-commandes-bash</link>
		<comments>http://fr.positon.org/augmenter-lhistorique-des-commandes-bash#comments</comments>
		<pubDate>Wed, 04 Mar 2009 15:23:00 +0000</pubDate>
		<dc:creator><![CDATA[dooblem]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bash]]></category>

		<guid isPermaLink="false">http://positon.org:81/?p=44</guid>
		<description><![CDATA[Par défault la taille de l&#8217;historique bash sous Debian semble être à 500. Placer la ligne suivante dans son ~/.bashrc : export HISTFILESIZE=5000]]></description>
				<content:encoded><![CDATA[<p>Par défault la taille de l&#8217;historique bash sous Debian semble être à 500.</p>
<p>Placer la ligne suivante dans son <code>~/.bashrc</code> :</p>
<pre>
export HISTFILESIZE=5000
</pre>
]]></content:encoded>
			<wfw:commentRss>http://fr.positon.org/augmenter-lhistorique-des-commandes-bash/feed</wfw:commentRss>
		<slash:comments></slash:comments>
		</item>
	</channel>
</rss>
