Zsh

Table of Contents

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)

Date: 26 Janvier 2017

Author: Cyril Bordage

Created: 2019-11-15 or. 18:57

Validate