personalisation prompt

Rédigé par Paulo Aucun commentaire
Classé dans : Bash, Linux Mots clés : prompt


 

Personalistion du prompt sur une RedHat like :
Ci-dessous, un fichier a placer dans '/etc/profile.d' qui :
- modifie la PS1 en rouge si 'root', en bleu si autre utilisateur.
- affichage del'heure, nom du host et repertoire courant
- divers alias
NB: le script doit être executable...

#!/bin/bash

# My prompt function
# Call it like that :
# my_prompt RED|BLUE|GREEN|CYAN|PURPLE 0|1
# RED|BLUE|GREEN|CYAN : Color of prompt
# 0|1 : whether the title bar shoud be set (1] or not (0)
function my_prompt
{
    local BLACK="\[\033[0;30m\]"
    local RED="\[\033[0;31m\]"
    local GREEN="\[\033[0;32m\]"
    local BROWN="\[\033[0;33m\]"
    local BLUE="\[\033[0;34m\]"
    local PURPLE="\[\033[0;35m\]"
    local CYAN="\[\033[0;36m\]"
    local LIGHT_GRAY="\[\033[0;37m\]"

    local DARK_GRAY="\[\033[1;30m\]"
    local LIGHT_RED="\[\033[1;31m\]"
    local LIGHT_GREEN="\[\033[1;32m\]"
    local YELLOW="\[\033[1;33m\]"
    local LIGHT_BLUE="\[\033[1;34m\]"
    local LIGHT_PURPLE="\[\033[1;35m\]"
    local LIGHT_CYAN="\[\033[1;36m\]"
    local WHITE="\[\033[1;37m\]"

    local NO_COLOR="\[\033[0m\]"

    local BLACK_BG="\[\033[40m\]"
    local RED_BG="\[\033[41m\]"
    local GREEN_BG="\[\033[42m\]"
    local BROWN_BG="\[\033[43m\]"
    local BLUE_BG="\[\033[44m\]"
    local PURPLE_BG="\[\033[45m\]"
    local CYAN_BG="\[\033[46m\]"
    local LIGHT_GRAY_BG="\[\033[47m\]"

    local DEFAULT_COLOR="\[\033[0m\]"
    local DEFAULT_COLOR_BOLD="\[\033[1m\]"

    case $1 in
	RED)
	    local FG=$LIGHT_RED
	    local BG=$RED_BG
	    ;;
	BLUE)
	    local FG=$LIGHT_BLUE
	    local BG=$BLUE_BG
	    ;;
	GREEN)
	    local FG=$LIGHT_GREEN
	    local BG=$GREEN_BG
	    ;;
	CYAN)
	    local FG=$LIGHT_CYAN
	    local BG=$CYAN_BG
	    ;;
	PURPLE)
	    local FG=$LIGHT_PURPLE
	    local BG=$PURPLE_BG
	    ;;
	*)
	    local FG=$LIGHT_GREEN
	    local BG=$GREEN_BG
	    ;;
    esac

    case $2 in
	1)
	    local TITLEBAR='\[\033]0;\u@\h:\w\007\]'
	    ;;
	*)
	    local TITLEBAR=""
	    ;;
    esac

    local PS1_PART1="$BG$WHITE-(\d \t)-$DEFAULT_COLOR$WHITE"
    local PS1_PART2="-($LIGHT_GREEN\h:\w$DEFAULT_COLOR$WHITE)-\n"
    local PS1_PART3="[$FG\u$DEFAULT_COLOR$WHITE]$DEFAULT_COLOR \\$ "
    PS1="$TITLEBAR$PS1_PART1$PS1_PART2$PS1_PART3"
}

function set_up_prompt
{
    case $TERM in
	xterm*)
	    local SET_TITLEBAR=1
	    ;;
	screen)
	    local SET_TITLEBAR=1
	    ;;
	*)
	    local SET_TITLEBAR=0
	    ;;
    esac

    case $1 in
	RED)
	    my_prompt RED $SET_TITLEBAR
	    ;;
	BLUE)
	    my_prompt BLUE $SET_TITLEBAR
	    ;;
	GREEN)
	    my_prompt GREEN $SET_TITLEBAR
	    ;;
	CYAN)
	    my_prompt CYAN $SET_TITLEBAR
	    ;;
	PURPLE)
	    my_prompt PURPLE $SET_TITLEBAR
	    ;;
	*)
	    local USER=`whoami` 

		if [ "$USER" = "root" ]; then
		    my_prompt RED $SET_TITLEBAR
		else
		    my_prompt BLUE $SET_TITLEBAR
		fi
	    ;;
    esac
}

# If running interactively, then:
if [ "$PS1" ]; then

    # don't put duplicate lines in the history. See bash(1) for more options
    export HISTCONTROL=ignoredups

    # check the window size after each command and, if necessary,
    # update the values of LINES and COLUMNS.
    shopt -s checkwinsize

    # enable color support of ls and also add handy aliases
    if [ "${TERM}" != "dumb" ]; then
        eval `dircolors -b`
        alias ls='ls --color=auto'
    fi

    # some more ls aliases
    alias ll='ls -lh'
    alias la='ls -A'
    alias lla='ls -lhA'
    alias l='ls -CF'

    # Less is better than more
    alias more='less'

    # Easy CVS update
    alias cvsu='cvs -z3 up -d -P'
    alias cvsi='cvs -z3 ci -m'

    # set a fancy prompt
    set_up_prompt

fi

export CVSEDITOR=emacs


 

Les commentaires sont fermés.