« Zsh » : différence entre les versions
De Banane Atomic
Aller à la navigationAller à la recherche
(41 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> | ||
= [https://github.com/robbyrussell/oh-my-zsh OH MY ZSHELL!] = | = [https://github.com/robbyrussell/oh-my-zsh OH MY ZSHELL!] = | ||
<kode lang=bash> | <kode lang=bash> | ||
# | # copie du dépôt de OH-MY-ZSHELL | ||
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh | git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh | ||
# remplacement du fichier zshrc | # remplacement du fichier .zshrc | ||
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.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 -)" | |||
</kode> | </kode> | ||
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 117 : | Ligne 137 : | ||
|} | |} | ||
== Alias natifs == | |||
{| class="wikitable wtp wtmono1 wtmono2 wtmono4" | |||
== Alias == | |||
{| class="wikitable wtp" | |||
! alias | ! alias | ||
! commande | ! commande | ||
Ligne 162 : | Ligne 174 : | ||
== [https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins Plugins] == | == [https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins Plugins] == | ||
{| class="wikitable wtp" | {| class="wikitable wtp" | ||
| [[Zsh#alias-finder|alias-finder]] || search alias for a specified command | |||
|- | |||
| [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}}. | ||
|- | |- | ||
| extract || Permet de désarchiver tous les | | [[Zsh#common-aliases|common-aliases]] || ajoute des alias pour le commandes courantes. | ||
|- | |||
| [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/fd fd] || Auto-completion pour [[Bash_command_line#fd|fd]]. | |||
|- | |||
| [[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. | |||
|- | |- | ||
| [https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/sudo sudo] || Appuyer 2 fois sur {{boxx|Esc}} pour ajouter {{boxx|sudo}} en début de ligne de commandes. | | [https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/sudo sudo] || Appuyer 2 fois sur {{boxx|Esc}} pour ajouter {{boxx|sudo}} en début de ligne de commandes. | ||
|- | |||
| [[Zsh#systemd|systemd]] || ajoute des alias pour systemd. | |||
|- | |||
| [[Zsh#wd_-_Warp_Directory|Warp directory]] || permet de changer de dossier vers des dossiers marqués. | |||
|} | |} | ||
=== [https://github.com/ | === [https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/alias-finder alias-finder] === | ||
<kode lang=bash> | Search alias for a specified command | ||
<kode lang='bash'> | |||
alias-finder 'git commit -m' | |||
# gcmsg='git commit -m' | |||
# g=git | |||
# | # all aliases which contain git | ||
alias-finder -l git | |||
</kode> | </kode> | ||
Ligne 200 : | Ligne 221 : | ||
=== common-aliases === | === common-aliases === | ||
{| class="wikitable wtp" | {| class="wikitable wtp wtmono1 wtmono2" | ||
! alias | ! alias | ||
! commande | ! commande | ||
Ligne 236 : | Ligne 257 : | ||
|- | |- | ||
| hgrep || fc -El 0 <nowiki>|</nowiki> grep || recherche dans l'historique des commandes | | hgrep || fc -El 0 <nowiki>|</nowiki> grep || recherche dans l'historique des commandes | ||
|} | |||
=== [https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/debian debian - alias apt] === | |||
{| class="wikitable wtp wtmono1 wtmono2" | |||
! 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 | |||
|} | |} | ||
Ligne 261 : | Ligne 304 : | ||
|} | |} | ||
=== [https://github.com/ | === [https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/rsync rsync] === | ||
{| class="wikitable wtp | {| class="wikitable wtp wtmono2" | ||
! 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 | ||
|} | |} | ||
=== [https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins#systemd systemd] === | |||
<kode lang=bash> | |||
# Alias sc-[cmd] → systemctl [cmd] | |||
sc-status nginx → systemctl status nginx | |||
sc-start nginx → sudo systemctl status nginx | |||
</kode> | |||
=== [https://github.com/mfaerevaag/wd wd - Warp Directory] === | |||
<kode lang=bash> | |||
# 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 | |||
</kode> | |||
== Erreurs == | == Erreurs == | ||
=== Après l'autocomplétion, 2 caractères restent affichés === | === Après l'autocomplétion, 2 caractères restent affichés === | ||
Définir une [[Archlinux_installation#.2Fetc.2Flocale.gen|locale]] | Définir une [[Archlinux_installation#.2Fetc.2Flocale.gen|locale]] |
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