Documentations - Trucs & astuces

Trucs & Astuces sous Debian GNU/Linux

Trucs & Astuces sous Debian GNU/Linux

Edi Stojicevic

Historique des versions
Version 0.221 Décembre 2004Revu par : es
Ajout de trois astuces
Version 0.120 Juin 2004Revu par : es
Première version


1. Système

1.1. Désactiver le reboot à l'aide des touches Ctrl+Alt+Del

S'il vous est déjà arrivé de redémarrer accidentellement votre machine en appuyant sur les trois touches magiques, vous pouvez commentez la ligne suivante dans le fichier /etc/inittab ainsi :

ca::ctrlaltdel:/sbin/shutdown -t3 -r now


1.2. Création d'une disquette de démarrage

Sous Woody/Sid, nous disposons d'un outil pour générer des disquettes de démarrage qui peuvent être nécessaire lors de l'installation d'un nouveau noyau par exemple : mkboot

En root, lancez la commande :

# mkboot 
Insert a floppy diskette into your boot drive, and press Return.
Ensuite vous aurez le message suivant :
	
Creating a lilot bootdisk...
+ mkdir /tmp/boot8075
+ mke2fs -q /dev/fd0
mke2fs 1.27 (8-Mar-2002)
+ mount -t ext2 /dev/fd0 /tmp/boot8075
+ cp /boot/boot.b /tmp/boot8075/boot.b
+ cp /vmlinuz /tmp/boot8075/vmlinuz
+ cat
+ lilo -C lilo.conf
Warning: COMPACT may conflict with LBA32 on some systems
Added linux *
++ set +e
++ cd /
++ umount /dev/fd0
++ rmdir /tmp/boot8075
...Success.
Voilà, vous disposez d'une disquette de démarrage toute neuve :)


1.3. Modifier le message d'accueil

Lorsque vous devez vous connecter, vous êtes en face d'un message d'accueil du genre :

Debian GNU/Linux 3.0
LinuxBox login : _
Ce message peut-être modifié en altérant le contenu du fichier /etc/issue et /etc/issue.net lorsque on établit une connexion telnet ou lorsque l'on se connecte au système. Par exemple, pour avoir la version du noyau et le type de machine, nous pourrions procéder de la sorte :
echo "">/etc/issue #ceci écrase le précédent
echo "Noyau $(uname -r)">>/etc/issue
echo "Machine de type $(uname -m)">>/etc/issue
Vous obtiendrez le résultat suivant :
Noyau 2.4.18
Machine de type i686
LinuxBox login : _

Il est possible de faire pareil pour les connexions SSH en modifiant le fichier /etc/motd. A vous maintenant d'être imaginatif concernant vos messages d'accueil ;)


1.4. Messages de boot

Lors du démarrage de votre système, un nombre important de messages apparaissent à l'écran.Tels que le type de carte réseau que vous utiliser, quel périphérique est détecté, etc ... Il existe pour cela une commande assez utile pour voir ce qui s'est passé :) Pour accéder à ces messages, tapez :

$ dmesg | more
. Toutefois, cette commande est à exécuter juste après le démarrage de la machine car c'est un simple buffer. L'idéal étant de rediriger les infos dans un fichier ;)


1.5. Version du noyau

Pour accéder à toute les informations concernant le noyau de votre système (date de compilation, le type de processeur, etc...). Il suffit de faire un uname -a. La version du noyau est donnée en majeur.mineur.révision, exemple : 2.4.2. Une précision : les mineurs impairs sont des versions dites "unstable", en développement.


1.6. Afficher le contenu d'un fichier tar sans le décompresser

Une option de la commande tar permet de lister le contenu d'un fichier compressé. Voici la commande qui permet de faire cela :

$ tar tzf Nom_archive.tar (c'est l'option t de la commande tar qui permet cela)
Pour plus d'infos, man tar. :)


1.7. Générer un modprobe.conf facilement

Lorsque modconf ou autre vous indique qu'il ne le trouve pas ce fichier, il existe une manipulation toute simple pour le générer, et ne pas utiliser la méthode de sioux qui consiste à créer un modprobe.conf vide:

  • Allez dans /usr/share/doc/module-init-tools/example

  • Dé-gunziper le fichier generatemodprobe.conf.gz2

  • Puis, le lancer avec

    	# sh -e generatemodprobe.conf
    	
    et voilà, si tout va bien, vous obtiendrez un beau /etc/modprobe.conf tout neuf !


1.8. Connaitre la taille des répertoires utilisateurs de son système

Pour savoir combien les utilisateurs de votre système consomme d'espace disque, il suffit de faire :

	for dir in $(ls /home); do du -shc /home/$dir; done
	


1.9. Désactiver les bips lorsque vous êtes en console

Les bips que l'on peut rencontrer lors des completions ou lors de mauvaises manipulations en console sont assez frustants voir même très énervants. Pour les désactiver, il suffit de mettre dans votre /etc/inputrc ou dans votre ~/.inputrc la ligne suivante

	set bell-style none
	
Il vous faudra vous reconnecter pour que les modifications soient prises en compte.


1.10. Observer ses logs dans un p'tit terminal

Voici une petite astuce qui permet de visionner ses logs en "direct" dans un terminal. Ouvrez un terminal et faites un tail -f fichier_log. Par exemple :

	# tail -f /var/log/syslog
	


2. X

2.1. Version de XFree

Pour accéder à toute les informations concernant la version de Xfree de votre système. Tapez la commande :

$ X -version 


2.2. Ma souris a pété un cable sous X

Vous avez probablement gpm de lancé. Si vous n'utilisez pas la souris en console, vous n'en avez pas besoin. Vous pouvez soit le désactiver en faisant /etc/init.d/gpm stop ou le retirer de votre système en faisant apt-get remove gpm sous root.

Si vous préférez garder gpm pour utiliser votre souris en console (c'est utile pour copier-coller avec le bouton du milieu), il faut modifier les configurations de X et de gpm pour que les deux programmes coopèrent au lieu de se concurrencer.

  • Éditer /etc/gpm.conf qui est le fichier de configuration de gpm. Chercher la ligne contenant repeat_type=. Le type spécifié est probablement ms3, le remplacer par raw. Ainsi, gpm retransmettra intégralement ce qu'il reçoit de la souris vers le device /dev/gpmdata.

  • Relancer ensuite gpm :

    	# /etc/init.d/gpm restart
    	

  • Dans le fichier de config de X (/etc/X11/XF86Config ou son équivalent), trouver la section qui correspond à la souris (en général "Configured Mouse"). Changer le paramètre Device en "/dev/gpmdata" pour que X lise les données de la souris sur /dev/gpmdata.

  • Redémarrer le serveur X. La souris doit maintenant fonctionner aussi bien sous X qu'en console.


3. Shell

3.1. Modifications des noms de fichiers

Voici quelques petits exemples pour renommer une multitude de fichiers selon différents critères :

  • Convertir les noms de fichiers de majuscule en minuscule :

    $ for i in *; do mv "$i" `echo $i | tr [:upper:] [:lower:]`; done

  • L'opération inverse est également possible :

    $ for i in *; do mv "$i" `echo $i | tr [:lower:] [:upper:]`; done

  • Remplacer les espaces dans le nom des fichiers en caractère souligné "_" (underscore) :

    $ for i in *\ *; do mv "$i" `echo $i | tr " " "_"`; done

  • L'opération inverse est également possible :

    $ for i in *_*; do mv "$i" "`echo $i | tr "_" " "`"; done

  • Pour éviter de faire des erreurs, vous pouvez tester cette commande ainsi les résultats seront affichés mais aucune modification ne sera faite :

    $ for i in *\ *; do printf "$i\n" | tr " " "_"; done

  • Changer les extensions des tous les fichiers d'un dossier :

    $ for i in *.txt; do mv $i `basename $i txt`old; done
    txt est l'extension à modifier ; old est la nouvelle extension.


3.2. Personnaliser son prompt

Les prompts (invite du shell) ne sont pas très intéressant. Sur une Debian, après une installation standard, les informations suivantes sont affichées :

utilisateur@machine:~$
La variable d'environnement à modifier pour avoir un prompt plus attrayant est PS1. Pour connaitre sa configuration actuelle, faites un echo $PS1, vous devriez avoir quelque chose comme ceci :
utilisateur@machine:~$ echo $PS1
\u@\h:\w\$ '
Vous allez me dire "mais qu'est-ce que c'est que ce charabia ??". En fait, cela est assez simple, voici les différentes caractères spéciaux qui permettent de définir cette fameuse variable :

  • \t Heure actuelle sous la forme 24 heures HH:MM:SS.

  • \T Heure actuelle sous la forme 12 heures HH:MM:SS.

  • \@ Heure actuelle sous la forme 12 heures am/pm.

  • \d Date actuelle sous la forme "jour_semaine mois date".

  • \l Le nombre de jobs gérés par le shell.

  • \n Saut de ligne.

  • \s Nom du shell.

  • \W Répertoire de travail.

  • \u Nom d'utilisateur.

  • \h Nom de l'ordinateur.

  • \! Numéro de commande courant.

  • \nnn Le caractère nnn (base huit) est affiché. Exemple un é s'écrira '\\351'.

  • \\ Affichage d'un anti-slash.

  • \v La version de bash.

  • \V La version de bash plus le niveau du patch.

  • \! Le numéro de l'historique de cette commande.

  • \# Le numéro de la commande de cette commande.

  • \[ Début d'une séquence de caractères qui ne seront pas affichés.

  • \] Fin d'une séquence de caractères qui ne seront pas affichés.

  • \e Caractère d'échappement ASCII(033).

  • \a Caractère de sonnerie ASCII (07).

Voici un exemple de configuration de variable :

PS1='\[\033[1;32m\][\t|\d]\[\033[1;33m\][\u@\h] \[\033[0;36m\]\w\$\[\033[0m\]\n '
Je vous laisse découvrir le résultat ;) En ce qui concerne les fichiers de configuration, il faut éditer soit le .bashrc de son répertoire personnel ou en root le fichier /etc/profile afin de définir un prompt tout joli pour tous ses utilisateurs. Si vous désirez appronfondir vos connaissances dans ce domaine, je vous invite à jeter un oeil au Bash Prompt HOWTO.


3.3. Changer la casse dans un terminal

Les systèmes Unix, contrairement à d'autres systèmes, sont sensibles à la casse. Le Bash possède de nombreux raccourcis claviers permettant de vous simplifier énormément les choses. Par exemple, admettons que vous tapez une commande en majuscule alors qu'elle devrait être en minuscule, pas besoin de tout effacer, il vous suffit de faire :

  • Ctrl+A = Retourne au début de la ligne.

  • Alt+L = Met en minuscule toutes les lettres à partir du curseur jusquà la fin de la ligne.

  • Alt+U = Met en majuscule toutes les lettres à partir du curseur jusquà la fin de la ligne.


4. Bureautique

4.1. Convertir des documents .doc en texte ASCII

Un petit utilitaire, antiword, est disponible afin de vous permettre de convertir tous vos fichiers avec l'extension .doc en ASCII. Pour l'installer, rien de plus simple :

#apt-get install antiword 
Son utilisation est relativement aisée ... Réferrez-vous à la page de man pour plus d'informations ;)