Personnalisation du terminal (Partie 2)

Sommaire du tutoriel

Salut les animaux !

Voici la 2nd partie de mon billet consacré à la personnalisation du terminal.

Aujourd’hui on rentre dans l’ergonomie, création d’alias et amélioration de l’auto-complétion.


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

Le palmarès des PS1

Je devais donc faire un palmarès des PS1 mais personne ne m’en a envoyé (sauf Ilphrin, mais il est trop similaire au mien, dsl et merci à toi). Bon c’est con, mais ça me fait ça en moins à faire.

Passons donc aux choses sérieuses.

Alias

Tout d’abort, les Alias. Alias est commande qui permet de remplacer un mot par un autre dans la console.

On ouvre donc ~/.bashrc ou ~/.zshrcl’on rajoute :

alias ping=’ping -c 5′

Ouvrer un nouveau terminal et taper :

$ ping google.fr
PING google.fr (173.194.67.94) 56(84) bytes of data.
64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_req=1 ttl=47 time=56.9 ms
64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_req=2 ttl=47 time=57.2 ms
64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_req=3 ttl=47 time=81.5 ms
64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_req=4 ttl=47 time=257 ms
64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_req=5 ttl=47 time=56.6 ms
— google.fr ping statistics —
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 56.681/102.019/257.746/78.442 ms

Et oui c’est magique, la commande n’a renvoyé que 5 pings !

Voici une petite selection que j’ai faite pour rien que pour vous :

Système

alias root=’sudo su’
alias reboot=’sudo reboot’
alias halt=’sudo halt’
alias ls=’ls –color=auto’
alias grep=’grep –color=auto’
alias ..=’ cd ..’
alias update=’yaourt -Syua’ #Archlinux via Yaourt
alias update=’sudo pacman -Syu’ #Archlinux via Pacman
alias update=’sudo apt-get update && sudo apt-get upgrade -y’ #Debian et Ubuntu
alias update=’sudo yum update’ #Fedora

Rq :  Merci à Oto Rhino pour la commande Ubuntu / Debian. Le « -y » permet d’automatiser le traitement

Spécial Arch, les news dans le terminal (source : forum Archlinux, merci à @Mr_Men @Moi):

alias update=’arch_news && yaourt -Syua’
arch_news () {echo -e « \n \\e[01;31m\t\t >> News Archlinux.fr << \\e[00m\n$(curl -s archlinux.fr/feed | sed '// – /g;s/[0-9]*:.*/\\e[00m/g;s/’/' »‘ »‘/g;s/–/-/g;/Archlinux.fr/d’ | sed ‘N;s/\n/\\033[1;34m/g;P;D;’) \n »}

Rq : Supprimer évidement tout les autres alias update et ne conservez que celui que vous voulez utiliser.
Rq2 : Ne vous moquez pas de moi sur les forums :)

Vous remarquerez l’utilisation d’une fonction – arch_news(), c’est facile et ça rends la lecture et l’utilisation plus claire.

Perso j’utilise aussi ces deux là :

> Pour avoir mon ip externe (source : quelquepartmaisjesaisplusoù ) :

myip () { lynx -dump -hiddenlinks=ignore -nolist http://checkip.dyndns.org:8245/ | awk ‘{ print $4 }’ | sed ‘/^$/d; s/^[ ]*//g; s/[ ]*$//g’ }

 > Pour savoir les commandes que je tape le plus (source : forum ubuntu):

top_history () {history | sed -e ‘s/sudo //’ | awk ‘{print $2}’ | sort | uniq -c | sort -rg | head}

Si vous faites souvent des conneries, quelques alias ajoutant des confirmations

alias cp=’cp -i’
alias mv=’mv -i’
alias rm=’rm -I’
alias ln=’ln -i’
alias chown=’chown –preserve-root’
alias chmod=’chmod –preserve-root’
alias chgrp=’chgrp –preserve-root’

Si vous en faites encore aprés ça, changer des distributions, korben vous à fait une petite sélection

Internet

alias ping=’ping -c 5′
alias openports=’netstat –all –numeric –programs –inet –inet6′

Vous pouvez aussi faire des liens vers vos propres scripts bash. Par exemple pour mpd

alias next=’sh ~/.script/next’
alias prev=’sh ~/.script/prev’
alias mpd_update=’sh ~/.script/mpd_update’

Avec les scripts suivant :

#!/bin/bash
#~/.script/next
mpc -h motdepasse@127.0.0.1 next

et

#!/bin/bash
mpc -h motdepasse@127.0.0.1 update ‘nom du dossier à mettre à jour’

Perso j’ai aussi ajouté un petit script de génération d’alias à la volé pour tout les fichiers de ~/script, tout les scripts que je mets dedans on alors un alias de la forme s_nomduscript (encore une exclusivité @4nti7rust):

for i in $(ls ~/script); do alias s_$i=’sh ~/script/$i’;done;

Du coup vous rajoutez ça avec vos alias dans le zshrc.conf et vous pourrez taper dans votre shell :

$ s_

L’autocompletion fera apparaître tout les fichiers de votre ~/script comme des commandes. Magique.

Je suppose que certains d’entre vous en ont plein d’autres. N’hesitez pas à les rajouter dans les commentaires.

Autocompletion (pour Bash Uniquement)

Même si les bash supporte nativement l’autocompletion pour les nom de fichier comande et variables, il reste possible de l’ameliorer et de l’étendre (pour les options de commandes par exemple).

Sous Archlinux (source : ArchWiki):

# pacman -S bash-completion

Sous Fedora (source : Tiplite) :

# yum install bash-completion

Dans les deux cas, veuiller à bien supprimer complete -cf sudo et autre commande similaire de votre bashrc, il semble que cela rentre en conflit.

Sous Debian (traduction du blog crsouza) :
Ouvrez votre terminal et taper :

$ gedit /etc/bash.bashrc

Puis décommenter les lignes suivantes :

# enable bash completion in interactive shells
#if [ -f /etc/bash_completion ]; then
#. /etc/bash_completion
#fi

Afin d’obtenir ceci :

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi

Si vous ne les trouvez pas, il faudra installer la paquet bash-completion

# aptitude install bash-completion 

Exemple :

apt-get ins
apt-get install
apt-get install amar
amaroK       amarok-engines

Autocompletion (pour Zsh Uniquement)

Je ne m’étendrais pas sur ce sujet, le système de base est juste génial. Pour les demandes un peu plus spécial, l’anglais sera nécessaire, mais les solutions seront nombreuses (trés).
Personnellement j’ai ajouté les lignes suivantes :

zmodload zsh/complist
autoload -Uz compinit
compinit
zstyle :compinstall filename ‘${HOME}/.zshrc’
#zstyle ‘:completion:*:pacman:*’ force-list always
#zstyle ‘:completion:*:*:pacman:*’ menu yes select
zstyle ‘:completion:*:default’ list-colors ${(s.:.)LS_COLORS}
zstyle ‘:completion:*:*:kill:*’ menu yes select
zstyle ‘:completion:*:kill:*’   force-list always
zstyle ‘:completion:*:*:killall:*’ menu yes select
zstyle ‘:completion:*:killall:*’   force-list always

Vous pouvez aussi aller voir chez les Zsh lovers ou ici pour apprendre à faire les vôtres.

Pour aller plus loin

Fortune

J’avais prévu de finir par mon préféré, Fortune.

Mais comme je trouve que le billet est trop long, vous aurez le droit à une partie 3 (The Bash Knight Return 3).

(Attention technique gizmodo) Il faudra tout de même que vous le méritez, pour cela deux solutions :

  • Un don, à moi-même (personnellement je m’en fais très souvent)
  • Un commentaire
@4nti7rust

Source (image et image et image et image qui n’a rien à faire ici)


5 Responses

  1. 4nti7rust 3 septembre 2012 / 21 h 52 min

    J’ai mit ta commande dans l’article pour l’update sous ubuntu et debian.

    Et pour te remercier j’ai viré mon commentaire trollesque sur Ubuntu ;)

  2. Oto Rhino 3 septembre 2012 / 12 h 40 min

    Merci pour toutes ces infos et suggestions d’alias.

    Une petite variante, pour maintenir son système à jour :
    alias maj=’sudo apt-get update && sudo apt-get upgrade -y’
    Le « -y » permet d’automatiser le traitement…

    Cela marche probablement sur Debian, mais certainement sur Ubuntu que j’aime beaucoup et utilise sur 3 matériels différents ;)

  3. 4nti7rust 2 septembre 2012 / 16 h 17 min

    Merci Phil. Alias est magique mais pas à ce point là … C’est corrigé.

  4. Anonymous 2 septembre 2012 / 15 h 08 min

    « Tout d’abort, les Alias. Alias est commande qui permet de remplacer un mort par un autre dans la console. »

    Heu… De drôles de choses dans cette console…
    ;-)
    Phil

Comments are closed.