GNU/Linux >> Tutoriels Linux >  >> Linux

5 conseils pour améliorer la productivité avec zsh

Le shell Z connu sous le nom de zsh est un shell pour les systèmes d'exploitation de type Linux/Unix. Il a des similitudes avec d'autres shells dans le sh (bourne shell), comme bash et ksh , mais il fournit de nombreuses fonctionnalités avancées et de puissantes options d'édition de ligne de commande, telles que la saisie semi-automatique améliorée.

Il serait impossible de couvrir toutes les options de zsh ici; il y a littéralement des centaines de pages documentant ses nombreuses fonctionnalités. Dans cet article, je vais vous présenter cinq astuces pour vous rendre plus productif en utilisant la ligne de commande avec zsh.

1. Thèmes et plugins

Au fil des ans, la communauté open source a développé d'innombrables thèmes et plugins pour zsh. Un thème est une configuration d'invite prédéfinie, tandis qu'un plug-in est un ensemble d'alias et de fonctions utiles qui facilitent l'utilisation d'une commande ou d'un langage de programmation spécifique.

Le moyen le plus rapide de commencer à utiliser des thèmes et des plugins consiste à utiliser un framework de configuration zsh. Il en existe de nombreux, mais le plus populaire est Oh My Zsh. Par défaut, il active certaines options de configuration zsh sensibles et il est livré avec des centaines de thèmes et de plugins.

Un thème vous rend plus productif car il ajoute des informations utiles à votre invite, telles que l'état de votre référentiel Git ou Python virtualenv en cours d'utilisation. Avoir ces informations en un coup d'œil vous évite de taper les commandes équivalentes pour les obtenir, et c'est un look sympa. Voici un exemple de Powerlevel9k, mon thème de prédilection :

En plus des thèmes, Oh My Zsh regroupe des tonnes de plugins utiles pour zsh. Par exemple, l'activation du plugin Git vous donne accès à un certain nombre d'alias utiles, tels que :

$ alias | grep -i git | trier -R | head -10
g=git
ga='git add'
gapa='git add --patch'
gap='git apply'
gdt=' git diff-tree --no-commit-id --name-only -r'
gau='git add --update'
gstp='git stash pop'
gbda=' branche git --no-color --merged | commande grep -vE "^(\*|\s*(master|develop|dev)\s*$)" | commande xargs -n 1 git branch -d'
gcs='git commit -S'
glg='git log --stat'

Il existe des plugins disponibles pour de nombreux langages de programmation, systèmes de packaging et autres outils que vous utilisez couramment sur la ligne de commande. Voici une liste des plugins que j'utilise sur mon poste de travail Fedora :

git golang fedora docker oc sudo vi-mode virtualenvwrapper 

2. Des alias intelligents

Les alias sont très utiles dans zsh. La définition d'alias pour vos commandes les plus utilisées vous permet d'économiser beaucoup de frappe. Oh My Zsh configure plusieurs alias utiles par défaut, y compris des alias pour naviguer dans les répertoires et des remplacements pour les commandes courantes avec des options supplémentaires telles que :

ls='ls --color=tty'
grep='grep  --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn}'

En plus des alias de commande, zsh active deux autres types d'alias utiles :l'alias de suffixe et l'alias global .

Un alias de suffixe vous permet d'ouvrir le fichier que vous tapez dans la ligne de commande à l'aide du programme spécifié en fonction de l'extension de fichier. Par exemple, pour ouvrir des fichiers YAML à l'aide de vim, définissez l'alias suivant :

alias -s {yml,yaml}=vim 

Maintenant, si vous tapez un nom de fichier se terminant par yml ou yaml dans la ligne de commande, zsh ouvre ce fichier en utilisant vim :

$ playbook.yml
# Ouvre le fichier playbook.yml en utilisant vim

Un alias global vous permet de créer un alias qui est développé n'importe où dans la ligne de commande, pas seulement au début. Ceci est très utile pour remplacer les noms de fichiers courants ou les commandes canalisées. Par exemple :

alias -g G='| grep -i' 

Pour utiliser cet alias, tapez G n'importe où vous taperiez la commande canalisée :

$ ls -l G do
drwxr-xr-x. 5 rgerardi rgerardi 4096 7 août 14:08 Documents
drwxr-xr-x. 6 rgerardi rgerardi 4096 Aug 24 14:51 Téléchargements

Voyons ensuite comment zsh aide à naviguer dans le système de fichiers.

3. Navigation facile dans le répertoire

Lorsque vous utilisez la ligne de commande, la navigation dans différents répertoires est l'une des tâches les plus courantes. Zsh facilite cela en fournissant des fonctionnalités utiles de navigation dans les répertoires. Ces fonctionnalités sont activées avec Oh My Zsh, mais vous pouvez les activer en utilisant cette commande :

setopt  autocd autopushd \ pushdignoredups 

Avec ces options définies, vous n'avez pas besoin de taper cd pour changer de répertoire. Tapez simplement le nom du répertoire et zsh bascule vers celui-ci :

$ pwd
/home/rgerardi
$ /tmp
$ pwd
/tmp

Pour revenir en arrière, tapez - :

Zsh conserve l'historique des répertoires que vous avez visités afin que vous puissiez basculer rapidement vers l'un d'entre eux. Pour voir la liste, tapez dirs -v :

$ dirs -v
0       ~
1       /var/log
2       /var/opt
3       /usr/bin
4       /usr/local
5       /usr/lib
6       /tmp
7       ~/Projects/Opensource.com/zsh-5tips
8       ~/Projects
9       ~/Projects/ansible
10      ~/Documents

Passez à n'importe quel répertoire de cette liste en tapant ~# où # est le numéro du répertoire dans la liste. Par exemple :

$ pwd
/home/rgerardi
$ ~4
$ pwd
/usr/local

Combinez-les avec des alias pour faciliter encore plus la navigation :

d='répertoires -v | tête -10'
1='cd -'
2='cd -2'
3='cd -3'
4='cd -4'
5='cd -5'
6='cd -6'
7='cd -7'
8='cd -8'
9='cd - 9'

Vous pouvez maintenant taper d pour voir les dix premiers éléments de la liste et le numéro pour y accéder :

$ d
0       /usr/local
1       ~
2       /var/log
3       /var/opt
4       /usr/bin
5       /usr/lib
6       /tmp
7       ~/Projects/Opensource.com/zsh-5tips
8       ~/Projects
9       ~/Projects/ansible
$ mot de passe
/usr/local
$ 6
/tmp
$ mot de passe
/tmp

Enfin, zsh développe automatiquement les noms de répertoire avec la complétion Tab. Tapez les premières lettres des noms de répertoires et TAB pour l'utiliser :

$ pwd
/home/rgerardi
$ p/o/z (TAB)
$ Projects/Opensource.com/zsh-5tips/

Ce n'est qu'une des fonctionnalités activées par le puissant système de complétion de tabulation de zsh. Regardons un peu plus.

4. Achèvement de l'onglet avancé

Le puissant système de complétion de Zsh est l'une de ses caractéristiques. Pour simplifier, je l'appelle complétion par tabulation, mais sous le capot, il se passe plus d'une chose. Il y a généralement l'expansion et l'achèvement de la commande. Je vais en discuter ensemble ici. Pour plus de détails, consultez ce Guide de l'utilisateur.

La complétion de commande est activée par défaut avec Oh My Zsh. Pour l'activer, ajoutez les lignes suivantes à votre .zshrc fichier :

autoload -U compinit
compinit

Le système de complétion de Zsh est intelligent. Il essaie de suggérer uniquement les éléments qui peuvent être utilisés dans certains contextes, par exemple, si vous tapez cd et TAB , zsh suggère uniquement les noms de répertoire car il connaît cd ne fonctionne avec rien d'autre.

Inversement, il suggère des noms d'utilisateur lors de l'exécution de commandes liées à l'utilisateur ou des noms d'hôte lors de l'utilisation de ssh ou ping , par exemple.

Il possède une vaste bibliothèque de complétion et comprend de nombreuses commandes différentes. Par exemple, si vous utilisez le tar commande, vous pouvez appuyer sur Tab pour voir une liste des fichiers disponibles dans le package en tant que candidats à l'extraction :

$ tar -xzvf test1.tar.gz test1/fichier1 (TAB)
fichier1 fichier2

Voici un exemple plus avancé, utilisant git . Dans cet exemple, lors de la saisie de TAB , zsh complète automatiquement le nom du seul fichier du référentiel qui peut être stocké :

$ ls
original  plan.txt  zsh-5tips.md  zsh_theme_small.png
$ git status
Sur branch master
Votre branche est à jour avec 'origin/master '.

Modifications non mises en scène pour la validation :
  (utilisez "git add ..." pour mettre à jour ce qui sera validé)
  (utilisez "git checkout -- ..." pour annuler les modifications dans le répertoire de travail)

        modifié :  zsh-5tips.md

aucune modification n'a été ajoutée au commit (utilisez "git add" et/ ou "git commit -a")
$ git add (TAB)
$ git add zsh-5tips.md

Il comprend également les options de ligne de commande et ne suggère que celles qui sont pertinentes pour la sous-commande sélectionnée :

$ git commit - (TAB)
--all                  -a       -- mettre en scène tous les chemins modifiés et supprimés
--allow-empty                   -- autoriser l'enregistrement d'un commit vide
--allow -empty-message           -- autoriser l'enregistrement d'un commit avec un message vide
--amend                         -- modifier l'astuce de la branche actuelle
--author                        - remplacer le nom de l'auteur utilisé dans le commit
--branch                        -- afficher les informations sur la branche
--cleanup                       -- spécifier comment le message de commit doit être nettoyé
--date                          - remplacer la date de l'auteur utilisée dans le commit
-- dry-run                       -- n'affiche que la liste des chemins qui doivent être validés ou non, et tout chemin non suivi lire le message de commit du fichier donné
--gpg-sign             -S       -- GPG-signer le commit--include              -i       -- mettre à jour les fichiers donnés et valider l'intégralité de l'index
--interactive                   -- mettre à jour interactivement les chemins d'accès dans le fichier d'index
--message              -m       -- utiliser le message donné comme message de validation

Après avoir tapé TAB , vous pouvez utiliser les touches fléchées pour naviguer dans la liste des options et sélectionner celle dont vous avez besoin. Désormais, vous n'avez plus besoin de mémoriser toutes ces options Git.

De nombreuses options sont disponibles. La meilleure façon de trouver ce qui vous est le plus utile est de l'utiliser.

5. Édition et historique de la ligne de commande

Les capacités d'édition de la ligne de commande de Zsh sont également utiles. Par défaut, il émule emacs. Si, comme moi, vous préférez vi/vim, activez les liaisons vi avec la commande suivante :

$ bindkey -v 

Si vous utilisez Oh My Zsh, le vi-mode plugin permet des liaisons supplémentaires et un indicateur de mode sur votre invite - très utile.

Après avoir activé les liaisons vi, vous pouvez modifier la ligne de commande à l'aide des commandes vi. Par exemple, appuyez sur ESC+/ pour rechercher l'historique de la ligne de commande. Pendant la recherche, appuyez sur n apporte la prochaine ligne correspondante, et N le précédent. Les commandes vi les plus courantes fonctionnent après avoir appuyé sur ESC comme 0 pour sauter au début de la ligne, $ pour sauter à la fin, i pour insérer, a à ajouter, etc. Même les commandes suivies d'un mouvement fonctionnent, telles que cw pour changer un mot.

En plus de l'édition de la ligne de commande, zsh fournit plusieurs fonctionnalités utiles d'historique de la ligne de commande si vous souhaitez corriger ou réexécuter les commandes utilisées précédemment. Par exemple, si vous avez fait une erreur en tapant fc apporte la dernière commande dans votre éditeur préféré pour le réparer. Il respecte le $EDITOR variable et par défaut utilise vi.

Une autre commande utile est r , qui ré-exécute la dernière commande ; et r <WORD> , qui exécute la dernière commande contenant la chaîne WORD .

Enfin, en tapant double coup (!! ) ramène la dernière commande n'importe où dans la ligne. Ceci est utile, par exemple, si vous avez oublié de taper sudo pour exécuter des commandes nécessitant des privilèges élevés :

$ less /var/log/dnf.log
/var/log/dnf.log :autorisation refusée
$ sudo !!
$ sudo moins /var/log/dnf.log

Ces fonctionnalités facilitent la recherche et la réutilisation des commandes saisies précédemment.

Où aller à partir d'ici ?

Ce ne sont là que quelques-unes des fonctionnalités zsh qui peuvent vous rendre plus productif; il y en a beaucoup plus. Pour plus d'informations, consultez les ressources suivantes :

Une introduction au Z Shell

Guide de l'utilisateur de ZSH

Wiki Archlinux

amoureux de zsh

Avez-vous des conseils de productivité zsh à partager ? J'aimerais en entendre parler dans les commentaires ci-dessous.


Linux
  1. Améliorez votre productivité avec ce bureau Linux léger

  2. Premiers pas avec Zsh

  3. Commande Linux Tee avec exemples

  4. Commande Nohup avec exemples

  5. Commande JQ sous Linux avec exemples

Commande AWK sous Linux avec des exemples

Commande Curl sous Linux avec des exemples

Commande Linux ip avec exemples

Commande Netcat (nc) avec exemples

15 Commande Linux ps avec exemples

Commande d'historique avec exemples