Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
zsh [Le 16/08/2010, 03:25]
david96 rajout de bash dans la balise code, pour la coloration
zsh [Le 18/11/2023, 17:47] (Version actuelle)
moths-art [Complétion pour la commande killall] Le correctif est très vieux. Le tips ne sert plus
Ligne 1: Ligne 1:
-{{tag>zsh BROUILLON}}+{{tag>console shell }}
  
 ---- ----
Ligne 5: Ligne 5:
 ====== ZSH ====== ====== ZSH ======
  
-===== Présentation ===== +**Zsh** est un interpréteur de commandes ([[shell]]), tout comme [[bash]].
-Zsh est un interpréteur de commandes (shell), tout comme bash.+
 Il fournit une interface entre l'​utilisateur et le système. Il est indispensable d'​avoir un interpréteur de commandes pour utiliser un système GNU/Linux (et même tous les autres systèmes). Il fournit une interface entre l'​utilisateur et le système. Il est indispensable d'​avoir un interpréteur de commandes pour utiliser un système GNU/Linux (et même tous les autres systèmes).
-Le shell par défaut dans Ubuntu est bash, c'est un shell qui a bien des avantages (notamment pour les scripts), mais il est assez limité dans certaines fonctionnalités comme l'autocompletion.+Le shell par défaut dans Ubuntu est [[bash]], c'est un shell qui a bien des avantages (notamment pour les scripts), mais il est assez limité dans certaines fonctionnalités comme l'autocomplétion.
 Zsh est plutôt orienté pour l'​interactivité avec l'​utilisateur. Zsh est plutôt orienté pour l'​interactivité avec l'​utilisateur.
 +
 ===== Installation ===== ===== Installation =====
-[[:​tutoriel:​comment_installer_un_paquet|installez le paquet]] [[apt://​zsh|zsh]] 
  
-Vous pouvez le lancer comme ceci : +[[:​tutoriel:​comment_installer_un_paquet|Installez le paquet]] **[[apt>​zsh|zsh]]**. 
 + 
 +===== Utilisation ===== 
 + 
 +Vous pouvez le lancer comme ceci :
   zsh   zsh
  
-Pour définir zsh comme shell par défaut (lorsque vous vous connectez dans un terminal (ou un emulateur ​de terminal), on peut utiliser l'​utilitaire chsh :+Pour définir zsh comme shell par défaut (lorsque vous vous connectez dans un [[terminal]] (ou un émulateur ​de terminal), on peut utiliser l'​utilitaire chsh :
   chsh   chsh
  
 On vous demande quel shell utiliser, répondez /bin/zsh (en toutes lettres). On vous demande quel shell utiliser, répondez /bin/zsh (en toutes lettres).
-<note important>​Vérifiez bien votre saisie avant de valider, sinon vous risquez d'​avoir un terminal non fonctionnel.</​note>​ +<note important>​ 
-Puis déconnectez vous et reconnectez vous. Et voilà, vous êtes sur zsh !+Vérifiez bien votre saisie avant de valider, sinon vous risquez d'​avoir un terminal non fonctionnel. 
 +</​note>​
  
-Si vous ne possedez ​pas les droit administrateur ​sur l'​ordinateur que vous utilisez, il vous suffit d'​inscrire ceci dans votre ~/.bashrc+Puis déconnectez-vous et reconnectez-vous. Et voilà, vous êtes sur zsh ! 
 + 
 +Si vous ne possédez ​pas les droits d'​administration ​sur l'​ordinateur que vous utilisez, il vous suffit d'​inscrire ceci dans votre fichier **~/.bashrc**
  
   exec zsh   exec zsh
 +  ​
 +<note tip>
 +Si gnome-terminal ne se lance pas avec zsh et continue de fonctionner avec bash alors il faut aller dans les préférences du profil dans le menu “Édition”.
 +Cocher “Exécuter une commande personnalisée de mon shell” dans l'​onglet “Titre et Commande”. Mettre zsh comme commande personnalisée.
 +</​note>​
  
 ===== Les fichiers de configuration ===== ===== Les fichiers de configuration =====
Ligne 34: Ligne 45:
  
 Il est possible que les distributions fournissent un ''/​etc/​zshrc''​ donc je vous conseille d'​aller voir ce qu'il y a dans ce fichier. Il est possible que les distributions fournissent un ''/​etc/​zshrc''​ donc je vous conseille d'​aller voir ce qu'il y a dans ce fichier.
-Pour toutes les modifications que vous ferez dans les fichiers de configuration,​ il faut lancer la commande ​"source" ​sur les fichiers que vous avez modifiés pour que ça prenne effet, par exemple :+Pour toutes les modifications que vous ferez dans les fichiers de configuration,​ il faut lancer la commande ​source” sur les fichiers que vous avez modifiés pour que ça prenne effet, par exemple :
   source ~/.zshrc   source ~/.zshrc
  
-Toutes les commandes qui vont être données peuvent être tapées directement dans le shell, mais pour qu'​elles prennent effet lors de la connexion au shell il faut les écrire dans un des fichiers de configuration (/​etc/​zsh/​zshrc ou ~/.zshrc) +Toutes les commandes qui vont être données peuvent être tapées directement dans le shell, mais pour qu'​elles prennent effet lors de la connexion au shell il faut les écrire dans un des fichiers de configuration (''​/​etc/​zsh/​zshrc'' ​ou ''​~/.zshrc''​)
- +
-Pour les feignants, il y a un fichier de configuration tout prêt en fin de page. LOL  +
- +
- +
  
 +Pour les feignants, il y a un fichier de configuration tout prêt en fin de page.
  
 ==== Complétion ==== ==== Complétion ====
Ligne 49: Ligne 56:
 La complétion sous Zsh est très avancée. Par défaut, vous avez par exemple : La complétion sous Zsh est très avancée. Par défaut, vous avez par exemple :
  
-  * Complétion sur les noms de domaines. Par exemple, après ssh <​TAB>,​ zsh complétera parmi les noms de domaines dans /etc/hosts, .ssh/ etc. , et même après +  * Complétion sur les noms de domaines. Par exemple, après ​''​ssh <TAB>''​, zsh complétera parmi les noms de domaines dans ''​/etc/hosts''​''​.ssh/'', ​etc. , et même après ​''​scp fichier user@domaine:​~/​ <TAB>''​, zsh complètera par les noms de fichiers sur le serveur
-scp fichier user@domaine:​~/​ <​TAB>,​ zsh complètera par les noms de fichiers sur le serveur+
  
-  * Complétion après make par les cibles ​possible ​du makefile+  * Complétion après ​''​make'' ​par les cibles ​possibles ​du Makefile
  
-  * Complétion sur les options des programmes, avec la description de celles-ci. Essayez par exemple mplayer -v <TAB>+  * Complétion sur les options des programmes, avec la description de celles-ci. Essayez par exemple ​''​mplayer -v <TAB>''​
  
   * Complétion sur les pages de manuel   * Complétion sur les pages de manuel
  
-  * ... et bien d'​autres+  * … et bien d'​autres
  
 Ajoutons que cette complétion est entièrement configurable : Ajoutons que cette complétion est entièrement configurable :
Ligne 73: Ligne 79:
   zstyle ':​completion:​*'​ select-prompt %SScrolling active: current selection at %p%s   zstyle ':​completion:​*'​ select-prompt %SScrolling active: current selection at %p%s
  
-Pour éviter de proposer un élément déjà présent lors d'un cp, mv ou rm :+Pour éviter de proposer un élément déjà présent lors d'​un ​''​cp''​''​mv'' ​ou ''​rm'' ​:
   zstyle ':​completion:​*:​rm:​*'​ ignore-line yes   zstyle ':​completion:​*:​rm:​*'​ ignore-line yes
   zstyle ':​completion:​*:​mv:​*'​ ignore-line yes   zstyle ':​completion:​*:​mv:​*'​ ignore-line yes
   zstyle ':​completion:​*:​cp:​*'​ ignore-line yes   zstyle ':​completion:​*:​cp:​*'​ ignore-line yes
  
-Sur Ubuntu, on utilise souvent ''​sudo'',​ donc il peut être intéressant d'​avoir la complétion lorsque la commande n'est pas dans votre $PATH :+Sur Ubuntu, on utilise souvent ''​sudo'' ​(doc [[sudo]]), donc il peut être intéressant d'​avoir la complétion lorsque la commande n'est pas dans votre $PATH :
   zstyle ':​completion:​*:​sudo:​*'​ command-path /​usr/​local/​sbin /​usr/​local/​bin \   zstyle ':​completion:​*:​sudo:​*'​ command-path /​usr/​local/​sbin /​usr/​local/​bin \
                              /​usr/​sbin /usr/bin /sbin /bin /​usr/​X11R6/​bin                              /​usr/​sbin /usr/bin /sbin /bin /​usr/​X11R6/​bin
- 
  
 Zsh supporte aussi les fonctions de complétion de bash, pour les utiliser : Zsh supporte aussi les fonctions de complétion de bash, pour les utiliser :
Ligne 87: Ligne 92:
   bashcompinit   bashcompinit
  
 +Ensuite il suffit de "​sourcer"​ les fichiers de configuration de bash. (''/​etc/​profile'' ​ ou ''​~/​.bashrc''​)
  
-Ensuite il suffit de "​sourcer"​ les fichiers de configuration de bash. (/​etc/​profile ​ ou ~/​.bashrc) +Zsh peut aussi vous corriger si vous tapez ''​sl'' ​à la place de ''​ls'' ​(sauf si vous avez installé sl LOL )
- +
-Zsh peut aussi vous corriger si vous tapez sl à la place de ls (sauf si vous avez installé sl LOL )+
   setopt correctall   setopt correctall
- 
- 
  
 ==== Le prompt ==== ==== Le prompt ====
  
-Le prompt est ce que vous voyezpar exemple :+Le prompt est ce que vous voyezpar exemple :
   vous@machine ~/src %   vous@machine ~/src %
  
 Ce prompt est contenu dans une (ou plusieurs) variables d'​environnements. La plus utilisée est certainement $PS1 Ce prompt est contenu dans une (ou plusieurs) variables d'​environnements. La plus utilisée est certainement $PS1
  
-Zsh fournit des prompts ​prêt à l'​emploi dans /​usr/​share/​zsh/​VERSION_DE_ZSH/​functions/​Prompts.+Zsh fournit des prompts ​prêts ​à l'​emploi dans /​usr/​share/​zsh/​functions/​Prompts.
 Pour les activer : Pour les activer :
   autoload -U promptinit   autoload -U promptinit
   promptinit   promptinit
-Vous pouvez avoir une liste des themes ​comme ceci :+ 
 +Vous pouvez avoir une liste des thèmes ​comme ceci :
   prompt -l   prompt -l
 +
 Mais aussi un aperçu de tous les prompts disponibles : Mais aussi un aperçu de tous les prompts disponibles :
   prompt -p   prompt -p
Ligne 114: Ligne 118:
   prompt NOM_DU_THEME   prompt NOM_DU_THEME
  
-Si vous voulez faire votre prompt vous mêmes, voyez cette page : [[http://www.gentoo.org/doc/fr/zsh.xml#​doc_chap2]]+Si vous voulez faire votre prompt vous mêmes, voyez cette page : [[https://wiki.archlinux.org/index.php/zsh|Arch Linux ZSH]]
  
 ==== Globbing ==== ==== Globbing ====
  
-La fonctionnalité qui vous fera oublier find 8-)+La fonctionnalité qui vous fera oublier ​[[tutoriel/​console_commandes_de_base#​find|find]] ​8-)
  
 Un exemple : <​code>​rm **/​*toto*</​code>​ supprimera tous les fichiers comprenant le mot toto dans le répertoire courant, et ensuite en cherchant récursivement dans tous les sous-dossiers. Un exemple : <​code>​rm **/​*toto*</​code>​ supprimera tous les fichiers comprenant le mot toto dans le répertoire courant, et ensuite en cherchant récursivement dans tous les sous-dossiers.
Ligne 126: Ligne 130:
 ==== ZLE ==== ==== ZLE ====
  
-ZLE désigne la zone dans laquelle vous tapez vos commandes. Vous pouvez utiliser les raccourcis claviers de vi ou d'emacs, au choix, et définir très facilement vos propres raccourcis. ​+ZLE désigne la zone dans laquelle vous tapez vos commandes. Vous pouvez utiliser les raccourcis claviers de [[:​Vim]] ​ou d'[[:Emacs]], au choix, et définir très facilement vos propres raccourcis. ​
 En vrac, quelques raccourcis par défaut : En vrac, quelques raccourcis par défaut :
  
   * <​Echap>​h va appeler la page de manuel du premier mot que vous êtes en train de taper   * <​Echap>​h va appeler la page de manuel du premier mot que vous êtes en train de taper
-  * <​Echap>​q va copier la ligne que vous étiez en train de taper en mémoire, pour vous laisser devant une ligne le vide. Vous pouvez alors rentrer une nouvelle commande, lorsque celle-ci sera terminée, zsh vous affichera la ligne en mémoire. +  * <​Echap>​q va copier la ligne que vous étiez en train de taper en mémoire, pour vous laisser devant une ligne vide. Vous pouvez alors rentrer une nouvelle commande, lorsque celle-ci sera terminée, zsh vous affichera la ligne en mémoire.
  
 ==== Alias ==== ==== Alias ====
  
-ZSH permet, comme bash, de définir des "alias", c'est à dire des commandes définies à partir d'​autres commandes, par exemple :+ZSH permet, comme bash, de définir des alias, cest-à-dire des commandes définies à partir d'​autres commandes, par exemple :
  
   alias la="ls -a"   alias la="ls -a"
  
-Permet de définir une commande '​la'​ qui seras identique à 'ls -a' (liste les fichiers du répertoire passé en paramètre, en incluant les fichiers cachés).+Permet de définir une commande ​''la'' qui seras identique à ''ls -a'' (liste les fichiers du répertoire passé en paramètre, en incluant les fichiers cachés).
  
-Pour pouvoir se servir en permanence de ces alias il faut qu'ils soient inscrits dans le fichier ~/.zshrc.+Pour pouvoir se servir en permanence de ces aliasil faut qu'ils soient inscrits dans le fichier ~/.zshrc. 
 + 
 +=== Alias suffixe ===
  
 Mais zsh va plus loin en permettant des alias sur les suffixes. L'​idée initiale vient du fait que pour certains types de fichiers nous exécutons toujours la même commande. Par exemple, un fichier PDF sera généralement lu avec votre lecteur PDF favori. Passons à la pratique afin d'​être plus clair. Mais zsh va plus loin en permettant des alias sur les suffixes. L'​idée initiale vient du fait que pour certains types de fichiers nous exécutons toujours la même commande. Par exemple, un fichier PDF sera généralement lu avec votre lecteur PDF favori. Passons à la pratique afin d'​être plus clair.
Ligne 153: Ligne 158:
  
 Cela va lancer evince pour ouvrir votre fichier PDF. Cela va lancer evince pour ouvrir votre fichier PDF.
 +
 +=== Alias globaux ===
 +
 +Zsh permet également de définir des alias “globaux” qui s’exécuteront quelle que soit leur position dans la ligne de commande, ainsi avec l'​alias :
 +
 +<​code>​ alias -g G=' | grep '</​code>​
 +
 +la commande :
 +
 +<​code>​ ls /bin G zsh</​code>​
 +
 +remplacera :
 +
 +<​code>​ ls /bin | grep zsh</​code>​
  
 ===== Un exemple de fichier zshrc ===== ===== Un exemple de fichier zshrc =====
Ligne 212: Ligne 231:
  
 ===== Une configuration avancée ===== ===== Une configuration avancée =====
 +
 Pour ceux qui ne souhaitent pas se plonger dans les fichiers de configurations de zsh, mais qui souhaitent tout de même avoir une configuration agréable à utiliser, je vous propose la configuration suivante : Pour ceux qui ne souhaitent pas se plonger dans les fichiers de configurations de zsh, mais qui souhaitent tout de même avoir une configuration agréable à utiliser, je vous propose la configuration suivante :
-<​code>​wget http://​formation-debian.via.ecp.fr/​fichiers-config/​zshrc +<​code> ​for pkg in zshrc zshenv zlogin zlogout dir_colors ;do sudo wget -cO /etc/zsh/$pkg https://​formation-debian.viarezo.fr/​fichiers-config/​$pkg ;done 
-wget http://​formation-debian.via.ecp.fr/fichiers-config/zshenv +sudo cp /etc/zsh/​dir_colors ​ /​etc/</​code>​ 
-wget http://​formation-debian.via.ecp.fr/​fichiers-config/​zlogin +
-wget http://​formation-debian.via.ecp.fr/​fichiers-config/​zlogout +
-wget http://formation-debian.via.ecp.fr/fichiers-config/​dir_colors +
-sudo mv zshrc zshenv zlogin zlogout ​dir_colors /etc/zsh</​code>​+
 Vous aurez un prompt en couleur, des raccourcis clavier similaires à ceux d'​[[:​Emacs]],​ ainsi qu'à ceux de [[:Vim]], et de nombreuses autres possibilités. Vous aurez un prompt en couleur, des raccourcis clavier similaires à ceux d'​[[:​Emacs]],​ ainsi qu'à ceux de [[:Vim]], et de nombreuses autres possibilités.
 +
 +===== Rendre ZSH plus sexy =====
 +
 +Vous pouvez utiliser des thèmes de terminal avec [[Oh-my-zsh|Oh my zsh]].
  
 ===== Résolution de problèmes ===== ===== Résolution de problèmes =====
-  ​les touches home, fin, ctrl+[aerl] et autres ne fonctionnent pas correctement,​ affichent des caractères ​bizarre: \\ peut etre en pensant bien faire vous avez selectionner ​lors de la configuration ​initiales ​les raccourcis type vi, et trouverez donc certainement dans votre ~/.zshrc la directive bindkey -v . dans ce cas essayez de remplacer cette directive par bindkey -e qui correspond aux raccourcis de type emacs et qui devraient restaurer le comportement attendu. + 
-=== Raccourcis clavier du terminal === +  ​Les touches home, fin, ctrl+[aerl] et autres ne fonctionnent pas correctement,​ affichent des caractères ​bizarre : \\ peut-être ​en pensant bien fairevous avez sélectionné, ​lors de la configuration ​initiale, ​les raccourcis type vi, et trouverez donc certainement dans votre ~/.zshrc la directive bindkey -v. Dans ce casessayez de remplacer cette directive par bindkey -e qui correspond aux raccourcis de type [[:​Emacs]] ​et qui devraient restaurer le comportement attendu. 
-Si ça ne résolu ​pas le bug (cf « résolution de problèmes »), insérer les lignes suivantes dans ~/.zshrc : + 
-<code bash># Touche de commande+==== Raccourcis clavier du terminal ===
 + 
 +Si ça ne résout ​pas le bug (cf « résolution de problèmes »), insérer les lignes suivantes dans ~/.zshrc : 
 + 
 +<code bash> 
 +# Touche de commande
 bindkey "​\e[H"​ beginning-of-line # Début bindkey "​\e[H"​ beginning-of-line # Début
 bindkey "​\e[F"​ end-of-line # Fin bindkey "​\e[F"​ end-of-line # Fin
 bindkey "​\e[3~"​ delete-char bindkey "​\e[3~"​ delete-char
-bindkey "​^R"​ history-incremental-search-backward # Rechercher</​code>​+bindkey "​^R"​ history-incremental-search-backward # Rechercher 
 +</​code>​ 
 <note tip>​Astuce,​ pour connaître les raccourcis clavier de votre terminal, taper la commande : <note tip>​Astuce,​ pour connaître les raccourcis clavier de votre terminal, taper la commande :
-<code bash>cat -v</​code>​ et taper sur la touche du clavier désirée pour connaître son bindkey, vous verrez que ce dernier ne correspond pas à ceux listés par : + 
-<code bash>​bindkey</​code>​+<code bash> 
 +cat -v 
 +</​code>​ 
 + 
 +et taper sur la touche du clavier désirée pour connaître son bindkey, vous verrez que ce dernier ne correspond pas à ceux listés par : 
 + 
 +<code bash> 
 +bindkey 
 +</​code>​ 
 À noter, que vous pouvez directement connaître le bindkey via Vim : passer en mode insertion et taper Ctrl V</​note>​ À noter, que vous pouvez directement connaître le bindkey via Vim : passer en mode insertion et taper Ctrl V</​note>​
  
-===== Autres ressources sur Zsh ===== 
  
-Quelques documentations ici : +===== Voir aussi ===== 
-  + 
-  * [[http://​wiki.gcu.info/​doku.php?​id=unix:​zsh_le_z_shell]] +  * [[Oh-my-zsh|Oh my zsh]] 
-  * [[http://www.gentoo.org/​doc/fr/zsh.xml]] [FR] +  ​* **(en)** [[https://wiki.gentoo.org/​wiki/Zsh|Guide sur l'​installation et la configuration de zsh]] sur Gentoo.org 
-  * [[http://​zshwiki.org/​home/​]] [EN+  ​* **(en)** [[https://​zshwiki.org/​home/​]] 
-  * [[http://​cli.asyd.net/​home/​shell/​zsh/​racine]] [FR]+  *  **(en)** ​[[https://​hackernoon.com/​macbook-my-command-line-utilities-f8a121c3b019#​.87unujp9a|Description des usages de la commande]
 +  ​* **(fr)** [[http://​cli.asyd.net/​home/​shell/​zsh/​racine]]
  
 ---- ----
  
-Contributeurs : +//Contributeurs : [[:​utilisateurs/​yannick_lm|yannick_lm]][[:​utilisateurs/​philpep-tlse|philpep-tlse]][[:​utilisateurs/​geenux|geenux]][[:​utilisateurs/​malko25|malko25]][[:​utilisateurs:​david96|david96]].// 
-[[:​utilisateurs/​yannick_lm|yannick_lm]] +
-[[:​utilisateurs/​philpep-tlse|philpep-tlse]] +
-[[:​utilisateurs/​geenux|geenux]] +
-[[:​utilisateurs/​malko25|malko25]] +
-[[:​utilisateurs:​david96|david96]]+
  • zsh.1281921955.txt.gz
  • Dernière modification: Le 18/04/2011, 14:46
  • (modification externe)