exelens 18.09.2009 07:33
Tips & tricks — Добавь чуть чуть кавая своей консоли
1 |
PS1="\`if < \$? = 0 >; then echo \<\e<33m\>^_^\<\e<0m\>; else echo \<\e<31m\>O_O\<\e<0m\>; fi\`<\u@\h:\w>\\$ "
|
Было
1 |
|
Стало
1 |
|
Понравилось?
Сохрани настройку в ~/.bashrc
renya 18.09.2009 07:57 #
+ 2 -
:D лол .. кавайный $PS1
Из моего zshrc кусочек
когда гуд показывает зеленый смайлик :) когда не гуд красноватый :(
Cделан у мну в
%(?,%{\e<0;32m%}:%)%{\e<0m%},%{\e<0;31m%}:(%{\e<0m%}
когда гуд показывает зеленый смайлик :) когда не гуд красноватый :(
Cделан у мну в
RPROMPT="%(?,%{\e<0;32m%}:%)%{\e<0m%},%{\e<0;31m%}:(%{\e<0m%}"
т.е. показывается в правам приглашении zsh (их там два, одно слева как у баш, другое с правого края строки). Если не лень и считаешь нужным добавь в пост
Просто $? добавлено?
так не интересно, никакого кавая =) хотя для отладки скриптов иногда полезно видеть код выхода (правда вряд ли кто-то их постоянно отлаживает, поэтому лично мне хватает echo $? по необходимости, или в скриптах echo "ты накосячил в строке такой-то")
так не интересно, никакого кавая =) хотя для отладки скриптов иногда полезно видеть код выхода (правда вряд ли кто-то их постоянно отлаживает, поэтому лично мне хватает echo $? по необходимости, или в скриптах echo "ты накосячил в строке такой-то")
использую убунту, давно хочу сделать, что бы при загрузке и при остальных операциях, удачное завершение выделялось зеленым цветом ( < OK > ), а неудачное красным ( < FAIL > вроде), ну например как в генте, альт-линухе и т.п.
В убенте-дебиане оно такого цвета как и консоль.
может быть кто нить, что нить посоветует :)
В убенте-дебиане оно такого цвета как и консоль.
может быть кто нить, что нить посоветует :)
Arch linux.
iliander /sbin % head -n5 /etc/rc.d/dropboxd
#!/bin/bash
. /etc/rc.conf
. /etc/rc.d/functions
iliander /sbin % cat /etc/rc.d/functions
#
# initscripts functions
#
# width:
STAT_COL=80
if < -t 1 >; then
# stty will fail when stdin isn't a terminal (but we're in this block, so stdout is)
if < -t 0 >; then
STAT_COL="$(/bin/stty size)"
# stty gives "rows cols"; strip the rows number, we just want columns
STAT_COL="${STAT_COL##* }"
else
# tput will fail at boot time if /usr/share/terminfo isn't yet mounted
# or TERM is otherwise unrecognized
STAT_COL="$(/bin/tput cols 2>/dev/null)"
fi
if < "0$STAT_COL" -eq 0 >; then
# if output was 0 (serial console), set default width to 80
USECOLOR=""
STAT_COL=80
fi
else
USECOLOR=""
STAT_COL=80
fi
if < -t 1 >; then
STAT_COL=$(/bin/stty size)
# strip the rows number, we just want columns
STAT_COL=${STAT_COL##* }
if < "$STAT_COL" = "0" >; then
# if output was 0 (serial console), set default width to 80
STAT_COL=80
fi
fi
# we use 13 characters for our own stuff
STAT_COL=$(($STAT_COL - 13))
# disable colors on broken terminals
TERM_COLORS="$(/bin/tput colors 2>/dev/null)"
if < $? = 3 >; then
TERM_COLORS=8
elif < -n "${TERM_COLORS}" >; then
case "${TERM_COLORS}" in
**)
USECOLOR=""
;;
*)
< "${TERM_COLORS}" -lt 8 > && USECOLOR=""
;;
esac
else
USECOLOR=""
fi
unset TERM_COLORS
# clear the TZ envvar, so daemons always respect /etc/localtime
unset TZ
# colors:
if < "$USECOLOR" = "YES" -o "$USECOLOR" = "yes" >; then
C_MAIN="\033<1;37;40m" # main text
C_OTHER="\033<1;34;40m" # prefix & brackets
C_SEPARATOR="\033<1;30;40m" # separator
C_BUSY="\033<0;36;40m" # busy
C_FAIL="\033<1;31;40m" # failed
C_DONE="\033<1;37;40m" # completed
C_BKGD="\033<1;35;40m" # backgrounded
C_H1="\033<1;37;40m" # highlight text 1
C_H2="\033<1;36;40m" # highlight text 2
C_CLEAR="\033<1;0m"
fi
if < -t 1 >; then
SAVE_POSITION="\033
RESTORE_POSITION="\033
DEL_TEXT="\033<$(($STAT_COL+4))G"
else
SAVE_POSITION=""
RESTORE_POSITION=""
DEL_TEXT=""
fi
# prefixes:
PREFIX_REG="::"
PREFIX_HL=" >"
# functions:
deltext() {
printf "${DEL_TEXT}"
}
printhl() {
printf "${C_OTHER}${PREFIX_HL} ${C_H1}${1}${C_CLEAR} \n"
}
printsep() {
printf "\n${C_SEPARATOR} ------------------------------\n"
}
stat_bkgd() {
printf "${C_OTHER}${PREFIX_REG} ${C_MAIN}${1}${C_CLEAR} "
deltext
printf " ${C_OTHER}<${C_BKGD}BKGD${C_OTHER}>${C_CLEAR} "
}
stat_busy() {
printf "${C_OTHER}${PREFIX_REG} ${C_MAIN}${1}${C_CLEAR} "
printf "${SAVE_POSITION}"
deltext
printf " ${C_OTHER}<${C_BUSY}BUSY${C_OTHER}>${C_CLEAR} "
}
stat_append() {
printf "${RESTORE_POSITION}"
printf -- "${C_MAIN}${1}${C_CLEAR}"
printf "${SAVE_POSITION}"
}
stat_done() {
deltext
printf " ${C_OTHER}<${C_DONE}DONE${C_OTHER}>${C_CLEAR} \n"
}
stat_fail() {
deltext
printf " ${C_OTHER}<${C_FAIL}FAIL${C_OTHER}>${C_CLEAR} \n"
}
stat_die() {
retval=1
< "$1" = "" > || retval=$1
stat_fail
exit $retval
}
status() {
stat_busy "$1"
shift
$* >/dev/null 2>&1
if < $? -eq 0 >; then
stat_done
return 0
else
stat_fail
return 1
fi
}
# usage : in_array( $needle, $haystack )
# return : 0 - found
# 1 - not found
# Copied from makepkg
in_array() {
local needle=$1; shift
< -z "$1" > && return 1 # Not Found
local item
for item in "$@"; do
local c="${item:0:1}"
if < "x$c" = "x@" >; then
item="${item:1}"
fi
< "$item" = "$needle" > && return 0 # Found
done
return 1 # Not Found
}
# daemons:
add_daemon() {
< -d /var/run/daemons > || /bin/mkdir -p /var/run/daemons
/bin/touch /var/run/daemons/$1
}
rm_daemon() {
/bin/rm -f /var/run/daemons/$1
}
ck_daemon() {
< -f /var/run/daemons/$1 > && return 1
return 0
}
ck_depends() {
for daemon in $@; do
if ck_daemon $daemon; then
/etc/rc.d/$daemon start
fi
done
}
start_daemon() {
/etc/rc.d/$1 start
}
start_daemon_bkgd() {
stat_bkgd "Starting $1"
(/etc/rc.d/$1 start) &>/dev/null &
}
stop_daemon() {
/etc/rc.d/$1 stop
}
# Status functions
status_started() {
deltext
echo -ne "$C_OTHER<${C_STRT}STARTED$C_OTHER>$C_CLEAR "
}
status_stopped() {
deltext
echo -ne "$C_OTHER<${C_STRT}STOPPED$C_OTHER>$C_CLEAR "
}
ck_status() {
ck_daemon $1
if < $? -eq 1 >; then
status_started
else
status_stopped
fi
}
#Source additional functions at the end to allow overrides
for f in /etc/rc.d/functions.d/*; do
if < -e $f >; then
. $f
fi
done
# End of file
# vim: set ft=sh sw=2 ts=2 et:
Второй код — это содержимое файла /etc/rc.d/functions, в котором описана обработка событий в зависимости от возвращаемого скриптом запуска демона кодом и некоторые функции по управлению самими демонами в arch linux.
Можно изменить обработчики дебиана на аналогичные из арча (добавить подсветку цветом) и тогда всё должно заработать.
Хотя простой копипастой тут не обойтись, полагаю. Придется работать мозгом ;)
Более подробно сказать не могу, с debian работал только весьма поверхностно и не долго, мне он не понравился. Обращайся к дебиановодам. Например, к librarian :)
Смотри, вот код, который проверяет, поддерживает ли терминал цвета.
#disable colors on broken terminals
TERM_COLORS="$(/bin/tput colors 2>/dev/null)"
if < $? = 3 >; then
TERM_COLORS=8
elif < -n "${TERM_COLORS}" >; then
case "${TERM_COLORS}" in
**)
USECOLOR=""
;;
*)
< "${TERM_COLORS}" -lt 8 > && USECOLOR=""
;;
esac
else
USECOLOR=""
fi
unset TERM_COLORS
Дальше код, который в результате этой проверки назначает цвета:
# colors:
if < "$USECOLOR" = "YES" -o "$USECOLOR" = "yes" >; then
C_MAIN="\033<1;37;40m" # main text
C_OTHER="\033<1;34;40m" # prefix & brackets
C_SEPARATOR="\033<1;30;40m" # separator
C_BUSY="\033<0;36;40m" # busy
C_FAIL="\033<1;31;40m" # failed
C_DONE="\033<1;37;40m" # completed
C_BKGD="\033<1;35;40m" # backgrounded
C_H1="\033<1;37;40m" # highlight text 1
C_H2="\033<1;36;40m" # highlight text 2
C_CLEAR="\033<1;0m"
fi
if < -t 1 >; then
SAVE_POSITION="\033
RESTORE_POSITION="\033
DEL_TEXT="\033<$(($STAT_COL+4))G"
else
SAVE_POSITION=""
RESTORE_POSITION=""
DEL_TEXT=""
fi
А вот идет описание функций, вызываемых в зависимости от того, удачно ли произошло выполнение функции в скрипте демона.
# functions:
deltext() {
printf "${DEL_TEXT}"
}
printhl() {
printf "${C_OTHER}${PREFIX_HL} ${C_H1}${1}${C_CLEAR} \n"
}
printsep() {
printf "\n${C_SEPARATOR} ------------------------------\n"
}
stat_bkgd() {
printf "${C_OTHER}${PREFIX_REG} ${C_MAIN}${1}${C_CLEAR} "
deltext
printf " ${C_OTHER}<${C_BKGD}BKGD${C_OTHER}>${C_CLEAR} "
}
stat_busy() {
printf "${C_OTHER}${PREFIX_REG} ${C_MAIN}${1}${C_CLEAR} "
printf "${SAVE_POSITION}"
deltext
printf " ${C_OTHER}<${C_BUSY}BUSY${C_OTHER}>${C_CLEAR} "
}
stat_append() {
printf "${RESTORE_POSITION}"
printf -- "${C_MAIN}${1}${C_CLEAR}"
printf "${SAVE_POSITION}"
}
stat_done() {
deltext
printf " ${C_OTHER}<${C_DONE}DONE${C_OTHER}>${C_CLEAR} \n"
}
stat_fail() {
deltext
printf " ${C_OTHER}<${C_FAIL}FAIL${C_OTHER}>${C_CLEAR} \n"
}
stat_die() {
retval=1
< "$1" = "" > || retval=$1
stat_fail
exit $retval
}
status() {
stat_busy "$1"
shift
$* >/dev/null 2>&1
if < $? -eq 0 >; then
stat_done
return 0
else
stat_fail
return 1
fi
}
А вот код запуска демона ntpdate
#!/bin/bash
. /etc/rc.conf
## Вот здесь импортируются эти функции
. /etc/rc.d/functions
. /etc/conf.d/ntp-client.conf
case "$1" in
start)
## Сначала, во время запуска, выводится сообщение < BUSY >
stat_busy "Starting NTP Client"
/usr/bin/ntpdate $NTP_CLIENT_OPTION -t $NTPCLIENT_TIMEOUT $NTP_CLIENT_SERVER > /dev/null 2>&1
if < $? -gt 0 >; then
## Если вернулся код выполнения, отличный от нуля — выводится сообщение об ошибке.
stat_fail
else
## Иначе — добавляется демон и выводится сообщение об успешном выполнении
add_daemon ntpdate
stat_done
fi
;;
stop)
stat_busy "Stopping NTP Client"
rm_daemon ntpdate
stat_done
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
echo "usage: $0 {start|stop|restart}"
esac
По-моему, всё просто, как и сам Arch. Дальше пили дебиан.
if < "$UID" = 0 >;
then PS1="\<\033<1;31m\>\W #\<\033<00m\> > "
else PS1="\<\033<1;33m\>\W $\<\033<00m\> > "; fi
моё
(это так, на всякий случай для тех кто не в курсе)
а у тя чё, у рута .bashrc симлинк ~/.bashrc на твоего юзверя или в /etc/profile прописываешь?