the Shellnigme

Posted by kAworu Sun, 18 Jan 2009 13:29:00 GMT

Pour les amoureux du shell (sh POSIX) “traditionel” voilà une petite énigme interessante. Comment faire une boucle sur les lignes d’une variable ? par exemple, si je fais

myvar="`cat /etc/fstab`"

j’ai maintenant le contenu du fichier /etc/fstab dans $myvar. Comment boucler pour traiter le contenu ligne par ligne ?

Je connais seulement deux solution en sh POSIX (l’une avec un for, et l’autre avec un while), réponse la semaine prochaine ;)

PS: postez vos réponse en commentaire !

Posted in | 2 comments |

Menu K

Posted by kAworu Wed, 09 Jul 2008 18:50:00 GMT

Utilisateurs de KDE, bonsoir !

Voilà un petit script que j’utilise pour remplacer mon icône du menu KDE (qui pourrait être utilisé pour les autres également) histoire d’avoir un KDE un peu plus “custom”. Il demande juste d’avoir ImageMagick car le script utilise l’outil convert pour resizer votre icône de base.

Avant de lancer le script, vérifiez dans le code le dossier DESTDIR. puis lancez (si votre fichier image est nommé “base.png”) :

% sh replacekmenu.sh base.png

le script est ici

Les images que j’ai utilisé (classique je sais)

FreeBSD Gentoo

Posted in | aucun comments |

more^Wless convitude

Posted by kAworu Sun, 15 Jun 2008 12:14:00 GMT

utilisateurs de less bonjour !

Un truc très sympa avec less c’est qu’on peut lui donner n’importe quel type de fichiers si on le configure un tout petit peu. Il faut utiliser un script (souvent appelé lesspipe.sh) et la variable d’environnement LESSOPEN.

un petit exemple simple dans man less nous fait mirroiter la convitude de la chose:

       For example, on many Unix systems, this script will work like the previous example scripts:

       lesspipe.sh:
            #! /bin/sh
            case "$1" in
            *.Z) uncompress -c $1  2>/dev/null
                 ;;
            esac

       To use this script, put it where it can be executed and set LESSOPEN="|lesspipe.sh %s". 
When an input pipe is used, a LESSCLOSE  post‐processor can  be used, 
but it is usually not necessary since there is no replacement file to clean up. 
In this case, the replacement file name passed to the LESSCLOSE postprocessor is "-".

voilà tout est dit. Et biensûr, des gens chouette ont déjà codé de sympathique lesspipe.sh pour nous.

le lesspipe.sh de FreeBSD laisse un peu à désirer à mon goût (y’a même une directive ex, ça donne une indication sur le siècle de création):

#! /bin/sh
# ex:ts=8

# $FreeBSD: src/usr.bin/less/lesspipe.sh,v 1.4 2007/05/24 18:28:08 le Exp $

case "$1" in
        *.Z)
                exec uncompress -c "$1" 2>/dev/null
                ;;
        *.gz)
                exec gzip -d -c "$1"    2>/dev/null
                ;;
        *.bz2)
                exec bzip2 -d -c "$1"   2>/dev/null
                ;;
esac

Gentoo a un lesspipe.sh très complet, mais malheureusement écris en bash (beurk). Mais votre serviteur (à l’aide d’une tasse de café) l’a traduit avec ses gros doigts en _sh_ pour vous.

Pour l’installation c’est facile, il suffit de le télécharger ici, de le mettre dans votre PATH, puis de mettre votre variable d’environnement LESSOPEN correctement (i.e. comme indiqué dans le man):

set LESSOPEN="|lesspipe.sh %s"

Pouf ! et voilà on peu less des dossiers, des tar, des tar.bz2, des pdf, des .doc (sisi, faut juste avoir les bons outils installés) etc.

WARNING

  • J’ai peut-être (et même certainement) merdé quelque part dans la traduction. donc utilisez pas ça en tant que root.
  • Vous être invité à le relire (200 lignes à peine et certainement seulement une dizaine de modifiées)
  • Aucune idée de la licence, parce que c’était déjà pas clair dans le lesspipe.sh de gentoo. en même temps, y’a très peu de chance de faire fortune avec un truc pareil.

Posted in | aucun comments |