Copyright © 2011 Anderson Silva, Matt Woodson
Copyright © 2011 Eric Gérard
Copyright © 2011 Gaël Montreuil
Article paru dans le n°184 de la Gazette Linux de mars 2011.
Cet article est publié selon les termes de la Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.
Table des matières
Le mois dernier, Matt et moi avions décidé de partager avec vous pourquoi zsh valait le
détour. Matt partageait son fichier .zshrc
dans cet article, et nous avons commencé à parcourir
quelque uns des bonus disponibles avec zsh. Nous avions conclu la première partie de cette série
d'articles sur zsh en promettant de nous attaquer à quelques autres fonctions. Et bien, nous y
voilà:
Avec bash, effectuez une erreur de frappe avec vim et vous obtiendrez ce message infamant
command not found
dans la fenêtre du terminal. Avec zsh:
$
ivm
zsh: correct 'ivm' to 'vim' [nyae]?
Pour autoriser cette fonction ajoutez: setopt CORRECT à votre fichier
.zshrc
.
Si vous vous sentez vraiment chanceux, vous pouvez dire à zsh d'essayer de corriger vos fautes de frappe, même dans la liste d'arguments en utilisant: setopt CORRECT_ALL.
Trouvez vous find (sans jeu de mots) un peu trop lourd à utiliser? Ne vous méprenez pas, j'aime la commande find, mais l'englobement de zsh rend certaines formes de la commande zsh un peu laides.
Quelques exemples:
Trouver tous les exécutables de chaque propriétaire dans le répertoire courant et ses sous-répertoires:
avec find:
$
find . -perm -u+x -type -f
avec zsh:
$
ls -s **/*(.x)
Trouver les fichiers de taille supérieure à 100MB dans le répertoire courant et ses sous-répertoires:
avec find:
$
find . -type f -size 100M
avec zsh:
$
ls **/*(.Lm+100)
Lister tous les fichiers non .jpg dans le répertoire courant et ses sous-répertoires:
avec zsh:
$
ls **/^*.jpg
Vous pouvez autoriser l'englobement dans votre fichier .zshrc
en
ajoutant:
setopt extendedglob
Si vous voulez voir toutes les options d'englobement supportées par ls zsh entrez:
$
ls *(<tab>
completing glob qualifier % -- device files
) -- end of qualifiers
* -- executable plain files
+ -- + command name
- -- follow symlinks toggle
. -- plain files
/ -- directories
: -- modifier
= -- sockets
@ -- symbolic links
...
zsh utilise différents types d'alias: régulier, suffixe et global.
Les alias réguliers sont traités de la même façon qu'avec bash. Ces alias doivent être exécutés dans la ligne de commande (en premier) du terminal, par exemple:
alias ll=’ls -la’
Les alias suffixes lancent une commande basée sur l'extension des fichiers. Les alias
suffixes sont utilisés avec la commande alias -s
. Voici ma fonctionnalité favorite des alias
zsh: En ajoutant cette ligne:
alias -s html=vim
Lorsque vous entrez un nom de fichier avec son extension .html
, quelque chose
comme:
$
index.html
zsh va automatiquement invoquer vim pour l'ouvrir.
Les alias globaux peuvent être utilisés n'importe où dans la ligne de commande et pas seulement la commande de position. On le comprend mieux avec un exemple. L'alias global défini par:
alias -g G=’|grep ‘'
sera invoqué comme suit:
$
cat /var/log/messages G ERROR
Et la sortie s'effectuera avec la commande grep.
Un script shell donné:
(( X = 5.0 + 0.5 )) (( Y = 33.0 / 9.0 )) echo $X echo $Y
donnera en sortie
5.5000000000 3.6666666667
Souvent avec bash, j'ai eu besoin d'effectuer des calculs en virgule flottante pour différentes raisons. Maintenant, avec zsh, vous n'avez pas besoin d'invoquer des programmes externes comme bc ou perl pour effectuer des calculs en virgule flottante.
Si vous avez déjà utilisé git, vous avez probablement vérifié une branche, puis oublié dans quelle branche vous étiez, et lancé: git branch -a pour vous localiser dans le référentiel. Avec zsh, vous pouvez personnaliser votre prompt de façon à ce qu'il affiche toutes les informations pertinentes nécessaires pendant que vous naviguez dans quelques branches de systèmes de contrôle de version très fournis.
Pour que les informations VCS soient affichées, vous devez:
Charger le module vcs_info dans zsh. Vous obtiendrez cela en ajoutant la ligne
suivante dans votre fichier .zshrc
:
autoload -Uz vcs_info
Fixer les zstyles pour vcs_info. Ici, vous devez être capable de dire quel type de VCS zsh doit détecter, et comment il doit faire. Pour une information plus détaillée consultez zstyles pour vcs_info dans les pages du manuel zsh.
zstyle ':vcs_info:*' enable git cvs svn
Si vous consultez le fichier .zshrc
de Matt proposé le mois dernier, vous verrez
plusieurs autres zstyles configurés pour gérer la couleur et le comportement de la
fonction vcs_info.
Appeller la fonction vcs_info avant chaque prompt. Cela sera effectué par une fonction
zsh véritablement intéressante appelée precmd()
, que nous développerons dans la troisième
partie de la série consacrée à zsh.
precmd() {
vcs_info ‘prompt’
}
Fixer la variable PROMPT
avec la variable vcs_info_msg_0. Avec zsh, PROMPT
est la même
chose que PS1
.
PROMPT='${vcs_info_msg_0_}%B%F{blue}]─>%f%b’'
Sur cette copie d'écran, mon prompt me dit quel VCS j'utilise, git, dans quelle branche du référentiel je me trouve, et dans quel état de validation je suis actuellement.
L'astérisque jaune '*' signifie que j'ai modifié un fichier.
Le plus jaune '+' signifie que j'ai ajouté un fichier mais je dois encore le valider.
Ok, je viens d'inventer ce nom "Historique vertical des arguments", mais vous me comprenez. Savez-vous comment avec bash (et zsh), lorsque vous êtes sur la ligne de commandes, utiliser les flèches verticales haut et bas pour naviguer dans l'historique des commandes shell?
Avec bash, vous êtes peut-être familiers de la commande Alt+., qui vous amène au dernier argument de l'entrée précédente de votre historique. Et bien, avec zsh, on peut utiliser: Alt+/ (slash) et Alt+, (virgule) pour se déplacer dans l'historique des arguments utilisés... Vous avez compris? Essayez ceci:
$
touch 1 2 3 4 5
1 2 3 4 5
$ cp <Alt-Slash> /tmp
La commande ci-dessus avec Alt+/ génèrera:
$
cp 5 /tmp/
Tapez deux fois Alt+/, à la place d'une fois et cela génèrera:
$
cp 4 /tmp/
De la même façon que vous utilisez Alt+/ pour naviguer à travers la liste des arguments précédents, vous pouvez utiliser Alt+, pour revenir en arrière.
Je ne prétends pas être un expert de zsh, et au cours des quelques semaines passées, j'ai
titillé le cerveau de Matt à chaque fois que j'avais une question sur zsh, et, à chaque fois
il m'a décrit une nouvelle fonctionnalité. J'espère, que tout cela vous a donné quelques
raisons supplémentaires de jeter un oeil sur zsh, et nous sommes impatients de finir cette
série d'articles sur zsh le mois prochain en écrivant sur les fonctions precmd()
et preexec()
de zsh avec un ou deux exemples d'utilisation.
L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux.
Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site : http://www.traduc.org/Gazette_Linux.
Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.