Aller au contenu Aller au menu
  • Dépêches
  • Journaux
  • Liens
  • Forums
  • Rédaction
  • 🎙️ Projets Libres

LinuxFr.org

Se connecter

Proposer un contenu

  • Pas de compte ? S’inscrire...

Re: et dans les commentaires

Retourner au contenu associé (entrée du suivi : bug du sommaire automatique sur les citations)

  • [^] # Re: et dans les commentaires

    Posté par Benoît Sibaud (site web personnel) le 08 juillet 2012 à 16:39. En réponse à l’entrée du suivi bug du sommaire automatique sur les citations. Évalué à 3 (+0/-0).

    Sommaire

    • !/bin/bash
    • An intelligent an non intrusive prompt for bash
    • Licensed under the AGPL version 3
    • This program is free software: you can redistribute it and/or modify
    • it under the terms of the GNU Affero General Public License as
    • published by the Free Software Foundation, either version 3 of the
    • License, or (at your option) any later version.
    • This program is distributed in the hope that it will be useful,
    • but WITHOUT ANY WARRANTY; without even the implied warranty of
    • MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    • GNU Affero General Public License for more details.
    • You should have received a copy of the GNU Affero General Public License
    • along with this program. If not, see <http://www.gnu.org/licenses/>.
    • 2012 (c) nojhan <nojhan@gmail.com>
    • Below are function for having a flexible dynamic prompt for power user:
    • - display the colored hostname when connected via ssh
    • - when root, color in yellow the [username path] and in red the sharp
    • - when user, print the colored git branch name (if in a git repository):
    • red = some changes are not commited, yellow = some commits are not pushed,
    • green = no changes or commits
    • - if necessary, print a counter for jobs that are attached to the current term (e.g. xterm &)
    • or that are sleeping (e.g. Ctrl-z)
    • - display the load average, colored with a colormap
    • - display the battery level (if necessary), with colormap
    • Some colors
    • Where are we?
    • Are we in an SSH connexion?
    • Who are we?
    • Count the number of attached jobs
    • Either attached running jobs (started with $ myjob &)
    • or attached stopped jobs (suspended with Ctrl-Z)
    • GIT branch display
    • Get the branch name of the current directory
    • Set a color depending on the branch state:
    • - green if the repository is up to date
    • - yellow if there is some commits not pushed
    • - red if there is changes to commit
    • System load
    • Get the load average
    • Construct the prompt
    • different colors depending on connexion type and user
    • add job count
    • add prompt mark
    • add colored load average
    • Glue the bash prompt always go to the first column .
    • Avoid glitches after interrupting a command with Ctrl-C

    Je suis aussi sur un fixe et sans onduleur, du coup, j'ai viré tout ce qui touchait à la batterie.

    #!/bin/bash
    # An intelligent an non intrusive prompt for bash
    # Licensed under the AGPL version 3
    #
    # This program is free software: you can redistribute it and/or modify
    # it under the terms of the GNU Affero General Public License as
    # published by the Free Software Foundation, either version 3 of the
    # License, or (at your option) any later version.
    #
    # This program is distributed in the hope that it will be useful,
    # but WITHOUT ANY WARRANTY; without even the implied warranty of
    # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    # GNU Affero General Public License for more details.
    #
    # You should have received a copy of the GNU Affero General Public License
    # along with this program. If not, see <http://www.gnu.org/licenses/>.
    # 2012 (c) nojhan <nojhan@gmail.com>
    # Below are function for having a flexible dynamic prompt for power user:
    # - display the colored hostname when connected via ssh
    # - when root, color in yellow the [username path] and in red the sharp
    # - when user, print the colored git branch name (if in a git repository):
    # red = some changes are not commited, yellow = some commits are not pushed,
    # green = no changes or commits
    # - if necessary, print a counter for jobs that are attached to the current term (e.g. xterm &)
    # or that are sleeping (e.g. Ctrl-z)
    # - display the load average, colored with a colormap
    # - display the battery level (if necessary), with colormap
    # Some colors
    BLUE="\[033円[0;34m\]"
    LIGHT_GRAY="\[033円[0;37m\]"
    LIGHT_GREEN="\[033円[1;32m\]"
    LIGHT_BLUE="\[033円[1;34m\]"
    LIGHT_CYAN="\[033円[1;36m\]"
    YELLOW="\[033円[1;33m\]"
    WHITE="\[033円[1;37m\]"
    RED="\[033円[0;31m\]"
    NO_COL="\[033円[00m\]"
    #################
    # Where are we? #
    #################
    THIS_TTY=tty`ps aux | grep $$ | grep bash | awk '{ print 7ドル }'`
    SESS_SRC=`who | grep $THIS_TTY | awk '{ print 6ドル }'`
    # Are we in an SSH connexion?
    SSH_FLAG=0
    SSH_IP=`echo $SSH_CLIENT | awk '{ print 1ドル }'`
    if [ $SSH_IP ] ; then
    SSH_FLAG=1
    fi
    SSH2_IP=`echo $SSH2_CLIENT | awk '{ print 1ドル }'`
    if [ $SSH2_IP ] ; then
    SSH_FLAG=1
    fi
    if [ $SSH_FLAG -eq 1 ] ; then
    CONN=ssh
    elif [ -z $SESS_SRC ] ; then
    CONN=lcl
    elif [ $SESS_SRC = "(:0.0)" -o $SESS_SRC = "" ] ; then
    CONN=lcl
    else
    CONN=tel
    fi
    ###############
    # Who are we? #
    ###############
    if [ `/usr/bin/whoami` = "root" ] ; then
    USR=u_root
    else
    USR=nou_root
    fi
    #####################################
    # Count the number of attached jobs #
    #####################################
    # Either attached running jobs (started with $ myjob &)
    # or attached stopped jobs (suspended with Ctrl-Z)
    jobcount()
    {
     rep=""
     running=`jobs -r | wc -l | tr -d " "`
     stopped=`jobs -s | wc -l | tr -d " "`
     if [ $running != "0" -a $stopped != "0" ] ; then
    rep=" ${running}r/${stopped}s"
     elif [ $running != "0" -a $stopped == "0" ] ; then
    rep=" ${running}r"
     elif [ $running == "0" -a $stopped != "0" ] ; then
    rep=" ${stopped}s"
     fi
    echo -ne "$rep"
    }
    ######################
    # GIT branch display #
    ######################
    # Get the branch name of the current directory
    git_branch()
    {
     if git rev-parse --git-dir >/dev/null 2>&1 ; then
    gitver=$(git branch 2>/dev/null| sed -n '/^\*/s/^\* //p')
     else
    return 0
     fi
    echo -e "$gitver"
    }
    # Set a color depending on the branch state:
    # - green if the repository is up to date
    # - yellow if there is some commits not pushed
    # - red if there is changes to commit
    git_branch_color()
    {
     if git rev-parse --git-dir >/dev/null 2>&1 ; then
    red=`tput setaf 1`
     green=`tput setaf 2`
     yellow=`tput setaf 3`
     color=""
     if git diff --quiet 2>/dev/null >&2 ; then
    branch="$(git_branch)"
     has_commit=`git rev-list origin/$branch..$branch`
     if [ "$has_commit" != "" ] ; then
    color="${yellow}" # some commits to push
     else
    color="${green}" # nothing to commit or push
     fi
    else
    color="${red}" # changes to commit
     fi
    else
    return 0
     fi
    echo -ne $color
    }
    ###############
    # System load #
    ###############
    # Get the load average
    load_out()
    {
     load=`uptime | sed -e "s/.*load average: \(.*\...\), \(.*\...\), \(.*\...\).*/1円/" -e "s/ //g"`
     tmp=$(echo $load*100 | bc)
     load100=${tmp%.*}
     if [ ${load100} -gt 50 ] ; then
    echo -n $load
     else
    echo -n ""
     fi
    }
    ########################
    # Construct the prompt #
    ########################
    # different colors depending on connexion type and user
    if [ $CONN = lcl -a $USR = nou_root ] ; then
    PS1="${WHITE}[\u \w]${NO_COL}"
    elif [ $CONN = lcl -a $USR = u_root ] ; then
    PS1="${YELLOW}[\w]${NO_COL}" # no user name if we are local root
    elif [ $CONN = tel -a $USR = nou_root ] ; then
    PS1="[\u${LIGHT_GREEN}@\h${NO_COL} \w]${NO_COL}"
    elif [ $CONN = tel -a $USR = u_root ] ; then
    PS1="${RED}[\u @${YELLOW}\h${RED} \w]${NO_COL}"
    elif [ $CONN = ssh -a $USR = nou_root ] ; then
    PS1="[\u @${LIGHT_BLUE}\h${NO_COL} \w]${NO_COL}"
    elif [ $CONN = ssh -a $USR = u_root ] ; then
    PS1="${RED}[\u @${LIGHT_BLUE}\h${RED} \w]${NO_COL}"
    fi
    # add job count
    PS1="$PS1${LIGHT_BLUE}\$(jobcount)${NO_COL}"
    if [ $USR = nou_root ] ; then
     # add git branch and status
     PS1="$PS1 \$(git_branch_color)\$(git_branch)${NO_COL}"
    fi
    # add prompt mark
    if [ $USR = nou_root ] ; then
    PS1="$PS1${WHITE}\\$ ${NO_COL}"
    elif [ $USR = u_root ] ; then
    PS1="$PS1${RED}\\$ ${NO_COL}"
    fi
    # add colored load average
    PS1="\[\$(load_color)\]\$(load_out)${NO_COL}$PS1"
    # Glue the bash prompt always go to the first column .
    # Avoid glitches after interrupting a command with Ctrl-C
    PS1="\[033円[G\]$PS1"
    
    
    Répondre

Revenir en haut de page

Derniers commentaires

  • Re: No future...
  • Re: Je cherche encore...
  • sans blague
  • Je cherche encore...
  • Re: Impact ? Scénario catastrophe ?
  • Impact ? Scénario catastrophe ?
  • Re: résumé
  • Plateformes collaborantes
  • Re: Robocopy est ton ami
  • Dual Boot !
  • jeux
  • Re: résumé

Étiquettes (tags) populaires

  • intelligence_artificielle
  • grands_modèles_de_langage
  • merdification
  • capitalisme
  • états-unis
  • administration_française
  • réchauffement_climatique
  • datacenter
  • france
  • canicule
  • bigtech
  • jihad_butlérien

Sites amis

  • Agenda du Libre
  • April
  • Éditions D-BookeR
  • Éditions Diamond
  • Éditions Eyrolles
  • Éditions ENI
  • En Vente Libre
  • Framasoft
  • La Quadrature du Net
  • Lea-Linux
  • Open Source Initiative
  • Imprimerie Grafik Plus

À propos de LinuxFr.org

  • Mentions légales
  • Faire un don
  • L’équipe de LinuxFr.org
  • Informations sur le site
  • Aide / Foire aux questions
  • Suivi des suggestions et bogues
  • Wiki du site
  • Règles de modération
  • Statistiques
  • API pour le développement
  • Code source du site
  • Plan du site

AltStyle によって変換されたページ (->オリジナル) /