Zsh

De Banane Atomic
Aller à la navigationAller à la recherche

Liens

Installation

Bash.svg
sudo pacman -S zsh zsh-completions zsh-lovers zsh-syntax-highlighting
# zsh-completions: ajoute la completion pour des fonctions supplémentaires
# zsh-lovers: astuces pour zsh, accessibles via man zsh-lovers
# zsh-syntax-highlighting: coloration syntaxique de la ligne de commande lors de la frappe

# définir zsh comme shell par défaut pour l'utilisateur courant
chsh -s /bin/zsh
# se relogguer pour que le modification soit prise en compte

Configuration

~/.zshrc
DEFAULT_USER=billy
~/.zshenv
# pour visudo
export EDITOR='nano'
# pour cron et yaourt
export VISUAL='nano'

# Afficher les pages de manuel en couleur grace à MOST. 
export PAGER="most"

# PATH
export PATH=$PATH:~/.config/yarn/global/node_modules/.bin

Startup Files

Les fichiers suivants sont lus au lancement de zsh:

~/.zshenv variables d'environnement
~/.zprofile équivalent de zlogin, mais lu avant zshrc
~/.zshrc Run Commands
~/.zlogin lu au démarrage d'un shell de connexion, après zshrc
~/.zlogout lu à la sortie d'un shell de connexion

History

Recherche dans l'historique Ctrl + R
Bash.svg
# supprimer tout les lignes contenant password
LC_ALL=C sed -i '/password/d' $HISTFILE
# il faut relancer zsh pour vérifier le résultat
Un espace en premier caractère d'une ligne de commande permet d'exécuter la commande sans l'enregistrer dans l'historique.
~/.zshrc
# don't store in history commands prefixed with a space (test with: history | tail)
setopt HIST_IGNORE_SPACE

Prompt

Variable Description
%M hostname
%m hostname until the first dot
%n username
%c current folder, ~ for $HOME
%# # if the shell is running with root (administrator) privileges, or else %
~/.zshrc
PROMPT='%c > '
RPROMPT='%n@%m'

# ajout de l'utilisateur et du nom de la machine hôte au PROMPT du thème robbyrussell si connexion ssh
if [[ -n $SSH_CONNECTION ]]; then
    PROMPT="%n@%m ${PROMPT}"
fi

OH MY ZSHELL!

Bash.svg
# copie du dépôt de OH-MY-ZSHELL
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh

# remplacement du fichier .zshrc
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

# ou installation via un script
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

Configuration

~/.zshrc
# thème
ZSH_THEME="robbyrussell"

# Modifier le prompt
#autoload -U colors && colors
#PROMPT="%{$fg_bold[blue]%}%~ %{$fg[white]%}➭%{$reset_color%}  "

# oh-my-zsh
source $ZSH/oh-my-zsh.sh

# plugins (ils se trouvent dans ~/.oh-my-zsh/plugins/ et ~/.oh-my-zsh/custom/plugins/)
plugins=(colored-man-pages common-aliases extract git sudo systemd wd)

# zsh-syntax-highlighting, doit être sourcé en dernier
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
Au lieu de modifier le fichier ~/.zshrc, il est possible de créer des fichiers de configuration *.zsh dans le dossier ~/.oh-my-zsh/custom/
  • ~/.oh-my-zsh/custom/aliases.zsh
  • ~/.oh-my-zsh/custom/functions.zsh
  • ~/.oh-my-zsh/custom/variables.zsh

Thèmes

  • agnoster (installer powerline-fonts pour patcher la police)
  • robbyrussell
Variable Description
$(git_prompt_info) ~/.oh-my-zsh/lib/git.zsh
${ret_status} ~/.oh-my-zsh/themes/robbyrussell.zsh-theme

local ret_status="%(?:%{$fg_bold[green]%}➜ :%{$fg_bold[red]%}➜ )"

Alias natifs

alias commande explication fichier
... ../.. ~/.oh-my-zsh/lib/directories.zsh
.... ../../.. ~/.oh-my-zsh/lib/directories.zsh
md mkdir -p créé un dossier et les dossiers parents au besoin ~/.oh-my-zsh/lib/directories.zsh
rd rmdir ~/.oh-my-zsh/lib/directories.zsh
alias_value donne la valeur d'un alias ~/.oh-my-zsh/lib/functions.zsh
_ sudo ~/.oh-my-zsh/lib/misc.zsh
Bash.svg
# rechercher dans quel fichier est définit un alias
zsh -ixc : 2>&1 | grep fd=find
# +~/.oh-my-zsh/plugins/common-aliases/common-aliases.plugin.zsh:37> alias 'fd=find . -type d -name'

Alias custom

~/.oh-my-zsh/custom/alias.zsh
Les alias custom ne fonctionnent pas dans les subshell car c'est bash qui est utilisé.
Il faut donc les définir dans bash aussi:

~/.bash_aliases
if [ -f ~/.oh-my-zsh/custom/alias.zsh ]; then
    . ~/.oh-my-zsh/custom/alias.zsh
fi

Plugins

alias-finder search alias for a specified command
archlinux ajoute des alias pour yay
colored-man-pages colore les pages man
command-not-found Si une commande n'est pas trouver, essaye de trouver le paquet pacman à installer pour cette commande.
Installer le paquet pkgfile.
common-aliases ajoute des alias pour le commandes courantes.
copybuffer Ctrl-o to copy the current line of the terminal in the clipboard.
extract Permet de désarchiver tous les formats d'archive avec la commande extract.
fd Auto-completion pour fd.
git ajoute des alias pour git.
ripgrep completion for ripgrep
rsync ajoute des alias pour rsync.
sudo Appuyer 2 fois sur Esc pour ajouter sudo en début de ligne de commandes.
systemd ajoute des alias pour systemd.
Warp directory permet de changer de dossier vers des dossiers marqués.

alias-finder

Search alias for a specified command

Bash.svg
alias-finder 'git commit -m'
# gcmsg='git commit -m'
# g=git

# all aliases which contain git
alias-finder -l git

chucknorris

  • Installer fortune-mod et cowsay
  • Ajouter chuck_cow à la fin de ~/.zshrc

common-aliases

alias commande explication
l ls -lFh -F ajoute un / à la fin des noms de dossiers
la ls -lAFh -A affiche tous sauf . et ..
lr ls -tRFh -R parcourt récursivement les dossiers
lt ls -ltFh trie par ordre antéchronologique de modification
ll ls -l
ldot ls -ld .* liste tous les fichiers et dossiers commençant par . sauf . et ..
lS ls -1FSsh liste par ordre décroissant de taille
lart ls -1Fcart liste par ordre chronologique de modification
lrt ls -1Fcrt liste par ordre chronologique de modification
zshrc $EDITOR ~/.zshrc
sgrep grep -R -n -H -C 5 --exclude-dir={.git,.svn,CVS} recherche récursivement du texte dans tous les fichiers
t tail -f afficher le contenu d'un fichier en temps réel
fd find . -type d -name
ff find . -type f -name
h history
hgrep fc -El 0 | grep recherche dans l'historique des commandes

debian - alias apt

Alias Commandes
adg sudo apt update && sudo apt upgrade
acs apt-cache search
ai sudo apt install
ap sudo apt purge
aac sudo apt autoclean
aar sudo apt autoremove
apt-list-packages liste les packages installés par taille
apt-history historique des packages installés, màj, supprimés

git

alias commande explication
g git
gcam git commit -a -m
ga git add
gaa git add --all
gst git status gs déjà utilisé pour GhostScript
gd git diff
ggp git push origin $(current_branch)
gba git branch -a

rsync

Alias Command
rsync-copy rsync -avz --progress -h
rsync-move rsync -avz --progress -h --remove-source-files
rsync-update rsync -avzu --progress -h
rsync-synchronize rsync -avzu --delete --progress -h

systemd

Bash.svg
# Alias sc-[cmd] → systemctl [cmd]
sc-status nginx  → systemctl status nginx
sc-start nginx   → sudo systemctl status nginx

wd - Warp Directory

Bash.svg
# lier un alias au dossier courant
wd add <alias>

# supprimer MonDossier de la liste
wd add/rm MonDossier

# se rendre à MonDossier depuis n'importe où
wd add MonDossier

wd list/show

Erreurs

Après l'autocomplétion, 2 caractères restent affichés

Définir une locale