PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Prompt / Bashrc



ExeCRabLE
19.07.10, 09:18
Hallo zusammen !

Ich bin gerade dabei mein Prompt zu "pimpen" (Bash 4.x) und habe ein grundlegende Frage. Kann ich nach einem abgesetzten Befehl auf der Bash den Prompt neu laden bzw. neu generieren z.B. über ein Skript ?!

Der Gedanke dahinter ist, das ich Informationen, wie Anzahl der User, Updates und Informationen für mich wichtigen Prozesse im prompt darstellen möchte.
Momentan sieht der Prompt bei mir so aus : PS1="[\A \j \u \W]\n@\h > "

Nun würde ich gerne weitere Systeminformationen im "geklammerten"-Bereich darstellen.

Ich fänds cool :)

Roger Wilco
19.07.10, 09:26
Da du Ubuntu 10.04 einzusetzen scheinst, schau dir mal byobu an. Das ist ein Wrapper um `screen`, der ein paar nette Gimmicks bietet.

ExeCRabLE
19.07.10, 09:45
Hallo Roger Wilco,

danke für den Tipp. Ich finde das "GUI" gefühlt zu wuchtig. Ich würde das ganze gerne etwas smarter über die normale Bash realisieren.

Hast du dafür vieleicht noch ein Tipp ?

John W
19.07.10, 16:24
Du kannst jeden beliebigen Befehl für das Prompt benutzen, z.B. kannst du mit

PS1="\$(date +%T):"
die Systemzeit anzeigen lassen (zum Zeitpunkt des erstellend des Prompts, es wird nicht aktualisiert).

HirschHeisseIch
19.07.10, 16:51
Vielleicht auch mal über nen Umstieg auf die zsh nachdenken. Die bietet gerad in dem Bereich einige Gimicks mehr als die Bash.

Roger Wilco
20.07.10, 08:49
Hast du dafür vieleicht noch ein Tipp ?
http://tldp.org/HOWTO/Bash-Prompt-HOWTO/ und speziell http://tldp.org/HOWTO/Bash-Prompt-HOWTO/c262.html

Stichwort PROMPT_COMMAND.

ExeCRabLE
20.07.10, 10:28
Danke für die Tipps !

Ich möchte, wenn möglich auf so viel zusätzliche Programme wie möglich verzichten, da ich einige Server habe und die programme auf alle Server übertragen müsste.

@Roger Wilco: Das sieht richtig gut aus ! :) Ich glaube das ist der richtige Weg, wenn ich etwas "schnuckeliges" gebaut habe post ich das hier.

Gruß
ExeCRabLE

ExeCRabLE
23.07.10, 16:09
So, jetzt hatte ich ein paar Minuten Zeit und habe schon einmal etwas gebastelt :)

Aufruf:

PROMPT_COMMAND="~/prompt.sh"

Das Skript (prompt.sh), was die Informationen anzeigt.

#!/bin/bash
#
# Linuxforen.de
# http://www.linuxforen.de/forums/showthread.php?t=268503
#
# Some ideas from Joshua Price
# http://maketecheasier.com/8-useful-and-interesting-bash-prompts/2009/09/04
#
# V. 0.1
# 24.07.2010
#

# Configuration
#################
SYSLANG="DE" # DE,EN
LOAD1=1 # Normal load
LOAD2=2 # Medium load
LOAD3=3 # Heavy load

# Colors
#################
PINK="\033[1;35m"
BLUE="\033[1;34m"
MINT="\033[1;36m"
GRAU="\033[0m"
RED="\033[31m"
GREEN="\033[32m"
YELLOW="\033[1;33m"


# LOGGEDIN USERS
#################
LUSER=`users | wc -l`

# JOBS
#################
JOBS=`ps | wc -l`
JOBS=$(($JOBS-6))

# HOSTNAME
#################
HOSTNAME=`hostname`

# CONSOLE
#################
SESSION=$(/usr/bin/tty | /bin/sed -e 's:/dev/::')

# PATH
################
FPATH=`pwd`

# FILE COUNT
################
FILES=$(/bin/ls -1 | /usr/bin/wc -l | /bin/sed 's: ::g')

# TOTAL SIZE
################
if [ $SYSLANG = "EN" ]; then
FSIZE=$(ls -lah | grep -m 1 total | sed 's/total //')
elif [ $SYSLANG = "DE" ]; then
FSIZE=$(ls -lah | grep -m 1 insgesamt | sed 's/insgesamt //')
fi

# LOAD
#################
LOAD=`cat /proc/loadavg | cut -d ' ' -f1`

# Colorscheme on load
if [ `echo ${LOAD2}*100 | bc` -gt `echo ${LOAD}*100 | bc | cut -d "." -f1` ]; then
LOADCOLOR=$GREEN
elif [ `echo ${LOAD2}*100 | bc` -lt `echo ${LOAD}*100 | bc | cut -d "." -f1` ]; then
LOADCOLOR=$YELLOW
elif [ `echo ${LOAD3}*100 | bc` -lt `echo ${LOAD}*100 | bc | cut -d "." -f1` ]; then
LOADCOLOR=$RED
fi

# PRINT OUT
#################
echo -e '[ '$PINK'@'$HOSTNAME$GRAU' | '$LUSER' User | '$JOBS' Jobs |'$LOADCOLOR$LOAD$GRAU' Load | '$SESSION' | '$YELLOW$FSIZE$GRAU' in '$YELLOW$FILES$GRAU' Files ]\n'$FPATH

Man kann natürlich noch weitere Informationen auslesen oder auch nur Informationen darstellen, wenn ein Ereigniss erfolgt ist ....

Gruß
ExeCRabLE

Sry - musste noch etwas ändern :)

John W
23.07.10, 20:28
Bin da grade drauf gestoßen: http://maketecheasier.com/8-useful-and-interesting-bash-prompts/2009/09/04

ExeCRabLE
24.07.10, 09:10
Hallo John !

Danke, habe mir da noch ein paar Dinge stibitzt und eingebaut ;)

Gruß
ExeCRabLE