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 01/09/2022, 00:00]
moths-art Passage de http à https sur les liens externes (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
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 11: Ligne 11:
  
 ===== Installation ===== ===== Installation =====
 +
 [[:​tutoriel:​comment_installer_un_paquet|Installez le paquet]] **[[apt>​zsh|zsh]]**. [[:​tutoriel:​comment_installer_un_paquet|Installez le paquet]] **[[apt>​zsh|zsh]]**.
  
 ===== Utilisation ===== ===== Utilisation =====
  
-Vous pouvez le lancer comme ceci : +Vous pouvez le lancer comme ceci :
   zsh   zsh
  
Ligne 22: Ligne 23:
  
 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>​ 
 + 
 +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** 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**
Ligne 30: Ligne 34:
   ​   ​
 <note tip> <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"+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.+Cocher ​Exécuter une commande personnalisée de mon shell” dans l'​onglet ​Titre et Commande. Mettre zsh comme commande personnalisée.
 </​note>​ </​note>​
 +
 ===== Les fichiers de configuration ===== ===== Les fichiers de configuration =====
  
Ligne 40: 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 58: Ligne 64:
   * 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
Ligne 81: Ligne 87:
   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 :
   autoload -U bashcompinit   autoload -U bashcompinit
   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''​)
Ligne 92: Ligne 96:
 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 ====
Ligne 102: Ligne 104:
 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/​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 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 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 alias, il faut qu'ils soient inscrits dans le fichier ~/.zshrc.
Ligne 158: Ligne 161:
 === Alias globaux === === 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 ​:
-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>​ <​code>​ alias -g G=' | grep '</​code>​
  
-la commande ​  +la commande ​:
-  +
- <​code>​ ls /bin G zsh</​code>​+
  
-remplacera ​+<​code>​ ls /bin G zsh</​code>​
  
- <​code>​ ls /bin | grep zsh</​code>​+remplacera : 
 + 
 +<​code>​ ls /bin | grep zsh</​code>​
  
 ===== Un exemple de fichier zshrc ===== ===== Un exemple de fichier zshrc =====
Ligne 229: 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>​ 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 <​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
Ligne 234: Ligne 237:
  
 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-être en pensant bien faire, vous 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 cas, essayez de remplacer cette directive par bindkey -e qui correspond aux raccourcis de type emacs et qui devraient restaurer le comportement attendu.+ 
 +  ​* Les touches home, fin, ctrl+[aerl] et autres ne fonctionnent pas correctement,​ affichent des caractères bizarre : \\ peut-être en pensant bien faire, vous 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 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 ==== ==== 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 : 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+ 
 +<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>​
-==== Complétion pour la commande killall ==== 
-Pour ceux qui viennent de bash ils seront dérouté de voir que la commande killall ne propose pas de complétion,​ ce bogue a été corrigé :  [[https://​bugs.launchpad.net/​ubuntu/​+source/​zsh/​+bug/​204234|zsh'​s killall process tab completion should match bash's ]] 
  
-Pour faire simple, il suffit de rajouter dans le fichier /​etc/​zsh/​zshrc ​ les lignes suivantes : +
-<code bash>​zstyle ':​completion:​*:​processes'​ command 'ps -ax' +
-zstyle ':​completion:​*:​processes-names'​ command 'ps -aeo comm='​ +
-zstyle ':​completion:​*:​*:​kill:​*:​processes'​ list-colors '=(#b) #​([0-9]#​)*=0=01;​31'​ +
-zstyle ':​completion:​*:​*:​kill:​*'​ menu yes select +
-zstyle ':​completion:​*:​*:​killall:​*:​processes-names'​ list-colors '=(#b) #​([0-9]#​)*=0=01;​31'​ +
-zstyle ':​completion:​*:​*:​killall:​*'​ menu yes select</​code>​+
 ===== Voir aussi ===== ===== Voir aussi =====
  
 +  * [[Oh-my-zsh|Oh my zsh]]
   * **(en)** [[https://​wiki.gentoo.org/​wiki/​Zsh|Guide sur l'​installation et la configuration de zsh]] sur Gentoo.org   * **(en)** [[https://​wiki.gentoo.org/​wiki/​Zsh|Guide sur l'​installation et la configuration de zsh]] sur Gentoo.org
   * **(en)** [[https://​zshwiki.org/​home/​]]   * **(en)** [[https://​zshwiki.org/​home/​]]
Ligne 268: Ligne 284:
  
 //​Contributeurs : [[:​utilisateurs/​yannick_lm|yannick_lm]],​ [[:​utilisateurs/​philpep-tlse|philpep-tlse]],​ [[:​utilisateurs/​geenux|geenux]],​ [[:​utilisateurs/​malko25|malko25]],​ [[:​utilisateurs:​david96|david96]].//​ //​Contributeurs : [[:​utilisateurs/​yannick_lm|yannick_lm]],​ [[:​utilisateurs/​philpep-tlse|philpep-tlse]],​ [[:​utilisateurs/​geenux|geenux]],​ [[:​utilisateurs/​malko25|malko25]],​ [[:​utilisateurs:​david96|david96]].//​
 +
  • zsh.1661983215.txt.gz
  • Dernière modification: Le 01/09/2022, 00:00
  • par moths-art