6 mar
2008
Si vous êtes utilisateur Linux, même débutant, je pense que vous avez compris que l'utilisation de la console (shell) et des lignes de commande est une nécessité ... mais cela peut aussi devenir un vrai plaisir ! Redéfinition du prompt, alias pour gagner du temps, etc ... Mais pour cela, il va falloir tout d'abord comprendre comment fonctionne notre système ...
(note : toutes les commandes suivantes ont été réalisées sur la distribution Linux Debian 4.0 « Etch ». Cependant, la plupart des commandes et fichiers doivent être identiques ou quelque peu adaptés selon les paquets présents pour fonctionner sur une autre distribution)
Pour l'instant, aucun paquet n'est nécessaire, si ce n'est bash, qui est installé sur toutes les distributions. Chaque fois que l'on lance une console, ou que l'on accède en ssh à une machine (un serveur par exemple), c'est bash qui s'exécute, on peut d'ailleurs le voir facilement en tapant la commande
top -u VOTREUSER
, qui aura pour effet d'afficher la liste des processus que vous éxécutez en ce moment, et lorsqu'une console se lance, c'est le processus bash qui s'ouvre. A chaque lancement de ce processus, bash va venir sourcer le fichier ~/.profile (~ étant bien sûr votre home). (ATTENTION : si vous utilisez la commande useradd, le fichier ~/.profile n'existe pas par défaut, il faudra le créer.) Ce fichier est un script bash, qui va définir certaines variables d'environnement ou encore faire appel à un ou plusieurs autre(s) fichier(s). Si vous avez déjà un petit peu bricolé du bash, vous savez très bien qu'une fois un script bash exécuté, toutes les variables définies dans ce script vont disparaitre. Cependant, lorsque l'appel est fait grâce à la commande source de cette manière :
source ~/.profileou encore, une autre manière équivalente est (souvent utilisée dans les scripts bash justement) :
. ~/.profileEn exécutant les scripts de cette manière, les variables d'environnement définies dans le script persisteront pendant toute la durée de vie du processus.
Si on jette un oeil au fichier ~/.profile, il doit contenir par défaut dans beaucoup de distributions quelque chose de ce genre :
# ~/.profile: executed by Bourne-compatible login shells.
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
Comme vous pouvez le constater, on fait içi appel à un second fichier, ~/.bashrc, et c'est ce fichier qui va nous intéresser pour le moment. On va y placer quelques instructions ...
Redéfinition du prompt (PS1)
Le prompt est ce qui est apparait à chaque ligne de commande, de base sous la forme :
user@host:path$
Le prompt est défini grâce à la variable PS1 dans le fichier ~/.bashrc. Par protection contre certains terminaux dits "stupides" (dumb), cette variable est définie de base différement selon le type de terminal qui utilise bash, mais de nos jours, on utilise tous des terminaux dits "intelligents", donc on peut juste ajouter tout en bas de notre fichier, par exemple :
export PS1='[\u@\h][\w] 'ce qui va produire le prompt suivant :
[user@host][path] Voici la liste des séquences d'échappement permettant de personnaliser votre shell, trouvée à la section PROMPT de la page de manuel de bash :
- \a le caractère d'alarme ASCII 07
- \d la date au format "Jour_de_la_semaine Mois Quantième" (ex : "Tue May 26")
- \e le caractère d'échappement ASCII 033
- \h le nom d'hôte de la machine, juqu'au premier point '.'
- \H le nom d'hôte complet de la machine
- \n un saut de ligne
- \r un retour-chariot
- \s le nom du shell, c'est à dire le nom de base de $0 (la portion suivant le dernier slash)
- \t l'heure actuelle au format HH:MM:SS sur 24 heures
- \T l'heure actuelle au format HH:MM:SS sur 12 heures
- \@ l'heure actuelle sur 12 heures au format HH:MM am/pm
- \u le nom de l'utilisateur
- \v la version de bash (par exemple 2.04)
- \V le numéro de version complet de bash par exemple (2.04.0)
- \w le répertoire de travail en cours
- \W le nom de base du répertoire de travail en cours
- \! le numéro d'historique de la commande
- \# le numéro de la commande
- \$ # si l'UID effectif est 0, $ sinon
- \nnn le caractère de code octal nnn
- \\ le caractère antislash
- \[ débute une série de caractères non-imprimables, qui permettent d'inclure des séquences de contrôle de terminal dans une chaîne d'accueil
- \] fin d'une série de caractères non-imprimables
Une fois que vous aurez façonner le prompt qui vous convient, il suffit de faire
source ~/.bashrcpour que ce soit pris en compte directement.
Les alias
Vous pouvez utiliser grâce à bash des raccourcis de commande que l'on appelle des alias; le principe est simple, appeler une commande par un nom qui n'est pas le sien au départ. Ca peut paraître stupide au départ, il y a bien assez de commandes comme ça pour en rajouter en plus. Cependant, pour des commandes que l'on utilise très souvent (je pense par exemple à ls, tar, etc), ou bien que l'on utilise majoritairement avec un argument, il peut être pratique de les renommer. Pour ce faire, on va utiliser la commande alias de cette manière :
alias LaNouvelleCommande='LaVraieCommande'Voici des exemples d'alias très pratiques que j'utilise tous les jours, avec les commentaires associés :
# faire un listing des fichiers et répertoires en mode vertical, avec
# les tailles en mode "human readable", et avec les couleurs
alias l='ls -lh --color'
# pareil, mais en affichant aussi les fichiers et répertoires
# commençant par .
alias ll='ls -Alh --color'
# permet d'éditer un fichier avec mcedit, mais peut être remplacé
# par n'importe quel éditeur de texte
alias e='mcedit'
# permet de parcourir très facilement un fichier pour le lire
alias m='less'
# permet de faire une mise à jour rapide lorsqu'on utilise
# le gestionnaire de paquet apt
alias maj='apt-get update && apt-get dist-upgrade'
# permet d'installer un paquet avec apt
alias i='apt-get install'
# permet de désinstaller un paquet avec apt
alias r='apt-get remove'
# extraire une archive tar.gz
alias x='tar xzvf'
# extraire une archive tar.bz2
alias xj='tar xjvf'
# créer une archive tar.gz
alias c='tar czvf'
# extraire une archive tar.bz2
alias cj='tar cjvf'
Vous êtes maintenant prêt à lire ce prochain article : comment rendre son shell encore plus puissant que Superman et Chuck Norris réunis (grâce à zsh) !
Commentaires
Le vendredi 7 mars 2008 à 20:22, baptiste a écrit :
Ajouter un commentaire