« Zsh » : différence entre les versions
De Banane Atomic
Aller à la navigationAller à la recherche
(14 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 60 : | Ligne 60 : | ||
# don't store in history commands prefixed with a space (test with: history | tail) | # don't store in history commands prefixed with a space (test with: history | tail) | ||
setopt HIST_IGNORE_SPACE | setopt HIST_IGNORE_SPACE | ||
</filebox> | |||
= [https://www.tweaking4all.com/software/macosx-software/customize-zsh-prompt Prompt] = | |||
{| class="wikitable wtp wtmono1" | |||
! Variable | |||
! Description | |||
|- | |||
| %M || hostname | |||
|- | |||
| %m || hostname until the first dot | |||
|- | |||
| %n || username | |||
|- | |||
| %c || current folder, ~ for $HOME | |||
|- | |||
| %# || {{boxx|#}} if the shell is running with root (administrator) privileges, or else {{boxx|%}} | |||
|} | |||
<filebox fn='~/.zshrc' lang='bash'> | |||
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 | |||
</filebox> | </filebox> | ||
Ligne 103 : | Ligne 129 : | ||
{| class="wikitable wtp" | {| class="wikitable wtp" | ||
! Variable | ! Variable | ||
! | ! Description | ||
|- | |- | ||
| $(git_prompt_info) || ~/.oh-my-zsh/lib/git.zsh | | $(git_prompt_info) || ~/.oh-my-zsh/lib/git.zsh | ||
Ligne 116 : | Ligne 136 : | ||
<syntaxhighlight lang=bash inline>local ret_status="%(?:%{$fg_bold[green]%}➜ :%{$fg_bold[red]%}➜ )"</syntaxhighlight> | <syntaxhighlight lang=bash inline>local ret_status="%(?:%{$fg_bold[green]%}➜ :%{$fg_bold[red]%}➜ )"</syntaxhighlight> | ||
|} | |} | ||
== Alias natifs == | == Alias natifs == | ||
Ligne 167 : | Ligne 179 : | ||
| [https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/archlinux archlinux] || ajoute des alias pour {{boxx|yay}} | | [https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/archlinux archlinux] || ajoute des alias pour {{boxx|yay}} | ||
|- | |- | ||
| colored-man-pages || colore les pages {{boxx|man}} | | [https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/colored-man-pages colored-man-pages] || colore les pages {{boxx|man}} | ||
|- | |- | ||
| [https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/command-not-found command-not-found] || Si une commande n'est pas trouver, essaye de trouver le paquet {{boxx|pacman}} à installer pour cette commande.<br />Installer le paquet {{boxx|pkgfile}}. | | [https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/command-not-found command-not-found] || Si une commande n'est pas trouver, essaye de trouver le paquet {{boxx|pacman}} à installer pour cette commande.<br />Installer le paquet {{boxx|pkgfile}}. | ||
Ligne 173 : | Ligne 185 : | ||
| [[Zsh#common-aliases|common-aliases]] || ajoute des alias pour le commandes courantes. | | [[Zsh#common-aliases|common-aliases]] || ajoute des alias pour le commandes courantes. | ||
|- | |- | ||
| [https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/copybuffer copybuffer] || {{boxx|Ctrl- | | [https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/copybuffer copybuffer] || {{boxx|Ctrl-o}} to copy the current line of the terminal in the clipboard. | ||
|- | |- | ||
| [https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/extract extract] || Permet de désarchiver tous les formats d'archive avec la commande {{boxx|extract}}. | | [https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/extract extract] || Permet de désarchiver tous les formats d'archive avec la commande {{boxx|extract}}. | ||
Ligne 180 : | Ligne 192 : | ||
|- | |- | ||
| [[Zsh#git|git]] || ajoute des alias pour git. | | [[Zsh#git|git]] || ajoute des alias pour git. | ||
|- | |||
| [https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/ripgrep ripgrep] || completion for ripgrep | |||
|- | |- | ||
| [[Zsh#rsync|rsync]] || ajoute des alias pour rsync. | | [[Zsh#rsync|rsync]] || ajoute des alias pour rsync. | ||
Ligne 251 : | Ligne 265 : | ||
|- | |- | ||
| adg || sudo apt update && sudo apt upgrade | | adg || sudo apt update && sudo apt upgrade | ||
|- | |||
| acs || apt-cache search | |||
|- | |- | ||
| ai || sudo apt install | | 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-list-packages || liste les packages installés par taille |
Dernière version du 30 août 2023 à 23:09
Liens
Installation
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 |
# 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!
# 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/
|
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
|
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 |
# 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
alias-finder 'git commit -m' # gcmsg='git commit -m' # g=git # all aliases which contain git alias-finder -l git |
chucknorris
|
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
# Alias sc-[cmd] → systemctl [cmd] sc-status nginx → systemctl status nginx sc-start nginx → sudo systemctl status nginx |
wd - Warp Directory
# 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