Salut les animaux !
Sommaire du tutoriel
Vous avez finalement fait un pas vers Zsh, mais après avoir vu la console Bash de votre voisin (ayant suivit mon tutoriel), vous désespérez de votre console toute moisie ? Ne cherchez plus, vous êtes au bon endroit !
Cette semaine nous parlerons donc du prompt, PS1. Au programme, rajout de couleur, interaction avec l’utilisateur (nom du dossier, session, heure etc.)
Bash :
Partie 1 : La couleur
Partie 2 : Alias et auto-complétion
Partie 3 : Fortune et cowsay
Zsh :
Partie 1 : La couleur
Partie 2 : Alias et auto-complétion
Partie 3 : Fortune et cowsay
Pour rappel, Zsh est une alternative (assez génial) à bash. Pour l’utiliser, installer Zsh et taper dans votre old-bash :
$ chsh -s /bin/zsh
Rq : Cela permet de mettre zsh en console par défaut pour votre utilisateur. Vous pouvez faire de même en root pour que la console root soit aussi zsh.
C’est plutôt simple non ?
Rq2 : Si au démarrage Zsh vous propose un assistant, n’hésitez pas, je ne m’attarderais pas sur toutes les options et cet assistant peut vous aidez à faire votre choix.
La couleur
Voici ce que vous devez être capable de comprendre à la fin de ce tuto :
setprompt () {
# load some modules
autoload -U colors zsh/terminfo # Used in the colour alias below
colors setopt prompt_subst
# make some aliases for the colours: (coud use normal escap.seq’s too)
for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE; do
eval PR_$color=’%{$fg_bold[${(L)color}]%}’
done
PR_NO_COLOR= »%{$terminfo[sgr0]%} »
# Check the UID
if [[ $UID -ge 1000 ]]; then # normal user
eval COLOR_1=’${PR_RED}’
eval COLOR_2=’${PR_BLUE}’
elif [[ $UID -eq 0 ]]; then # root
eval COLOR_1=’${PR_RED}’
eval COLOR_2=’${PR_YELLOW}’
fi
# Check if we are on SSH or not
if [[ -n « $SSH_CLIENT » || -n « $SSH2_CLIENT » ]]; then
eval PR_HOST=’${PR_NO_COLOR}@${PR_YELLOW}%M${PR_NO_COLOR}’ # SSH
else
eval PR_HOST=’${PR_NO_COLOR}@${PR_YELLOW}_${PR_NO_COLOR}’ # no SSH
fi
# set the prompt
PS1=$’${COLOR_1}> ${PR_NO_COLOR}%T ${COLOR_2}%n${PR_HOST} ${PR_NO_COLOR}{ ${COLOR_1}%~ ${PR_NO_COLOR}} ${COLOR_2}%# ${PR_NO_COLOR}’
}
setprompt
Ce qui nous donne :
Pour commencer, ouvrons le fichier magique :
$ gedit ~/.zshrc
Rq : Vous devriez un fichier vide (sauf si vous avez lancé un assistant).
Avant de rajouter le traditionnel PS1, copier le script suivant :
# load some modules
autoload -U colors zsh/terminfo # Used in the colour alias below
colors setopt prompt_subst
# make some aliases for the colours: (coud use normal escap.seq’s too)
for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE; do
eval PR_$color=’%{$fg_bold[${(L)color}]%}’
done
PR_NO_COLOR= »%{$terminfo[sgr0]%} »
Cela permet en fait de charger les modules permettant d’afficher des couleurs et de créé des alias pour les couleurs principales. Ajouter ensuite
PS1=$’${PR_RED}> ${PR_NO_COLOR}%T ${PR_BLUE}%n${PR_HOST} ${PR_NO_COLOR}{ ${PR_RED}%~ ${PR_NO_COLOR}} ${PR_BLUE}%# ${PR_NO_COLOR}’
Puis relancer la console.
Prenez quelques secondes pour reprendre votre souffle face à tant de beauté et de couleurs.
Amusez-vous déjà avec cette partie. Voici les principales variables (via génération-linux):
%T Heure système (HH:MM).
%* Heure système (HH:MM:SS).
%D Date système (YY-MM-DD).
%n Nom d’utilisateur.
%B – %b Balises de début – fin de l’affichage en gras.
%U – %u Balises de début – fin de l’affichage souligné.
%d Répertoire de travail courant long.
%~ Répertoire de travail courant relatif à ~.
%M Nom d’hôte de l’ordinateur.
%m Nom d’hôte jusqu’au premier « . ».
%# # si utilisateur root, % sinon.
Pour les couleurs, c’est assez évident. Si vous ne voulez pas que votre prompt soit en gras, ils faut enlever _bold (juste aprés $fg) dans mon script des alias couleurs.
Maintenant vous pouvez vous amuser avec les conditions (comme dans mon exemple plus haut), ce n’est que du script … Et puis y a plein de commentaires. C’est le moment de montrer que vous avez de la ressource !
Pour que mon script marche vous devez évidement avoir défini Zsh comme console par Default pour le root et mit la configuration dans /etc/zsh/zshrc sous Archlinux (propablement vide), /etc/zshrc pour une majorité des autres (à vos wiki ou man).
Les options (via génération-linux)
Les options de zsh sont activables/désactivables grâce aux commandes setopt/unsetopt. Pour avoir la liste des options, faites
Il y deux avantages, vous avez le choix de celles que vous voulez utiliser et pas, et aussi un shell leger, car ne sont actives que celles qui sont utilisées.
En voici quelques unes :
always_to_end : si la complétion est réalisé au milieu d’une commande, le curseur revient à la fin.
autocd : cd automatique, permet de changer de répertoire sans indiquer cd.
beep : bip système.
correct : correction « orthographique » des commandes.
hist_verify : Quand la commande commence par « ! » pour utiliser l’historique, zsh affiche la commande dans le prompt sans l’executer.
hist_ignore_dumps : ne pas écrire les doublons dans l’historique.
Je ne parlerais plus dans mon tutoriel des options, elle sont bien trop nombreuses et spécifiques pour que je sois capable de faire une sélection qui plaise à tout le monde. Néanmoins, vous feriez une énorme erreur en oubliant cette partie de la configuration. Le man (en anglais) est trés complet et vous aidera dans cette tache longue, mais indispensable (cmb).
N’hésitez pas à poster vos créations dans les commentaires, avec un petit lien vers un Screenshot si possible ! Les meilleur seront affichés dans le prochain article.
La prochaine fois, je vous parlerais des alias et de ma touche TAB qui commence à vieillir.
@4nti7rust
Commentaires récents