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.

Vus : 571
Publié par ljere : 30