Customizing Bash Prompt: Difference between revisions
mNo edit summary |
mNo edit summary |
||
Line 1: | Line 1: | ||
[[Category:Tips]] | [[Category:Tips]] | ||
Originally posted by SU_PyRoW | |||
http://compelitepc.host56.com | |||
There are allot of white papers on customizing the bash prompt. This one is of course different... by a small margin. It starts by mapping out colors from "\033" or "ESC" commands into text commands for better reading, modifying, or if you change your background and have a transparent terminal running and need to change colors again with out having to remember or look up the color codes. | There are allot of white papers on customizing the bash prompt. This one is of course different... by a small margin. It starts by mapping out colors from "\033" or "ESC" commands into text commands for better reading, modifying, or if you change your background and have a transparent terminal running and need to change colors again with out having to remember or look up the color codes. |
Revision as of 11:44, 1 August 2011
Originally posted by SU_PyRoW
http://compelitepc.host56.com
There are allot of white papers on customizing the bash prompt. This one is of course different... by a small margin. It starts by mapping out colors from "\033" or "ESC" commands into text commands for better reading, modifying, or if you change your background and have a transparent terminal running and need to change colors again with out having to remember or look up the color codes.
#.bashrc DULL=0 BRIGHT=1 FG_BLACK=30 FG_RED=31 FG_GREEN=32 FG_YELLOW=33 FG_BLUE=34 FG_VIOLET=35 FG_CYAN=36 FG_WHITE=37 FG_NULL=00 BG_BLACK=40 BG_RED=41 BG_GREEN=42 BG_YELLOW=43 BG_BLUE=44 BG_VIOLET=45 BG_CYAN=46 BG_WHITE=47 BG_NULL=00 ESC="\033" NORMAL="\[$ESC[m\]" RESET="\[$ESC[${DULL};${FG_WHITE};${BG_NULL}m\]" BLACK="\[$ESC[${DULL};${FG_BLACK}m\]" RED="\[$ESC[${DULL};${FG_RED}m\]" GREEN="\[$ESC[${DULL};${FG_GREEN}m\]" YELLOW="\[$ESC[${DULL};${FG_YELLOW}m\]" BLUE="\[$ESC[${DULL};${FG_BLUE}m\]" VIOLET="\[$ESC[${DULL};${FG_VIOLET}m\]" CYAN="\[$ESC[${DULL};${FG_CYAN}m\]" WHITE="\[$ESC[${DULL};${FG_WHITE}m\]" BRIGHT_BLACK="\[$ESC[${BRIGHT};${FG_BLACK}m\]" BRIGHT_RED="\[$ESC[${BRIGHT};${FG_RED}m\]" BRIGHT_GREEN="\[$ESC[${BRIGHT};${FG_GREEN}m\]" BRIGHT_YELLOW="\[$ESC[${BRIGHT};${FG_YELLOW}m\]" BRIGHT_BLUE="\[$ESC[${BRIGHT};${FG_BLUE}m\]" BRIGHT_VIOLET="\[$ESC[${BRIGHT};${FG_VIOLET}m\]" BRIGHT_CYAN="\[$ESC[${BRIGHT};${FG_CYAN}m\]" BRIGHT_WHITE="\[$ESC[${BRIGHT};${BG_WHITE}m\]" REV_CYAN="\[$ESC[${DULL};${BG_WHITE};${BG_CYAN}m\]" REV_RED="\[$ESC[${DULL};${FG_YELLOW}; ${BG_RED}m\]" PROMPT_COMMAND='export ERR=$?'
If you happen to use Eterm or other advanced terminal its possible you need a ".bash_profile" here is one you can use if you don't have one, or just want some more in it.
#.bash_profile source .bashrc if [ -f ~/.bashrc ]; then . ~/.bashrc fi #End Script
Lets put it to work: I personally would comment out my currently working ##"PS1=" and put it below it in case you need to change it back for some reason.
PS1="${GREEN}YOUR COMPANY NAME HERE${BRIGHT_YELLOW}[${YELLOW}\u@yahoo.com${BRIGHT_YELLOW}]\n ${BRIGHT_CYAN}[${CYAN}\t${BRIGHT_CYAN}]${BRIGHT_VIOLET}[${VIOLET}\$(lsMB)${BRIGHT_VIOLET} | ${VIOLET}\$(lsMiB)${BRIGHT_VIOLET}]${BRIGHT_YELLOW}[${YELLOW}\w${BRIGHT_YELLOW}]\n ${BRIGHT_YELLOW}[${YELLOW}\!${BRIGHT_YELLOW}]${BRIGHT_CYAN} %> ${RESET}"
Should look like this minus the colors:
YOUR COMPANY NAME HERE[su_pyrow@yahoo.com] [13:57:23][590.478 MB|563.316 MiB][/media/cdrom] [503] %>
Note: the [503] is the history line number for those who cant remember what they typed or want to input something from the far past.
Now... To get the sum of files in current working directory, I made two files which do the summing. "lsMB" and "lsMiB" which on my system are both located in ~/bin as executable. Here is lsMB:
#!/bin/bash #lsMB free for anyone who wishes to use and implement it, just please show your work. ;) let TotalBytes=0 for Bytes in $(ls -l -a | grep "^-" | awk '{ print $5 }') do let TotalBytes=$TotalBytes+$Bytes done if [ $TotalBytes -lt 1024 ]; then TotalSize=$(echo -e "scale=3 \n$TotalBytes \nquit" | bc) suffix="B" else if [ $TotalBytes -lt 1048576 ]; then TotalSize=$(echo -e "scale=3 \n$TotalBytes/1024 \nquit" | bc) suffix="kB" else if [ $TotalBytes -lt 1073741824 ]; then TotalSize=$(echo -e "scale=3 \n$TotalBytes/1048576 \nquit" | bc) suffix="MB" else if [ $TotalBytes -lt 1099511627776 ]; then TotalSize=$(echo -e "scale=3 \n$TotalBytes/1073741824 \nquit" | bc) suffix="GB" fi fi fi fi echo -n "$TotalSize $suffix" #End Script
Finally, this is the lsMiB executable file located in "~/bin" This has the modification for the conversion to KiB, MiB & GiB one could further the code to handle TiB easily by doing some research on it... Try wiki!
#!/bin/bash #lsMiB free for anyone who wishes to use and implement it, just please show your work. ;) let TotalBytes=0 for Bytes in $(ls -l -a | grep "^-" | awk '{ print $5 }') do let TotalBytes=$TotalBytes+$Bytes done if [ $TotalBytes -lt 1024 ]; then TotalSize2=$(echo -e "scale=3 \n$TotalBytes \nquit" | bc) suffix2="B" else if [ $TotalBytes -lt 1048576 ]; then TotalSize2=$(echo -e "scale=3 \n$TotalBytes/1024*.976 \nquit" | bc) suffix2="KiB" else if [ $TotalBytes -lt 1073741824 ]; then TotalSize2=$(echo -e "scale=3 \n$TotalBytes/1048576*.954 \nquit" | bc) suffix2="MiB" else if [ $TotalBytes -lt 1099511627776 ]; then TotalSize2=$(echo -e "scale=3 \n$TotalBytes/1073741824*.931 \nquit" | bc) suffix2="GiB" fi fi fi fi echo -n "$TotalSize2 $suffix2" #End Script
One would be able to see the changes if 1) Restart the Terminal or 2) type:
$ source ~/.bashrc
and you will instantly see the changes. Try it out, and see if it grows on you!