« Zsh » : différence entre les versions

De Banane Atomic
Aller à la navigationAller à la recherche
 
(37 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>
# installation en une ligne
# copie du dépôt de OH-MY-ZSHELL
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
 
# installation 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
! Valeur
! Description
|-
| %M %m || hostname, version normale et version courte
|-
| %n || nom de l'utilisateur
|-
| %~ || chemin avec $HOME remplacé par ~
|-
|-
| $(git_prompt_info) || ~/.oh-my-zsh/lib/git.zsh
| $(git_prompt_info) || ~/.oh-my-zsh/lib/git.zsh
Ligne 117 : Ligne 137 :
|}
|}


=== PROMPT ===
== Alias natifs ==
<filebox fn=~/.zshrc lang=bash>
{| class="wikitable wtp wtmono1 wtmono2 wtmono4"  
# 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>
 
== Alias ==
{| class="wikitable wtp"  
! alias
! alias
! commande
! commande
Ligne 163 : Ligne 175 :
== [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}}
| [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 171 : 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.
|-
|-
| extract || Permet de désarchiver tous les formats d'archive avec la commande {{boxx|extract}}.
| [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/robbyrussell/oh-my-zsh/wiki/Plugins#systemd systemd] ===
=== [https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/alias-finder alias-finder] ===
<kode lang=bash>
Search alias for a specified command
# Alias sc-[cmd] → systemctl [cmd]
<kode lang='bash'>
sc-status nginx  → systemctl status nginx
alias-finder 'git commit -m'
sc-start nginx  → sudo systemctl status nginx
# gcmsg='git commit -m'
</kode>
# g=git
 
=== [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
# all aliases which contain git
alias-finder -l git
</kode>
</kode>


Ligne 203 : Ligne 221 :


=== common-aliases ===
=== common-aliases ===
{| class="wikitable wtp"  
{| class="wikitable wtp wtmono1 wtmono2"  
! alias
! alias
! commande
! commande
Ligne 239 : 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 264 : Ligne 304 :
|}
|}


=== [https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins#debian debian - alias apt] ===
=== [https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/rsync rsync] ===
{| class="wikitable wtp wtmono1 wtmono2"  
{| class="wikitable wtp wtmono2"
|-
! Alias
| adg || sudo apt-get update && sudo apt-get upgrade
! Command
|-
|-
| ai || sudo apt-get install
| rsync-copy || rsync -avz --progress -h
|-
|-
| ar || sudo apt-get remove
| rsync-move || rsync -avz --progress -h --remove-source-files
|-
|-
| apt-list-packages || liste les packages installés par taille
| rsync-update || rsync -avzu --progress -h
|-
|-
| apt-history || historique des packages installés, màj, supprimés
| 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

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