Shell

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

1 comments

Comments 1 - 1 of 1 previous next Post a comment

Post a comment
Embed Video
Edit your comment Cancel

Favorites, Groups & Events

Shell - Presentation Transcript

  1. Le shell : ZSH et divers Bruno Bonfils, <asyd@asyd.net> Mars 2008
  2. Disclaimer • Basé sur mon expérience personnelle • Pas de troll pendant la présentation, merci !
  3. Au programme • Le shell en général (retour d’expérience) • ZSH : • Le scripting • La complétion • ZLE (ZSH Line Editor) • Autres
  4. Rappel • Le shell n’est pas uniquement destiné à exécuter des commandes mais également (et surtout ?) à traiter des données • Extraction de colonnes • Modification de masse • Calculs
  5. Organisation • ~/download : une hiérarchie simple mais efficace • tmp • travail • docs • bin • tools • • Utilisation d’un SCM
  6. Utilisation • Outils indispensable • screen • Le cœur du shell : l’interpréteur (zsh !)
  7. Les outils • Les plus évidents • grep, find, xargs • sed, awk, perl • Les moins connus • socat • dict
  8. Les outils • screen • multiplexage / splitting • recherche dans buffer • hardstatus / title bars • copier/coller sans souris
  9. ZSH • Shell axé interactif • Maintenant disponible de base sur la plupart des Unix (sauf Linux...)
  10. ZSH • Quelques points forts de zsh • pattern matching • substitution • la complétion • plein d’autres...
  11. zsh : Pattern matching Oubliez find ! • Afficher l’ensemble des • Finalement non, je ne éléments d’un veux que les répertoires répertoire et de ses sous répertoires • ls -d **/*(/) • ls **/* • Autre exemples • Même chose, mais • ls *s* uniquement pour les fichiers • ls *s*(#i) • ls **/*(.) • ls *~*.(#i)(png|jpg)
  12. Substitution % var=/tmp/toto.txt % echo ${var:flag} h Équivalent à dirname (/tmp) Suppression de l’extension : r $ for file in **/*.jpg ; do convert $file ${file:r}.png ; done t Équivalent à basename (toto.txt) l Minuscule u Majuscule
  13. C: Capitalize U: Upper case Substitution L: Lower case % echo ${(flag)variable} o, O, n Tri u Unicité C,U, L Modification de la casse s:pattern: Splitting j:pattern: Joining
  14. zsh : Scripting Un exemple pratique • Obtenir la liste des alias définis dans le fichier ~/.muttrc pour en faire un tableau trié (exemple d’utilisation : fonction de complétion _mutt) alias asyd Bruno Bonfils <asyd@asyd.net> • Équivalent à : • # grep ‘^alias’ ~/.muttrc | awk { print $2 } | sort -u
  15. zsh : Scripting Un exemple pratique • Créer un tableau de lignes à partir d’un fichier : buffer=(${(f)”$( < ~/.muttrc)”}) • list=(${(M)buffer##alias}) • list=(${(o)${buffer/alias /}%% *})
  16. zsh : Scripting un second exemple % var=\"abc\" ; print ${(j::)${(Oas::)var}} cba Oa : reverse order
  17. Les tableaux associatifs • set -A myarray ; myarray=(key value) • echo $myarray[key]
  18. Les tableaux associatifs • set -A myarray ; myarray=(key value) • echo $myarray[key] ${(AA)array:=${(zs:=:)${(f)\"$(<tomcat.properties)\"}}}
  19. zsh : la complétion
  20. zsh : la complétion • La complétion vue par zsh : • réutilisable : la complétion ne se fait pas uniquement commande par commande, mais surtout par type de paramètres (hôtes, utilisateurs, groupes, paquets, etc.) • configurable à un très haut niveau
  21. zsh : la complétion • zstyle :completion:<widget>:<completer>:<context>:< argument>:<tag> <style> • 7 widgets • 11 completer (complete, approximate, match, etc.) • ~90 tags • ~100 styles (file-patterns, file-sort, list, users, etc.)
  22. zsh : la complétion • Une définition pour plus de 1500 commandes (tout OS confondus) • UNIX, Windows, OS-X
  23. zsh : la complétion • Une complétion parfois très poussée : • Liste des modules perl (perl -M<tab>, man <tab>, etc.) • Liste des paquets (distinction entre paquets disponibles/installés) • target Make/ant • Utilisation d’un cache possible
  24. zsh : la complétion • La complétion se configure d’une manière vraiment souple, via l’utilisation des zstyle : • zstyle ':completion:*' use-ip true • zstyle ':completion:*' use-cache on • zstyle ':completion:*' cache-path ~/.zsh/cache
  25. zsh : la complétion • zstyle ':completion:*:(all-|)files' ignored-patterns '(|*/)CVS' • zstyle ':completion:*:cd:*' ignored-patterns '(*/)#CVS' • zstyle ':completion:*' ignore-parents parent pwd
  26. zsh : la complétion • zstyle ':completion:*:*:gqview:*' file-patterns '*(-/):directories :(#i)*.(png|jpeg|jpg):all-files' • Pas de fonction de complétion pour gqview, mais je limite à la complétion des répertoires et des fichiers images, tolérant à la casse • zstyle ':completion:*:*:vi*:*' file-sort modification • le premier fichier proposé lors d’un vi <tab> sera le dernier fichier modifié
  27. zsh : la complétion • L’apparition des commandes aptitude-bundle-* m’a rendu fou (complétion multiple sur sudo apt<tab>) donc :
  28. zsh : la complétion • L’apparition des commandes aptitude-bundle-* m’a rendu fou (complétion multiple sur sudo apt<tab>) donc : • zstyle ':completion:*:complete:-command-::commands' ignored- patterns 'aptitude-*' • zstyle ':completion:*:*:sudo:*:commands' ignored-patterns 'aptitude-*'
  29. zsh : la complétion • Définir une complétion très simple pour un programme (ex: script nécessitant un hôte en paramètre) • #compdef _hosts backup.sh
  30. zsh : zle • Les interactions entre l’utilisateur et le moteur se font via la ZLE (ZSH command Line Editing) • Des modes vi, emacs • Très facile de modifier les bindkeys de base
  31. zsh : zle • Quelques widgets à connaître : • push-line • insert-last-word • history-search-{backward|forward}
  32. zsh : zle • Il est même très facile de créer ses propres widgets • Création d’une fonction • Associer cette fonction à un widget • Binder ce widget
  33. zsh : zle regex-edit () { local REPLY words words=(${=BUFFER}) read-from-minibuffer \"Regexp:\" echo $REPLY if [ -n $REPLY ]; then BUFFER=\"$words[1] $(echo $words[2,${#words}] | sed ${REPLY})\" fi } zle -N regex-edit bindkey \"^[e\" regex-edit
  34. zsh • Quelques autres fonctionnalités en vrac • suffix alias (./fichier.jpg) • complétion colorée • pile pour la gestion des répertoires • complétion intelligente sur les URL, gestion des bookmarks
  35. zsh : exemple de configuration % svn co http://svn.asyd.net/svn/zsh/trunk .zsh % ln -s .zsh/zshrc .zshrc % vi .zsh/README • Un fichier de configuration par • OS • Hôte
  36. zsh : exemple de configuration • Mise à jour dynamique de la hardstatusbar, titlebar de screen (ssh, telnet, etc.) • Quelques hacks sur des fonctions de complétion
  37. Plus d’infos • Doc de ZSH (23000 lignes de man, contre à peine plus de 5000 pour bash) • http://zshwiki.org/home/ • http://cli.asyd.net/home/ • echo subscribe | mail shell-request@asyd.net

+ Bruno BonfilsBruno Bonfils, 12 months ago

custom

589 views, 0 favs, 1 embeds more stats

L'utilisation du shell au quotidien
* Bonnes prati more

More info about this document

© All Rights Reserved

Go to text version

  • Total Views 589
    • 586 on SlideShare
    • 3 from embeds
  • Comments 1
  • Favorites 0
  • Downloads 1
Most viewed embeds
  • 3 views on http://www.slideshare.net

more

All embeds
  • 3 views on http://www.slideshare.net

less

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

Cancel
File a copyright complaint
Having problems? Go to our helpdesk?

Categories

Tags