Association Bordelaise des Utilisateurs de Logiciels libres

Accueil ›› Utilisation de logiciels libres ›› Système ›› Un apt-get qui complète tout seul...

Un apt-get qui complète tout seul...

Posté le dimanche 8 février 2004 par Olivier Cortes

Cet article donne quelques astuces pour compléter automatiquement apt-get dans beaucoup de situations.
J’utilise cela sur Debian GNU/Linux Unstable (Sarge).

Ce à quoi nous voulons arriver

lorsque vous tapez :

apt-get <tab>

le shell doit vous proposer "install", "update", "remove"...

Si vous completez "install", puis retapez <tab>, le shell doit vous proposer la liste de tous les paquetages installables.

Si vous complétez "remove", il doit vous proposer la liste des paquetages installés sur le système (puisque vous voulez en désinstaller un).

L’instrument de la flemme de l’administrateur

Pour que ça marche, il faut utiliser le shell zsh. C’est grâce à ses fonctions ultra-adaptables que j’arrive à réaliser tout cela.

dans votre .zshrc, insérez :

function comp_aptinstall ()
{
        set -A reply $(apt-cache search ^${1%.*} 2>/dev/null | awk '{print $1}')
}
function comp_aptremove ()                                            
{
        set -A reply $(COLUMNS=300 dpkg -l | awk '{print $2}')
}

compctl -k "(install remove update dist-upgrade upgrade source build-dep dselect-upgrade clean autoclean check)" \
        -x 'c[-1,remove]' -K comp_aptremove - \
           'c[-1,install]' -K comp_aptget - \
           's[-c=]' -f - \
           's[-]' -k "(q qq u d s y f m b V c= o=)" \
           -- apt-get

relancez votre shell de connexion, ou bien fermez votre terminal et ouvrez-en un autre, ou bien encore rechargez votre .zshrc, et admirez la magie d’apt-get...

Encore quelques défauts

Lorsqu’on utilise -c=, le shell complète par un nom de fichier, mais il faudra revenir d’un espace en arrière pour que cela marche.

La liste des paquetage à installer n’exlut pas celle des paquetages déjà installés. Cela est facile à faire et est laissé comme un exercice au lecteur.

Les paquetages proposés à l’installation sont filtrés volontairement : je n’affiche que les paquetages qui commencent par les lettres tapées après install. Il est facile d’étendre la recherche dans la fonction comp_aptinstall, ceci est laissé comme un autre exercie pour le lecteur.

La liste des paquetages installables n’exclut pas ceux qui ne sont pas installables (pour des raisons propres au mainteneurs Debian). L’exercices est plus hardu, mais réalisable. Le shell mettra simplement un peu plus de temps à compléter. Ce point est aussi laissé comme exercice au lecteur.

La page de manuel zshall(1) vous sera d’une aide précieuse pour comprendre tout ce que j’ai écrit. C’est pas sorcier, mais pour comprendre le compctl -x, mieux vaut se lever tôt...

à bientôt,

Olivier

P.-S.

Note : j’ai écrit ce code moi-même mais je me doute bien que des férus de zsh ne m’ont pas attendu pour compléter apt-get. Si vous trouvez des lignes approchantes quelque part, sachez que les miennes sont originales.

Répondre à cet article

1 commentaire