Astuces sous gnu/Linux
Il arrive quelques fois que l'on souhaite faire des choses originales, ce document est ici pour montrer quelques usages que certains caractériseraient de compliqué. On pourrait aussi me qualifier de celui qui cherche la petite bête. Dans tous les cas ces astuces permettent de voir différentes utilisations que les systèmes unix nous fournissent.
Pourquoi des astuces sous gnu/Linux
gnu/Linux et les autres unix, sont des systèmes cherchant à offrir aux utilisateurs un grand nombre de fonctionnalités. En particulier :
- La manipulation de fichiers, que ce soit de leurs contenus, du transfert entre machines, de leurs archivages, et d'autres tâches répétitives en rapport avec les fichiers.
- Les accès à des bas niveaux au système et cela par de multiples points d'entrée.
Il est évident qu'il n'est pas possible de les couvrir toutes. Elles sont bien trop vastes. Cependant un nombre limité de celles-ci permettent souvent de couvrir une part raisonnable des fonctionnalités du système. Par leurs combinaisons ces astuces permettent de couvrir approximativement les différents besoins.
Astuces de manipulation de fichiers
Rediriger le flux
En plus de l'écriture dans des fichiers, les programmes disposent de deux sorties :
- la sortie standard
- la sortie d'erreur standard
lorsque l'on redirige les flux on le fait soit :
- avec le pipe "|" qui redirige la sortie standard d'un premier programme vers l'entrée du second
- soit avec le ">"qui redirige la sortie standard dans un fichier
On peut parfois souhaiter rediriger le second vers le premier.
# hdparm 2> /tmp/out
# hdparm 2>&1 | less
Dans le premier exemple cas on redirige la sortie erreur dans un fichier. La sortie standard n'ira pas dans ce fichier. Dans le second exemple on mélange les deux sorties, on utilise la commande less pour visualiser les sorties de la commande.
Mesurer la vitesse de sortie d'un programme
Il est possible de mesurer à l'aide de la commande dd la vitesse d'un flux de sortie d'un programme, il suffit pour cela de rediriger ce flux vers la commande dd. On redirige la sortie de celui-ci vers /dev/null. Ceci se fait de la façon suivante :
./program | dd of=/dev/null
Vérifier un flux
<-- par l'utilisation de la commande tar
( on notera au passage que le format de compression tar stock des informations de dates de modification, d'utilisateur et de permission de fichier ).
-->
Lorsque l'on transfère des données au dessus du réseau à l'aide de la commande netcat ( ou en local ) et que l'on souhaite vérifier les données transmises aussi bien du poste émetteur que du poste récepteur de cette information, on peut utiliser la procédure suivante :
mkfifo fifo
md5sum fifo &
tee tar -c l | tee fifo > l.tar
On obtient ainsi lors de l'écriture de l'archive sur le disque la somme numérique du fichier. De la même façon on pourrait sauvegarder le fichier sur un autre disque dur et parallèlement à cela l'envoyer sur le réseau vers une autre machine.
tr une commande bien pratique
La commande tr permet deux types d'usages :
- supprimer des caractères
- remplacer des caractères par un ou plusieurs caractères
La console
Bloquer la console
La console peut être bloquée à l'aide de la commande vlock.
Pouvoir disposer de plusieurs consoles débranchables et rebranchables en une seule
La commande screen permet de faire cela. Il existe d'autre part aussi la commande nohup qui redirige la sortie du programme vers le fichier nohup.out.
Les processus
Les programmes sont la clé tournante du systèmes. On peut interagir de différentes façons avec eux, on peut notamment les arrêter ou les bloquer, à l'aide des signaux SIGTERM, SIGSTOP, SIGCONT qui permettent d'arrêter, de bloquer et de debloquer un processus. On peut aussi envoyer un signal qui est de toute façon fatal : le signal 9. Les numéros des signaux précédents sont respectivement : 15 18 et 19. On peut les envoyer à l'aide de la commande kill -signal pid, où pid est le numéro du processus.
Il peut être intéressant d'envoyer un signal à un processus en utilisant son nom. On peut pour cela utiliser
Réserver une ressource
Ceci peut se faire dans les scripts à l'aide de la commande lock. On en trouve une description dans la page du manuel de bash, il est d'autre part possible d'ouvrir à l'aide du shell des flux d'entrées supplémentaires.
Le shell
Renommer des fichiers rapidement
On souhaite parfois juste changer l'extension d'un fichier, cela peut se faire de la façon suivante :
mv fichier.{txt,sav}
En réalité {txt,sav} permet de dupliquer l'entrée fichier et d'obtenir ainsi fichier.txt et fichier.sav comme argument de la commande mv.