Vincent Richard


Astuces GNU/Linux


" Unix is user-friendly. It's just selective about who its friends are. "

" If Unix is the answer, then it must have been a stupid question. "

" Friends don't let friends use Unix. "


Astuces Debian :

Astuces diverses/shell :

Un fichier de démarrage personnalisé (Debian)

Il peut parfois être utile d'avoir un fichier de démarrage, une sorte d'équivalent du fichier /etc/rc.local dans des distributions comme RedHat. Voici la marche à suivre pour utiliser un tel fichier avec Debian.

En tant que root, créer un fichier /etc/init.d/local avec par exemple le contenu suivant, un appel à un script dans votre répertoire maison :

   #!/bin/sh
   /home/vincent/init.sh

Le fichier init.sh contiendra les commandes à exécuter au démarrage du système. Evidemment, ce script doit appartenir à root et avoir les permissions appropriées :

   # chown root:staff /home/vincent/init.sh
   # chmod 770 /home/vincent/init.sh

Rendre exécutable le fichier etc/init.d/local :

   # chmod u+x /etc/init.d/local

Mettre à jour les liens System-V :

   # update-rc.d local defaults 80

Suppression automatique des paquets plus utilisés (Debian)

apt-get est un outil fabuleux, mais avec un tout petit défaut : les paquets de dépendance qui ne sont plus utilisés ne sont pas supprimés lors d'un apt-get remove.

L'outil deborphan permet de lister les paquets qui ont été installés pour des raisons de dépendance, et qui ne sont désormais plus utilisés.

S'il n'est pas déjà installé :

   # apt-get install deborphan (si pas installé)

En combinaison avec xargs et apt-get remove pour effectuer le nettoyage :

   # deborphan | xargs apt-get remove --purge -uy

Pour installer ou désinstaller un paquet "proprement" avec toutes les dépendances, il est possible d'utiliser aptitude (utile pour tester un paquet qu'on ne va peut-être pas garder) :

   # aptitude install <nom du paquet>
   # aptitude remove <nom du paquet>

Renommage de plusieurs fichiers avec expression régulière

Utilisation de la commande rename. Par exemple, remplacement de *.html par *.shtml :

   $ rename 's/html/shtml/' *.html

Pour effectuer récursivement le remplacement dans les sous-répertoires :

   $ find . -name '*.html' -print | rename 's/html/shtml/'

Installation d'un paquet 'unstable' en 'testing' (Debian)

Si votre système est en 'stable' ou en 'testing' et que vous souhaitez installer la version 'unstable' d'un paquet en particulier, c'est faisable très simplement avec apt.

Tout d'abord, assurez-vous que la ligne suivante est présente dans le fichier /etc/apt/apt.conf (pour éviter que tous les paquets soient mis à jour dans leur version 'unstable') :

   APT::Default-Release "testing";

Ajout des sources 'unstable' dans /etc/apt/sources.list :

   ...
   deb http://ftp.u-strasbg.fr/debian/ testing main
   deb-src http://ftp.u-strasbg.fr/debian/ testing main

   deb http://ftp.u-strasbg.fr/debian/ unstable main
   deb-src http://ftp.u-strasbg.fr/debian/ unstable main

Mise à jour des versions et installation du paquet (par exemple, Gimp) :

   # apt-get update
   # apt-get install -t unstable gimp

Recherche de fichiers (ne) contenant (pas) une certaine chaîne

Fichiers contenant "xxx" :

   grep -l -re "xxx" *

Fichiers ne contenant pas "xxx" :

   grep -L -re "xxx" *

Fichiers ne contenant pas "xxx" mais contenant "yyy" :

   grep -L -re "xxx" * | xargs grep -l -re "yyy"

Génération de mots de passes aléatoires

La commande makepasswd (paquet du même nom sous Debian) permet de générer des mots de passe d'une longueur définie et en utilisant des caractères définis.

Un bon mot de passe contient au moins 10 caractères (enfin, un bon mot de passe est un mot de passe qu'on change souvent aussi). On évite aussi les ambiguïtés o/O/0 (la lettre O minuscule/majuscule et le chiffre zéro), i/I/1...

Voici une commande toute faite pour générer 10 mots de passe :

   makepasswd --count=10 --maxchars=10 --minchars=10
        --string=ABCDEFGHJKMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz23456789

Parmi la liste renvoyée, il serait bon de ne garder que les mots de passe qui contiennent au moins deux chiffres :

   makepasswd --count=10 --maxchars=10 --minchars=10
        --string=ABCDEFGHJKMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz23456789
     | grep -re "[0-9].*[0-9]"