cooler Bash-Prompt

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
DeletedUserReAsG

Re: cooler Bash-Prompt

Beitrag von DeletedUserReAsG » 07.12.2015 18:04:57

Ich mag meine farbigen Prompts. Jede Maschine und jeder Container hat eine eigene Farbe für den Host, jeder User hat systemübergreifend seine eigene Farbe – so sehe ich zumindest auf dem ersten flüchtigen Blick anhand der Farbkombination, unter welchem User ich gerade auf welchem System rumfuhrwerke. Bei so vielen offenen Shells verliere ich sonst manchmal den Überblick, was bei manchen Aktionen zu ziemlich doofen Resultaten führen kann. Dazu noch der aktuelle Pfad, und ich bin zufrieden.

Benutzeravatar
MegaV0lt
Beiträge: 163
Registriert: 21.11.2011 11:16:07
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: cooler Bash-Prompt

Beitrag von MegaV0lt » 08.12.2015 09:26:00

Ich habe mir aus dem Netz folgenden Promt zusammengebastelt:

Code: Alles auswählen

#-------------------------------------------------------------
# Shell Prompt
#-------------------------------------------------------------
if [[ "${DISPLAY%%:0*}" != "" ]] ; then
  HILIT=${red}   # remote machine: prompt will be partly red
else
  HILIT=${cyan}  # local machine: prompt will be partly cyan
fi

#  --> Replace instances of \W with \w in prompt functions below
#+ --> to get display of full path name.

new_pwd() {
  newPWD=$(pwd) ; pwd_len=30       # Max. PWD-Length
  newPWD=${newPWD/#${HOME}/\~}     # Replace home dir with ~
  if [ ${#newPWD} -gt ${pwd_len} ] ; then
    if [ "${newPWD:0:1}" = "~" ] ; then
      newPWD="~..${newPWD:$((${#newPWD}-${pwd_len}))}"
    else
      newPWD="...${newPWD:$((${#newPWD}-${pwd_len}))}"
    fi
  fi
}

myprompt(){
  if [[ ${EUID} == 0 ]] ; then
    PS1='\[\e[1;31;48;5;234m\]\u \[\e[38;5;240m\]auf \[\e[1;38;5;28;48;5;234m\]\h \[\e[38;5;240m\]am \[\e[38;5;54m\]\D{%d.%m.%Y} \A \[\e[0m\]\n\[\e[0;36;48;5;234m\][$newPWD] \[\e[1;31m\]\$\[\e[0m\] '
  else
    PS1='\[\e[1;38;5;56;48;5;234m\]\u \[\e[38;5;240m\]auf \[\e[1;38;5;28;48;5;234m\]\h \[\e[38;5;240m\]am \[\e[38;5;54m\]\D{%d.%m.%Y} \A \[\e[0m\]\n\[\e[0;38;5;56;48;5;234m\][$newPWD] \[\e[1m\]\$\[\e[0m\] '
  fi
}

# Change the window title of X terminals
case $TERM in
        xterm*|rxvt|Eterm|eterm)
                PROMPT_COMMAND='new_pwd ; echo -ne "\e]0;${USER}@${HOSTNAME%%.*}:${PWD/$HOME/~}\007"'
                ;;
        screen)
                PROMPT_COMMAND='echo -ne "\e_${USER}@${HOSTNAME%%.*}:${PWD/$HOME/~}\e\\"'
                ;;
esac

myprompt # Promt
new_pwd() bewirkt, dass der Pfad nicht zu lang wird

Code: Alles auswählen

root auf HP-T5730 am 08.12.2015 09:25
[/mnt/usbdrive/skinFlatPlus] # cd CryptIcons/
root auf HP-T5730 am 08.12.2015 09:25
[...bdrive/skinFlatPlus/CryptIcons] #
Bild
"Das Internet? Gibt's diesen Blödsinn immer noch?"
[Homer Simpson], Sicherheitsinspektor im Kernkraftwerk Springfield.

TomL

Re: cooler Bash-Prompt

Beitrag von TomL » 08.12.2015 09:54:36

Das war ja jetzt mal ne klasse Anregung.... :THX: ... Die Angabe des Pfades war für mich eigentlich immer wichtig, aber er hat auch manchmal total genervt, wenn der Eingabebereich dahinter praktisch weg war. Das mit der Farbe kannte ich von Minit, aber noch nicht bei Debian. Und nun habe ich alles. Bunt, um "Wer" und auf welcher Maschine anzuzeigen (rot=root, grün=user), natürlich den aktuellen Pfad und trotzdem die volle Bildschirmbreite zur Eingabe... und darüber hinaus immer noch an der bisherigen gewohnten Lesweise angelehnt :D

Code: Alles auswählen

if [ "$USER" == "root" ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\r\n\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\r\n\$ '
fi

michaXXL
Beiträge: 1
Registriert: 28.01.2019 13:17:09

Re: cooler Bash-Prompt

Beitrag von michaXXL » 18.02.2019 20:44:12

mit den folgenden eintrag in der .bashrc wird die pwd in der prompt auf die letzten beiden verzeichnisse gekuerzt

Code: Alles auswählen

PROMPT_DIRTRIM=2

Antworten