Zsh
Table of Contents
- 1. Avantages de zsh
- 2. Complétion
- 3. Expansion de noms de fichiers (globbing)
- 4. Globbing : opérateur
- 5. Globbing : drapeaux(flags)
- 6. Globbing : qualificateurs
- 7. Globbing : modifier
- 8. Variable
- 9. Invite de commande (Prompt)
- 10. Changement de dossier
- 11. Alias
- 12. ZLE : zsh line editor
- 13. Divers
- 14. Extensions
Salut à toi ! Bienvenue dans la bidouille !
Ce fichier est disponible à http://sed.bordeaux.inria.fr/la-bidouille/zsh.org
1 Avantages de zsh
- Complétion : affichage sous la commande, en fonction de la commande, descriptif des paramètres
- Globbing : génération de noms de fichiers à partir d'un motif
- Prompt double
- Correction des commandes
2 Complétion
- Ne remplit pas le terminal
- Affiche l'aide
- Dépendante de la commande
- ex : ls, man, git, kill, tmux, scp, make, configure, complétion, chmod, nmcli
- Personnalisable
- ex : tmux, résultat d'une commande…
- Recherche de motifs
3 Expansion de noms de fichiers (globbing)
- Plusieurs parties : opérateur, drapeaux, qualificateur
- Peut être complété
4 Globbing : opérateur
- * : toute chaine même la chaine vide (même dossier)
- file* -> file1, file21
- ** : toute chaine dans tous les sous-dossiers
- *file -> dir1/file1, dir2/file21
- ? : un caractère
- […] : un des caractères, un intervalle, ou une classe
- [a-z]*[1] -> file2, pas file1 ni File2
- x~y (EXTENDEDGLOB) : supprime y des résultats correspondants à x
- .txt~a.txt -> readme.txt, mais pas about.txt
- x# : pour zero ou plus d'occurences
- x## : pour une ou plus d'occurences
- ^x : tout sauf x
- (x|y) : x ou y
5 Globbing : drapeaux(flags)
- i : ignore la casse
- (#i)fileA -> fileA, FiLeA
- l : casse intelligente
- (#l)FileA -> FiLeA
- aNUM : approche la correspondance à NUM erreurs près
- (#a1)FileA -> fileA, FiLeA, FileB
- s et e : début ou fin de chaine
- ((#s)|/)test((#e)|/)' -> test, test/at/start, at/end/test, in/test/middle
6 Globbing : qualificateurs
- / : répertoire
- test*(/)
- . : fichier régulier
- @ : lien symbolique
- * : exécutable
- +CMD : si CMD renvoie le code de retour 0 avec le fichier
- om : tri par date de modification
- ex : *(.om[1]) -> fichier régulier le plus récent
- ex : *(Om[1]) -> fichier le plus vieux
- - : négation du qualificateur
- L[+|-]X : plus grand ou plus petit qu'une taille X
- *(Lm1) -> fichiers d'1o à 1Mo
- *(Lk-3) -> fichiers de moins de 3ko (strictement)
- m[+|-]X : modifié il y a X jours
- *(mk-3) -> fichiers de moins de 3ko (strictement)
- *(m0) -> ficher non modifié aujourd'hui
- *(m4) -> fichiers modifiés il y a 4 jours
7 Globbing : modifier
- a : chemin absolu
- *(:a) -> /tmp/file1 /tmp/file2
- A : chemin absolu et realpath
- e : garde l'extension
- h : comme dirname
- l : convertit en minuscule
- u : convertit en majuscule
- r : supprime l'extension
- r : supprime l'extension
- s/PAT/REPL : remplace PAT par REPL
- t : comme basename
8 Variable
- Modificateur comme pour Globbing
- Complétion (nom et valeur)
9 Invite de commande (Prompt)
- Un à gauche et un à droite qui disparait si besion
- Entièrement configurable : nom de branche git, dernier retour, mode d'édition
- Thèmes prédéfinis : prompt -l
10 Changement de dossier
- hash -d : pour créer un alias pour les dossiers
- ex : hash -d hwloc $HOME/pro/hwloc/src; cd ~hwloc
- ~- : dossier précédent, peut être complété
- … : -> ../../
- changement de sous-dossier avec même hiérarchie : cd old new
- ex : cd /var/log/cups; cd log cache
- pushd et popd : pile de dossiers
- Visualisation avec : dirs -v
- Utilisation avec ~NUM
- autojump : va dans un dossier déjà visité à partir d'un morceau
- bd : permet d'aller rapidement à un dossier parent
- ex : cd a/b/c/d; bd b
- ex : bd 2 <=> cd ../..
11 Alias
- Classiques : alias
- ex : alias emacs=vim
- Pour les suffixes : alias -s
- ex : alias -s tex="vim"
- Global : alias -g
- ex : alias -g H='| head'
- ex : alias -g LE="2>&1 | less"
12 ZLE : zsh line editor
- Comprend des modules à charger qui offrent des fonctions pour la ligne de commande
- ex : run-help, newest-files, copy-earlier-word
- Possibilité de les appeler avec un raccourci clavier (bindkey)
- Note : bindkey affiche la liste des raccourcis
13 Divers
- = -> which
- ex : vim =yaourt
- Multi-redirections
- ex : echo coucou > /tmp/test.txt | less
- ex : echo coucou > /tmp/test.txt >> /tmp/alltest.txt
- Outils : zmv, zcp
- Débogage de scripts : setopt XTRACE VERBOSE
14 Extensions
- Outils pour les gérer : zgen
- Pour charger une extension : zgen load <chemin>
- Quelques exemples
- zsh-users/zsh-completions : ajoute des compétions de commandes
- hlissner/zsh-autopair : ajoute symbole symétrique automatiquement
- zsh-users/zsh-syntax-highlighting : colorie la ligne de commande
- wting/autojump : cf changement de dossier
- Vifon/deer : navigateur de fichiers
- zsh-users/zsh-autosuggestions : propose dernière commande commençant pareil
- Tarrasch/zsh-bd : cf changement de dossier
- Tarrasch/zsh-autoenv : exécute des commandes lors de changements de dossier
- Oh-my-zsh : cadriciel pour configurer zsh très complet (200 extensions et 140 thèmes)