10. Introduction
Ma vision du shell
Définition : un shell est un programme
fournissant une interface avec les
utilisateurs
mardi 5 mai 2009
11. Introduction
Ma vision du shell
Définition : un shell est un programme
fournissant une interface avec les
utilisateurs
La productivité fournie par un outil en ligne
de commande n’a jamais été égalée par des
applications graphiques (pour une
utilisation générique)
mardi 5 mai 2009
13. Organisation / Outils
Respecter une hiérarchie dans votre
répertoire utilisateur
mardi 5 mai 2009
14. Organisation / Outils
Respecter une hiérarchie dans votre
répertoire utilisateur
Un nombre fini de répertoire
mardi 5 mai 2009
15. Organisation / Outils
Respecter une hiérarchie dans votre
répertoire utilisateur
Un nombre fini de répertoire
Des noms explicites
mardi 5 mai 2009
16. Organisation / Outils
Respecter une hiérarchie dans votre
répertoire utilisateur
Un nombre fini de répertoire
Des noms explicites
Utilisation d’un SCM
mardi 5 mai 2009
17. Organisation / Outils
Respecter une hiérarchie dans votre
répertoire utilisateur
Un nombre fini de répertoire
Des noms explicites
Utilisation d’un SCM
Des outils annexes indispensables
mardi 5 mai 2009
18. Organisation / Outils
Respecter une hiérarchie dans votre
répertoire utilisateur
Un nombre fini de répertoire
Des noms explicites
Utilisation d’un SCM
Des outils annexes indispensables
screen
mardi 5 mai 2009
19. Organisation / Outils
Respecter une hiérarchie dans votre
répertoire utilisateur
Un nombre fini de répertoire
Des noms explicites
Utilisation d’un SCM
Des outils annexes indispensables
screen
dict
mardi 5 mai 2009
20. Exemple d’organisation
archives
bin
docs
download
etc
tmp
tools
work
Respecter cette hiérarchie sur l’ensemble de vos comptes/ordinateurs vous permet une plus grande productivité.
mardi 5 mai 2009
22. Un mot sur dict
dict est un outil client/serveur permettant
d’interroger un ensemble de dictionnaires
mardi 5 mai 2009
23. Un mot sur dict
dict est un outil client/serveur permettant
d’interroger un ensemble de dictionnaires
VERA (Virtual Entity of Relevant
Acronyms)
mardi 5 mai 2009
24. Un mot sur dict
dict est un outil client/serveur permettant
d’interroger un ensemble de dictionnaires
VERA (Virtual Entity of Relevant
Acronyms)
GCide, dictionnaire anglais
mardi 5 mai 2009
25. Un mot sur dict
dict est un outil client/serveur permettant
d’interroger un ensemble de dictionnaires
VERA (Virtual Entity of Relevant
Acronyms)
GCide, dictionnaire anglais
Et de nombreux autres
mardi 5 mai 2009
26. Un mot sur dict
dict est un outil client/serveur permettant
d’interroger un ensemble de dictionnaires
VERA (Virtual Entity of Relevant
Acronyms)
GCide, dictionnaire anglais
Et de nombreux autres
% dict bgp
BGP
Border Gateway Protocol (RFC 1267/1771, IP)
mardi 5 mai 2009
28. Un mot sur screen
Multiplexage de terminaux
mardi 5 mai 2009
29. Un mot sur screen
Multiplexage de terminaux
Découpage (split) des vues
mardi 5 mai 2009
30. Un mot sur screen
Multiplexage de terminaux
Découpage (split) des vues
Enregistrement, recherche
mardi 5 mai 2009
31. Un mot sur screen
Multiplexage de terminaux
Découpage (split) des vues
Enregistrement, recherche
Copier/Coller sans souris
mardi 5 mai 2009
32. Un mot sur screen
Multiplexage de terminaux
Découpage (split) des vues
Enregistrement, recherche
Copier/Coller sans souris
Hardstatus/title bar
mardi 5 mai 2009
33. Un mot sur screen
Multiplexage de terminaux
Découpage (split) des vues
Enregistrement, recherche
Copier/Coller sans souris
Hardstatus/title bar
Très utile en relation avec zsh !
mardi 5 mai 2009
34. Un mot sur screen
Title bar
Hardstatus bar
mardi 5 mai 2009
35. Un mot sur screen
RPS1
Dynamique
Title bar
Hardstatus bar
mardi 5 mai 2009
37. Un mot sur screen
Grâce à des fonctions, il est possible de
rendre dynamique le contenu des barres de
titre et de statut
mardi 5 mai 2009
38. Un mot sur screen
Grâce à des fonctions, il est possible de
rendre dynamique le contenu des barres de
titre et de statut
ssh, telnet vont définir le nom d’hôte
dans la barre de statut
mardi 5 mai 2009
39. Un mot sur screen
Grâce à des fonctions, il est possible de
rendre dynamique le contenu des barres de
titre et de statut
ssh, telnet vont définir le nom d’hôte
dans la barre de statut
heure, commande et chemin en cours
dans la barre de titre
mardi 5 mai 2009
43. La complétion zsh
Les concepts
Les widgets
les zstyles, où comment configurer la
complétion en fonction de ses envies
mardi 5 mai 2009
44. La complétion zsh
Les concepts
Les widgets
les zstyles, où comment configurer la
complétion en fonction de ses envies
Définir/étendre la complétion
mardi 5 mai 2009
46. Les concepts
Écrire des fonctions de complétion très
avancées, tout en pensant à la réutilisation
mardi 5 mai 2009
47. Les concepts
Écrire des fonctions de complétion très
avancées, tout en pensant à la réutilisation
Une configuration très fine, pouvant
contrôler le comportement de la
complétion
mardi 5 mai 2009
49. La complétion
Tout le monde connais la complétion sur
les commandes
mardi 5 mai 2009
50. La complétion
Tout le monde connais la complétion sur
les commandes
Mais zsh propose bien plus :
mardi 5 mai 2009
51. La complétion
Tout le monde connais la complétion sur
les commandes
Mais zsh propose bien plus :
Une complétion sur les arguments
mardi 5 mai 2009
52. La complétion
Tout le monde connais la complétion sur
les commandes
Mais zsh propose bien plus :
Une complétion sur les arguments
Une complétion contextuelle (différente
en fonction de l’argument précédent par
exemple)
mardi 5 mai 2009
54. Quelques exemples : apt-get
complétion des sous commandes (install,
update, etc.)
mardi 5 mai 2009
55. Quelques exemples : apt-get
complétion des sous commandes (install,
update, etc.)
complétion de la liste des paquets
mardi 5 mai 2009
56. Quelques exemples : apt-get
complétion des sous commandes (install,
update, etc.)
complétion de la liste des paquets
Gestion du statut du paquet (installé,
disponible)
mardi 5 mai 2009
57. Quelques exemples : apt-get
complétion des sous commandes (install,
update, etc.)
complétion de la liste des paquets
Gestion du statut du paquet (installé,
disponible)
Utilisation d’un cache
mardi 5 mai 2009
59. Quelques exemples :
configure
Lorsque l’on compile un logiciel à partir
des sources, s’il utilise les autotools, cela
commence généralement par un ./configure
--help | less pour connaître la liste des
options disponibles (surtout celles
spécifiques)
mardi 5 mai 2009
60. Quelques exemples :
configure
Lorsque l’on compile un logiciel à partir
des sources, s’il utilise les autotools, cela
commence généralement par un ./configure
--help | less pour connaître la liste des
options disponibles (surtout celles
spécifiques)
Avec zsh, passez vous de cette étape,
utiliser juste ./configure --<tab>
mardi 5 mai 2009
62. Autres exemples
pour la commande man, zsh complète non
seulement la liste des pages de manuels,
mais aussi la liste des modules perl
(documentation en pod)
mardi 5 mai 2009
63. Autres exemples
pour la commande man, zsh complète non
seulement la liste des pages de manuels,
mais aussi la liste des modules perl
(documentation en pod)
pour les options ao/vo de mplayer, la
définition de la liste est dynamique
mardi 5 mai 2009
70. approximate / correct
zsh dispose de fonctionnalités pour
corriger automatiquement des erreurs de
frappe
mardi 5 mai 2009
71. approximate / correct
zsh dispose de fonctionnalités pour
corriger automatiquement des erreurs de
frappe
Erreur de casse (cd /Etc)
mardi 5 mai 2009
72. approximate / correct
zsh dispose de fonctionnalités pour
corriger automatiquement des erreurs de
frappe
Erreur de casse (cd /Etc)
L’inversion de caractères (banane,
abnane)
mardi 5 mai 2009
73. approximate / correct
zsh dispose de fonctionnalités pour
corriger automatiquement des erreurs de
frappe
Erreur de casse (cd /Etc)
L’inversion de caractères (banane,
abnane)
Des caractères manquant, en trop
(ricard, richard)
mardi 5 mai 2009
74. les zstyle
Les zstyle permettent de contrôler de
manière très fine le comportement de la
complétion
Permet de définir des comportements à
plusieurs niveaux
global
par commande
par argument
mardi 5 mai 2009
76. Exemples de zstyle Commande
pour obtenir la liste
des processus
zstyle ':completion:*:processes' command
'ps -au$USER'
mardi 5 mai 2009
77. Exemples de zstyle
zstyle ':completion:*:processes' command
'ps -au$USER' Active le cache
zstyle ':completion:*' use-cache on
mardi 5 mai 2009
78. Exemples de zstyle
zstyle ':completion:*:processes' command
'ps -au$USER'
Ignore le
zstyle ':completion:*' use-cache on répertoire parent
zstyle ':completion:*' ignore-parents parent
pwd
mardi 5 mai 2009
79. Exemples de zstyle
zstyle ':completion:*:processes' command
'ps -au$USER'
zstyle ':completion:*' use-cache on
zstyle ':completion:*' ignore-parents parent de
Utilise l’heure
pwd modification comme
critère de tri pour vi
zstyle ':completion:*:*:vi*:*' file-sort
modification
Dans ce dernier cas, le comportement
est surchargé pour une commande !
mardi 5 mai 2009
85. La complétion
Pour une application dont il n’existe pas de
fonction de complétion, le widget _files est
utilisé
mardi 5 mai 2009
86. La complétion
Pour une application dont il n’existe pas de
fonction de complétion, le widget _files est
utilisé
Mais il est possible de surcharger ce
comportement
mardi 5 mai 2009
87. La complétion
Pour une application dont il n’existe pas de
fonction de complétion, le widget _files est
utilisé
Mais il est possible de surcharger ce
comportement
Un script maison attendant un nom
d’hôte en argument
mardi 5 mai 2009
88. La complétion
Pour une application dont il n’existe pas de
fonction de complétion, le widget _files est
utilisé
Mais il est possible de surcharger ce
comportement
Un script maison attendant un nom
d’hôte en argument
% compdef _hosts myscript
mardi 5 mai 2009
90. La complétion
Il est également possible de spécifier un
pattern matching afin de limiter la
complétion sur les fichiers
mardi 5 mai 2009
91. La complétion
Il est également possible de spécifier un
pattern matching afin de limiter la
complétion sur les fichiers
zstyle ':completion:*:*:lintian:*' file-patterns '*(-/):directories *.deb'
mardi 5 mai 2009
92. La complétion
Il est également possible de spécifier un
pattern matching afin de limiter la
complétion sur les fichiers
zstyle ':completion:*:*:lintian:*' file-patterns '*(-/):directories *.deb'
zstyle ':completion:*:*:gqview:*' file-patterns '*(-/):directories :(#i)*.(png|jpeg|jpg):all-files'
mardi 5 mai 2009
93. La complétion
Il est également possible de spécifier un
pattern matching afin de limiter la
complétion sur les fichiers
zstyle ':completion:*:*:lintian:*' file-patterns '*(-/):directories *.deb'
zstyle ':completion:*:*:gqview:*' file-patterns '*(-/):directories :(#i)*.(png|jpeg|jpg):all-files'
zstyle ':completion:*:cd:*' ignored-patterns '(*/)#CVS'
mardi 5 mai 2009
105. Étendre les bindkeys
Création d’un bindkey (vi): bindkey -s '((' '()ei'
mardi 5 mai 2009
106. Étendre les bindkeys
Création d’un bindkey (vi): bindkey -s '((' '()ei'
Permet de rajouter automatiquement la
parenthèse fermante et de reculer d’un
caractère
mardi 5 mai 2009
112. autopushd
autopushd est une option permettant la
mise en pile (stack) des n derniers
répertoires visités dans la session
permet de faire cd -<tab/numéro> pour
retourner rapidement un ancien répertoire
mardi 5 mai 2009
114. zmv
Lorsque que vous devez renommer
plusieurs fichiers, la manière classique est
d’utiliser une boucle
for file in **/*(#i).ogg ; do
mv $file ${(C)$file:r}.ogg ;
done
Puis autre boucle pour gérer les répertoires
mardi 5 mai 2009
115. zmv
Lorsque que vous devez renommer
plusieurs fichiers, la manière classique est
d’utiliser une boucle
mardi 5 mai 2009
116. zmv
Lorsque que vous devez renommer
plusieurs fichiers, la manière classique est
d’utiliser une boucle
mardi 5 mai 2009
117. zmv
Lorsque que vous devez renommer
plusieurs fichiers, la manière classique est
d’utiliser une boucle
mardi 5 mai 2009
118. zmv
Lorsque que vous devez renommer
plusieurs fichiers, la manière classique est
d’utiliser une boucle
Maintenant, pensez zmv !
% zmv '(*) - (*) - (*).ogg' '$1/$2/$1 - $2 - $3.ogg'
mardi 5 mai 2009
121. Les alias
Alias de suffixe
alias -s pem=”openssl x509 -noout -text -
in”
mardi 5 mai 2009
122. Les alias
Alias de suffixe
alias -s pem=”openssl x509 -noout -text -
in”
alias -s log=”tail -f”
mardi 5 mai 2009
123. Les alias
Alias de suffixe
alias -s pem=”openssl x509 -noout -text -
in”
alias -s log=”tail -f”
Alias globaux
mardi 5 mai 2009
124. Les alias
Alias de suffixe
alias -s pem=”openssl x509 -noout -text -
in”
alias -s log=”tail -f”
Alias globaux
alias -g L=”| less”
mardi 5 mai 2009
125. Historique partagé
Toutes les sessions partagent le même
fichier d’historique
Très utile pour coupler avec la recherche
d’historique !
mardi 5 mai 2009
126. Merci de votre attention !
En savoir plus :
http://www.zsh.org/ http://www.zshwiki.org/
http://cli.asyd.net/
mailto:shell-requests@asyd.net?Subject=subscribe
irc://#zsh@irc.freenode.net/
irc://#zsh-fr@irc.freenode.net/
mardi 5 mai 2009