Bashrc
On trouve de nombreuses questions sur la personnalisation du fameux fichier bashrc, je vais donc essayer de vous donner des éléments de réponses pour commencer il faut savoir qu'il y a trois scripts bashrc. Le premier dans le dossier utilisateur, les effets ont donc effets seulement sur le compte de l'utilisateur:
/home/$USER/.bashrc
Le second dans le dossier root, il est donc utilisé lorsque l'on passe en mode administrateur:
/root/.bashrc
Le troisième dans le dossier etc il affectera tout les utilisateurs y compris root:
/etc/.bashrc
Vu qu'on travaille sur le terminal je vais utiliser nano mais vous pouvez utiliser un autre éditeur j'ouvre donc mon fichier perso avec
nano ~/.bashrc
En début de fichier on peut insérer des commandes j'en profites donc pour mettre un message d’accueil ainsi qu'une variable qui nous servira plus tard
# ~/.bashrc: executed by bash(1) for non-login shells. # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) # for examples echo -e "\\\\033[01;37mBienvenue $USER, tu es logué sur $HOSTNAME.\\\\033[01;00m" K=$(uname -r)
Second réglage augmenter le nombre de ligne dans l'historique et la taille du fichier qui le stocke .bash_history pour ne pas le citer
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) HISTSIZE=2000 HISTFILESIZE=4000
On décommente force_color_prompt=yes pour avoir un peu de couleur
# uncomment for a colored prompt, if the terminal has the capability; turned # off by default to not distract the user: the focus in a terminal window # should be on the output of commands, not on the prompt force_color_prompt=yes
On va maintenant personnaliser notre prompt comme on a activé la couleur c'est le premier PS1 qui sera lu c'est donc lui qu'on va modifier
if "$color_prompt" = yes; then PS1='${debian_chroot:+($debian_chroot)}\\[\\\\033[01;32m\\]\\\\u@\\\\h\\[\\\\033[00m\\]:\\[\\\\033[01;34m\\]\\\\w\\[\\\\033[00m\\]\\\\$ ' else
Ainsi on obtient
jerem@jerem-SATELLITE-C670D-11L en vert : en blanc ~ en bleu $ et on finit en blanc c'est mieux mais ce n'est pas génial
Voici le mien
PS1='${debian_chroot:+($debian_chroot)}\\[\\\\033[01;30m\\]\\\\A \\[\\\\033[01;32m\\]\\\\u \\[\\\\033[01;35m\\] $K \\[\\\\033[01;34m\\]\\\\w\\[\\\\033[00m\\] $\\\\n'
\\[\\\\033[01;30m\\]\\\\A nous donne l'heure en couleur grise 08:38 \\[\\\\033[01;32m\\]\\\\u nous donne l'utilisateur en vert jerem \\[\\\\033[01;35m\\] $K nous donne le noyau en rose, que j'avais mis dans ma variable au début 3.8.0-30-generic-tuxonice \\[\\\\033[01;34m\\]\\\\w nous donne le répertoire courant en bleu ~ \\[\\\\033[00m\\] $ nous indique qu'on est sur un compte utilisateur car root donnerait # et la couleur et remise à zéro Quand à \\\\n c'est un saut de ligne.
Vous l'aurez compris c'est assez simple de se faire un message personnalisé avec un prompt tout autant personnalisé, il suffit d'utiliser quelque variable bien placé pour obtenir un prompt vraiment original. Je vais donc vous donner tout ce qui peut être utilisé directement,et je donnerai des idées de variable à la fin de l'article.
Commençons par les couleurs
# Couleur Format Normal Format Gras Noir = \\[\\\\033[00;30m\\] \\[\\\\033[01;30m\\] Rouge = \\[\\\\033[00;31m\\] \\[\\\\033[01;31m\\] Vert = \\[\\\\033[00;32m\\] \\[\\\\033[01;32m\\] Jaune = \\[\\\\033[00;33m\\] \\[\\\\033[01;33m\\] Bleu = \\[\\\\033[00;34m\\] \\[\\\\033[01;34m\\] Violet = \\[\\\\033[00;35m\\] \\[\\\\033[01;35m\\] Cyan = \\[\\\\033[00;36m\\] \\[\\\\033[01;36m\\] Blanc = \\[\\\\033[00;37m\\] \\[\\\\033[01;37m\\]
# Fond Noir = \\[\\\\033[040m\\] Rouge = \\[\\\\033[041m\\] Vert = \\[\\\\033[042m\\] Jaune = \\[\\\\033[043m\\] Bleu = \\[\\\\033[044m\\] Violet = \\[\\\\033[045m\\] Cyan = \\[\\\\033[046m\\] Blanc = \\[\\\\033[047m\\] Reset = \\[\\\\033[00m\\]
On peut aussi écrire les couleur de cette façon \\\\e[1;37m est identique à \\[\\\\033[01;37m\\] ce qui nous donne un blanc en gras. Puis les commandes
\\\\a le caractère d'alarme ASCII 07 \\\\d la date au format Jour Mois Date par exemple: mer. sept. 11 \\\\e le caractère d'échappement ASCII 033 \\\\h le nom d'hôte de la machine, juqu'au premier point ”.” \\\\H le nom d'hôte complet de la machine \\\\n un saut de ligne \\\\r un retour-chariot \\\\s le nom du shell, c'est-à-dire le nom de base de $0 (la portion suivant le dernier slash) \\\\t l'heure actuelle au format HH:MM:SS sur 24 heures \\\\T l'heure actuelle au format HH:MM:SS sur 12 heures \\\\@ l'heure actuelle sur 12 heures au format HH:MM am/pm \\\\A l'heure actuelle au format HH:MM sur 24 heures \\\\u le nom de l'utilisateur \\\\v la version de bash (par exemple 2.04) \\\\V le numéro de version complet (avec niveau de correctifs) de bash, par exemple (2.04.0) \\\\w le répertoire de travail en cours, avec $HOME abbrégé en tilde (”~”) \\\\W le nom de base du répertoire de travail en cours, avec $HOME abbrégé en tilde (”~”) \\\\! le numéro d'historique de la commande \\\\# le numéro de la commande \\\\$ # si l'UID effectif est 0, $ sinon \\\\nnn le caractère de code octal nnn \\\\\\\\ le caractère antislash \\[ débute une série de caractères non-imprimables, qui permettent d'inclure des séquences de contrôle de terminal dans une chaîne d'accueil \\] fin d'une série de caractères non-imprimables
On continue on décommente dir et vdir
# enable color support of ls and also add handy aliases if -x /usr/bin/dircolors; then test -r /.dircolors)" || eval "$(dircolors -b)" alias ls='ls --color=auto' alias dir='dir --color=auto' alias vdir='vdir --color=auto'
alias grep='grep --color=auto' alias fgrep='fgrep --color=auto' alias egrep='egrep --color=auto' fi
Maintenant on passe au alias c'est pour moi l'une des parties les plus intéressantes de bashrc
# some more ls aliases alias ll='ls -alF' alias la='ls -A' alias l='ls -CF'
# empêche d'effacer accidentellement des fichiers (devrait être mis d'origine) en demandant confirmation alias rm='rm -i' alias cp='cp -i' alias mv='mv -i'
# pas de message d'erreur si le dossier était déjà existant alias mkdir='mkdir -p'
#sortie plus compréhensible pour du et df alias du='du -kh' alias df='df -kTh'
mes alias perso
alias sl="sudo leafpad /etc/apt/sources.list" alias install='sudo apt-get install' alias reinstall='sudo apt-get install --reinstall' alias finstall='sudo apt-get -f install' alias update='sudo apt-get update' alias upgrade='sudo apt-get dist-upgrade -y' alias dupgrade='sudo apt-get update && sudo apt-get dist-upgrade -y && exit' alias remove='sudo apt-get remove' alias autoremove='sudo apt-get autoremove' alias purge='sudo apt-get remove --purge' alias add='sudo add-apt-repository' alias search='apt-cache search' alias clean='sudo apt-get clean' alias autoclean='sudo apt-get autoclean' alias sinstall='sudo apt-get install --no-install-recommends' alias freebox='lftp ftp://freebox:monpass@freeboxhd1.freebox.fr -e "mput /home/jerem/videofolder/* -O /Disque\\\\ dur/Video; quit" && thunar' alias mp4ts='h264tobox -C -i mp4 -o ts' # nécessite h264tobox alias mp4mkv='h264tobox -i mp4 -o mkv' # nécessite h264tobox alias mkvmkv='h264tobox -i mkv -o mkv' # nécessite h264tobox alias mkvts='h264tobox -C -i mkv -o ts' # nécessite h264tobox alias flvmkv='h264tobox -C -i flv -o mkv' # nécessite h264tobox alias avits='h264tobox -C -i avi -o ts' # nécessite h264tobox alias thfree='echo monpass | thunar ftp://freebox@hd1.freebox.fr/Disque\\\\ dur/Video/manga' alias sshljere='ssh ljere@monip' alias ljere='thunar ssh://ljere@monip/home/ljere'
Comme promis voici quelques suggestions de variables que vous pouvez utiliser
DATE=`date +"%a%d/%m"` HEURE=`date +"%H:%M:%S"` DISK=`df -h | grep sda | awk '{print $5}'` MEMU=`free -m | sed -n 's|^-.*:\\\\t*\\\\(0-9*\\\\) .*|\\\\1|gp'` MEMT=`free -m | sed -n 's|^M.*:\\\\t*\\\\(0-9*\\\\) .*|\\\\1|gp'`
Qu'on peut utiliser de cette façon
echo -en "Date:\\\\e[1;37m$DATE\\\\e[m Heure:\\\\e[1;36m$HEURE\\\\e[m Mémoire:\\\\e[1;35m$MEMU\\\\e[m/\\\\e[1;35m$MEMT\\\\e[m Espace Utilisé:\\\\e[1;34m$DISK\\\\n"
qui nous donne comme retour
Date:mer.11/09 Heure:12:11:39 Mémoire:2383/3558 Espace Utilisé:58%
Je vous donne aussi trois fonction qui peuvent vous être utile, monps et monpp, le second est plus loquace que le premier, ainsi que mabi (ma boite info)
# couleur du texte rouge='\\\\e[0;31m' bleu='\\\\e[0;34m' cyan='\\\\e[0;36m' vert='\\\\e[0;32m' jaune='\\\\e[0;33m'
reset='\\\\e[0m'
# couleur du fond ROUGE='\\\\e[41m' BLEU='\\\\e[44m' CYAN='\\\\e[46m' VERT='\\\\e[42m' JAUNE='\\\\e[43m'
function monps() { ps $@ -u $USER -o pid,%cpu,%mem,bsdtime,command ; } function monpp() { monps f | awk '!/awk/ && $0~var' var=${1:-".*"} ; } function ip() { MON_IP=$(/sbin/ifconfig eth0 | awk '/inet/ { print $2 } ' | sed -e s/adr://| sed -e s/inet6://) ; } IPEXT=`wget -q -O - checkip.dyndns.org | sed -e 's/^[:digit:\\\\|.]//g'` function mabi() { echo -e "${ROUGE} Vous êtes logué sur le compte:$reset" ; hostname echo -e "${ROUGE} Information Système:$reset" ; uname -a echo -e "${ROUGE} Utilisateurs logué sur:$reset" ; w -h echo -e "${JAUNE} Date complète:$reset" ; date echo -e "${CYAN} États de l'ordinateur:$reset" ; uptime echo -e "${VERT} États de la Mémoire:$reset" ; free my_ip 2>&- ; echo -e "${BLEU} Adresse IP Local:$reset" ; echo ${MON_IP:-"Pas connecté"} echo -e "${BLEU} Adresse IP Externe:$reset" ; echo ${IPEXT:-"Pas connecté"} echo }
C'est à vous d'imaginer la suite.