Skip to content

Linux Attitude

Le libre est un état d'esprit

Archive

Archive for August, 2007

Niveau :      
Résumé : bash

Comme disait si bien un grand maître comique, chose promise, chom dû. Voici donc un article en forme de mémo contenant les raccourcis que vous devriez savoir pour utiliser au mieux votre shell. Les raccourcis présentés ici sont ceux de bash, mais nombreux sont ceux qui marchent dans d'autres outils et en particulier tous ceux qui utilisent readline. Certains fonctionnent aussi dans emacs. D'ailleurs, ces raccourcis ne fonctionnent en bash que si vous êtes en mode emacs (ce qui est le cas par défaut). Pour changer de mode :

$ set -o vi
$ set -o emacs

Les raccourcis

  • Esc-_ : ajoute le dernier argument de la dernière commande à la commande en cours.
$ cat fichier
$ rm <Esc-_> 
  • Ctrl-a : Aller en début de ligne.
  • Ctrl-e : Aller en fin de ligne.
  • Ctrl-k : Supprimer le reste de la ligne.
  • Ctrl-u : Supprimer tout ce qui précède sur la ligne (très pratique quand on sait qu'on vient de se tromper sur un mot de passe, pas besoin de chercher le nombre de backspace à taper).
  • Ctrl-w : Supprimer le dernier mot (délimité par un caractère blanc).
  • Esc-Backspace : Supprimer le dernier mot (délimité par un caractère non alphanumérique), notez la différence, utile dans le cas d'un chemin complet.
  • Ctrl-y : coller un élément supprimé récemment.
  • Ctrl-r : rechercher parmi les commandes récentes.
  • Ctrl-l : équivalent de la commande clear, vide le contenu du terminal.
  • Alt-* : affiche les complétions disponibles non pas comme option mais dans la ligne de commande (testez pour comprendre).
  • Ctrl-d : fin de fichier lorsqu'on est en train de founir du contenu, ou fermeture du shell lorsqu'on est sur une ligne de commande vde.
  • Alt-# : commente la ligne en cours et passe à une nouvelle ligne. pratique quand on a commencé à taper une ligne et qu'on veut pouvoir la rappeler plus tard sans l'exécuter maintenant.

PS : notez que esc et alt sont interchangeables. La différence consiste à ce que esc peut être relâché alors que alt doit être maintenu en même temps que la suite.

Niveau :      
Résumé : debootstrap

Tentons d'installer une debian miniature. Voyons jusqu'à quelle taille nous pouvons descendre.

Commençons par le commencement :

$ debootstrap etch /toto

Voila on commence déjà à 140Mo.

Supprimons quelques trucs inutiles

$ chroot /toto
$ export LANG=C
$ dpkg --get-selections | more
$ apt-get remove --purge cron logrotate  aptitude tasksel tasksel-data dmidecode laptop-detect
$ rm -f /var/lib/apt/lists/{ftp,http}.* /var/cache/apt/*.bin # au besoin apt-get update
$ rm -rf /usr/share/{man,doc}/* # pas besoin ;-)
$ rm -rf /usr/share/{locale,zoneinfo}/* # pas besoin :-p
$ rm -rf /usr/lib/gconv/* # encore des locale
$ passwd root

Et voila, nous sommes descendus à 51Mo. Et on est même en présence d'une vraie debian upgradable, modifiable a volonté.

Pratique pour booter en urgence !

Par contre, pour garder la ligne, pensez à faire un apt-get clean et un

$ rm -f /var/lib/apt/lists/{ftp,http}.* /var/cache/apt/*.bin

après chaque modification (update, upgrade, install)

Bien sur si vous avez besoin d'une vraie micro distribution, il y a bien mieux que debian. Mais c'est facile, c'est rapide et vous connaissez déjà debian :-) Sinon vous pouvez tenter tiny core.

Si vous n'avez pas encore de noyau pour booter, je vous conseille de faire le votre en monolithique pour ne pas avoir à trimballer les modules dans votre mini-distrib. Cela vous permettra au passage d'optimiser sa taille.

Maintenant si vous voulez booter cette mini distribution dans un initramfs (initrd pour les anciens, système de fichier en ram chargé par le bootloader pour les nouveaux) :

$ cd /toto
$ find . | cpio -o -H newc | gzip -9 > /initrd.gz

À passer en paramètre au noyau booté (initrd=/initrd.gz)

Veni vidi vici (comme disait un illustre inconnu)

Niveau :      
Résumé : acronymes en folaïe

Les meilleurs
GNU : GNU is Not Unix (rha mais ça ne se termine jamais ...)
Hurd : Hird of Unix-Replacing Daemons (mais c 'est quoi un Hird ?)
Hird : Hurd of Interfaces Representing Depth (mais euh ...)

Les protocoles
SMTP : simple mail transfer protocol (vous avez dit simple ?)
POP : post office protocol (du temps où l'internet n'était pas virtuel)
HTTP : hypertext transfer protocol (s/hypertext/generic/)

Les trucs bizares
SSO : single sign on (à connaître :-)
DDR : double data rate (vous voyez maintenant qu'il faut bien dire ddr sdram)
GTK : gimp toolkit (mais il n'a plus rien à voir avec gimp depuis longtemps)
PHP : personal home page tool (vieille version) devenu hypertext preprocessor (mais ce n'est même pas un accronyme !)

Le temps
UTC : coordinated universal time (VO) ou temps universel coordonné (VF) (anagramme loupé ?)
CEST : central european summer time (version heure d'été)
CET : central european time (saviez-vous différencier ces 2 là ?)

Les extensions
TAR : tape archive (demain j'invente un format de fichier pour disque dur, promis)
PDF : portable document format ()
PNG : portable network graphic (mais que viens faire le réseau ici ?)

Rien à voir
TCAS : Traffic Collision Avoidance System
FINUL : Forces Intérimaires des Nations Unies au Liban
Bavure : Balle atteignant victorieusement un ressortissant étranger

Comme disait si bien Tertullien : "Credo quia absurdum"

Niveau :      
Résumé : ./configure ; make ; make install

Si vous voulez installer un logiciel qui n'est pas proposé dans votre système de paquet, il est probable que le site du dit logiciel vous en propose les sources. Et ce pour plusieurs raisons, tout d'abord parce qu'on est dans un monde opensource, si ce n'est libre, et donc le source est à la source de tout. D'autre part c'est bien plus facile pour lui car il n'a pas à compiler pour vous et à vous fournir un binaire pour chaque architecture/distribution possible. Imaginez par exemple 7 distributions majeures x 13 architectures x 2 versions d'une bibliothèque dont on dépend, c'est à devenir fou !

L'auteur va donc se reposer sur les outils standards de compilation et sur une bonne âme (parfois lui-même) qui se proposerait de faire le paquet et l'inclure dans les distributions.

En attendant que votre distribution le propose, vous devez vous farcir le processus de compilation. Heureusement, il est en général automatisé et plutôt standard.

./configure

C'est la première commande que vous devez taper, en pratique elle va faire 2 choses, tout d'abord vérifier que toutes les dépendances sont présentes, et ensuite configurer et écrire un fichier Makefile qui contiendra les ordres de compilation. A chaque erreur de dépendance, à vous d'installer ce qu'il manque. Comme en général, il s'agit d'une bibliothèque. Sous debian vous la trouverez ainsi :

$ apt-cache search lib toto dev
  • lib : c'est une bibliothèque
  • toto :ce qu'on cherche
  • dev : on cherche la version pour le développement (avec les en-têtes pour permettre la compilation)

Pour la partie configuration, il y a un certain nombre de paramètres à passer à la commande. Les premiers sont standards. Pour en avoir la liste :

$ ./configure --help

Le paramètre le plus utilisé est --prefix= qui spécifie le répertoire dans lequel on veut installer le logiciel. Par défaut c'est /usr/local, ce qui est très bien lorsqu'on est dans une distribution standard.

Cette commande doit être tapée en tant qu'utilisateur normal.


continue reading...

Niveau :      
Résumé : - ; cd - ; grep -c ; grep -v ; <() ; >()

Utiliser des commandes avec des noms de fichier commencant par - (marche pour la plupart des commandes de base) :

# outils gnu
$ cmd -- -monfichier
# autres
$ cmd ./-monfichier

Utiliser stdin à la place d'un fichier dans une commande (marche pour la plupart des commandes de base (merci gnu)) :

$ cmd -

Revenir au répertoire précédent : cd -

$ cd /home && pwd
> /home
$ cd /mnt && pwd
> /mnt
$ cd - && pwd
> /home

Supprimer les lignes contenant toto :

$ grep -v toto

Compter le nombre de lignes contenant toto :

$ grep -c toto

Rediriger le résultat d'une commande vers une autre. Contrairement aux pipes, cette méthode fonctionne avec plusieurs fichiers et avec les commandes qui ne supportent pas stdin ou stdout. Et contrairement aux pipes nommés elle évite de devoir gérer les cas d'erreur et les suppressions.

Exemple pour faire un diff entre 2 fichiers distants :

$ diff <(ssh toto.net "cat fichier1") <(ssh titi.net "cat fichier2")

Exemple pour convertir une image à la volée pendant un upload :

$ convert image.jpg png:>(ssh youpi.fr "cat > image.png")

Niveau :      
Résumé : openvt ; deallocvt ; chvt

Que vous soyez un fan de la console ou que vous trainiez dans les scripts de directfb ou de serveur X ou encore s'il vous arrive fréquemment de booter en mode monoutilisateur, vous vous devez de connaître les commandes de manipulation des terminaux linux.

openvt : crée une nouveau terminal avec le premier numéro disponible. Passez l'option -s pour switcher automatiquement dessus. Vous pouvez passer une commande en paramètre pour qu'elle soit exécutée dans le nouveau terminal. Par défaut c'est /bin/sh qui est exécuté.

chvt : change le terminal courant pour celui dont le numéro est passé en paramètre. Bien pratique pour scripter le passage à un autre terminal ou au serveur X.

deallocvt : supprime le terminal passé en paramètre. Pour que cela fonctionne il faut déja avoir tué tous les processus qui tournent dans ce terminal.

Pour connaître votre terminal en cours vous aurez besoin de la commande tty. Et pour tuer tous les processus de tty1 :

$ ps ht tty1 -opid | xargs -n 1 kill -9