tight_'s - Tag - shellDéveloppement web, GNU/Linux & Open Source2012-03-20T08:04:16+01:00tighturn:md5:14a191b2772ad2c57ebe3cb650aaad4bDotclearZsh, .zshrc & bindkeyurn:md5:b207b3c7eb021c92d6e346cbc287988d2010-01-22T08:36:00+01:002010-01-22T08:36:59+01:00tightlinuxligne de commandeshelltip <p>Je viens de remplacer bash par <a href="http://www.zsh.org" hreflang="en">zsh</a> (compatible, meilleure complétion, affichage plus sympa, ...)<br />
Si comme moi, vous avez quelques problèmes avec la commande <code>bindkey</code>, un <code>Ctrl + V puis la combinaison de touche</code> colle le code de la combinaison.<br />
La liste des <em>widgets</em> est dans <code>man zshzle</code>.</p>Ligne de commande - Trucs & astucesurn:md5:100669210e3c1a3eeebf2d2edcd5fa162009-02-13T17:19:00+01:002009-02-17T17:59:55+01:00tightlinuxbashligne de commandeshell<p>Quelques trucs (en vrac) qui évitent d'utiliser ses petits doigts quand on utilise pas d'explorateur sous Linux.</p> <p>Je n'ai rien mis sur les redirection de d'entrée / sortie standard, <em>tubes</em> ou <em>xargs</em>, juste des trucs pour les feignants :P</p>
<h2>cd</h2>
<p>La commande <em>cd</em> à quelques options intéressantes.</p>
<pre>
$ cd
</pre>
<p><em>cd</em> sans argument va dans le dossier <em>home</em> de l'utilisateur courant</p>
<pre>
$ cd ~user
</pre>
<p>déplace dans le dossier <em>home</em> de l'utilisateur <em>user</em></p>
<pre>
$ pwd
/home/tight
$ cd /var/www
$ cd -
$ pwd
/home/tight
</pre>
<p><em>cd -</em> retourne dans le dossier précédent</p>
<h2>Substitution</h2>
<p>Il est possible d'exécuter une commande dans une autre via <em>$()</em> (ou '`', dépréciée)</p>
<pre>
$ cat liste_des_fichiers_a_supprimer
foo
bar
$ rm $( cat liste_des_fichiers_a_supprimer )
</pre>
<p>effacera les fichiers <em>foo</em> et <em>bar</em> (le contenu de <em>liste_des_fichiers_a_supprimer</em></p>
<h2>Historique</h2>
<p>Par défaut, le parcours de l'historique se fait sur ... l'ensemble de l'historique (c'est assez logique ;)). Du coup, on se retrouve parfois à appuyer X fois sur la flèche haut pour trouver la ligne qui nous intéresse.<br />
Il existe un autre comportement qui permet de ne chercher que sur les lignes qui correspondent au début de ce qui a été saisi :</p>
<pre>
$ cd bar
$ rm foo
# par défaut, pour retrouver la ligne "cd bar", il faut appuyer 2 fois sur haut
$
...
$ cd bar
$ rm foo
# en saisissant "cd" au début de la commande et en appuyant sur haut une seule fois, on retrouve "cd bar"
$ cd
</pre>
<p>Pour changer le comportement, il suffit de mettre dans <em>~/.inputrc</em> :</p>
<pre>
"\e[A": history-search-backward
"\e[B": history-search-forward
</pre>
<h2>Modification des arguments</h2>
<p>La commande</p>
<pre>
$ cp foo{,.bak}
</pre>
<p>va se comporter comme s'il y avait un 2ème argument correspond à <em>foo.bak</em>, soit</p>
<pre>
$ cp foo foo.bak
</pre>
<p>Cette fonctionnalité peut s'utiliser n'importe où :</p>
<pre>
$ cp foo{,1}bar
# équivaut à
$ cp foobar foo1bar
</pre>
<h2>Répéter la commande précédente</h2>
<p>Via</p>
<pre>
$ !!
</pre>
<p>on répète la commande précédente, utile quand :</p>
<pre>
$ rm foo
rm: ne peut enlever `foo': Permission non accordée
$ sudo !!
</pre>
<h2>History</h2>
<p>La commande <em>history</em> affiche les lignes de commande déjà saisies :</p>
<pre>
$ cd
$ cd foo
$ history
663 cd
664 cd foo
665 history
</pre>
<p>rien d'exceptionnel... mais elle prend tout son intérêt couplée à <em>!</em> :</p>
<pre>
$ cp foo bar
$ cp !-1:2 omg
</pre>
<p><em>-1</em> fait référence à la précédente commande, <em>2</em> au 2ème argument, on a donc <em>cp bar omg</em></p>
<h2>Espace insécable</h2>
<p>Si vous tapez rapidement, vous avez déjà peut-être eu ce message :</p>
<pre>
$ ls | grep 'jpg'
bash: grep : commande introuvable
</pre>
<p>alors que <em>grep</em> est bien installé.<br />
Le problème vient de l'espace insécable inséré après le <em>|</em> via <em>Alt Gr</em> + <em>Espace</em>.<br />
La solution, modifier le comportement du clavier (fonctionne sous X uniquement) en ajoutant à<em>~/.Xmodmap</em> :</p>
<pre>
keycode 65 = space space space space space
</pre>
<p>That's all <img src="/themes/default/smilies/wink.png" alt=";)" class="smiley" /></p>