Выбрать главу

#-------------------------------------------------------------

# Настройка переменной $DISPLAY (если еще не установлена)

# Это срабатывает под linux - в вашем случае все может быть по другому....

# Проблема в том, что различные типы терминалов

# дают разные ответы на запрос 'who am i'......

# я не нашел 'универсального' метода

#-------------------------------------------------------------

function get_xserver ()

{

case $TERM in

xterm )

XSERVER=$(who am i | awk '{print $NF}' | tr -d ')''(' )

XSERVER=${XSERVER%%:*}

;;

aterm | rxvt)

# добавьте здесь свой код.....

;;

esac

}

if [ -z ${DISPLAY:=""} ]; then

get_xserver

if [[ -z ${XSERVER} || ${XSERVER} == $(hostname) || ${XSERVER} == "unix" ]]; then

DISPLAY=":0.0" # для локального хоста

else

DISPLAY=${XSERVER}:0.0 # для удаленного хоста

fi

fi

export DISPLAY

#---------------

# Некоторые настройки

#---------------

ulimit -S -c 0 # Запрет на создание файлов coredump

set -o notify

set -o noclobber

set -o ignoreeof

set -o nounset

#set -o xtrace # полезно для отладки

# Разрешающие настройки:

shopt -s cdspell

shopt -s cdable_vars

shopt -s checkhash

shopt -s checkwinsize

shopt -s mailwarn

shopt -s sourcepath

shopt -s no_empty_cmd_completion # только для bash>=2.04

shopt -s cmdhist

shopt -s histappend histreedit histverify

shopt -s extglob

# Запрещающие настройки:

shopt -u mailwarn

unset MAILCHECK # Я не желаю, чтобы командная оболочка сообщала мне о прибытии почты

export TIMEFORMAT=$'\nreal %3R\tuser %3U\tsys %3S\tpcpu %P\n'

export HISTIGNORE="&:bg:fg:lclass="underline" h"

export HOSTFILE=$HOME/.hosts # Поместить список удаленных хостов в файл ~/.hosts

#-----------------------

# Greeting, motd etc...

#-----------------------

# Для начала определить некоторые цвета:

red='\e[0;31m'

RED='\e[1;31m'

blue='\e[0;34m'

BLUE='\e[1;34m'

cyan='\e[0;36m'

CYAN='\e[1;36m'

NC='\e[0m' # No Color (нет цвета)

# --> Прекрасно. Имеет тот же эффект, что и "ansi.sys" в DOS.

# Лучше выглядит на черном фоне.....

echo -e "${CYAN}This is BASH ${RED}${BASH_VERSION%.*}${CYAN} - DISPLAY on ${RED}$DISPLAY${NC}\n"

date

if [ -x /usr/games/fortune ]; then

/usr/games/fortune -s # сделает наш день более интересным.... :-)

fi

function _exit() # функция, запускающаяся при выходе из оболочки

{

echo -e "${RED}Аста ла виста, бэби ${NC}"

}

trap _exit EXIT

#---------------

# Prompt

#---------------

if [[ "${DISPLAY#$HOST}" != ":0.0" && "${DISPLAY}" != ":0" ]]; then

HILIT=${red} # на удаленной системе: prompt будет частично красным

else

HILIT=${cyan} # на локальной системе: prompt будет частично циановым

fi

# --> Замените \W на \w в функциях ниже

#+ --> чтобы видеть в оболочке полный путь к текущему каталогу.

function fastprompt()

{

unset PROMPT_COMMAND

case $TERM in

*term | rxvt )

PS1="${HILIT}[\h]$NC \W > \[\033]0;\${TERM} [\u@\h] \w\007\]" ;;

linux )

PS1="${HILIT}[\h]$NC \W > " ;;

*)

PS1="[\h] \W > " ;;

esac

}

function powerprompt()

{

_powerprompt()

{

LOAD=$(uptime|sed -e "s/.*: \([^,]*\).*/\1/" -e "s/ //g")

}

PROMPT_COMMAND=_powerprompt

case $TERM in

*term | rxvt )

PS1="${HILIT}[\A \$LOAD]$NC\n[\h \#] \W > \[\033]0;\${TERM} [\u@\h] \w\007\]" ;;

linux )

PS1="${HILIT}[\A - \$LOAD]$NC\n[\h \#] \w > " ;;

* )

PS1="[\A - \$LOAD]\n[\h \#] \w > " ;;

esac

}

powerprompt # это prompt по-умолчанию - может работать довольно медленно

# Если это так, то используйте fastprompt....

#===============================================================

#

# ПСЕВДОНИМЫ И ФУНКЦИИ

#

# Возможно некоторые из функций, приведенных здесь, окажутся для вас слишком большими,

# но на моей рабочей станции установлено 512Mb ОЗУ, так что.....

# Если пожелаете уменьшить размер этого файла, то можете оформить эти функции

# в виде отдельных сценариев.

#

# Большинство функций были взяты, почти без переделки, из примеров

# к bash-2.04.

#

#===============================================================

#-------------------

# Псевдонимы

#-------------------

alias rm='rm -i'

alias cp='cp -i'

alias mv='mv -i'

# -> Предотвращает случайное удаление файлов.

alias mkdir='mkdir -p'

alias h='history'

alias j='jobs -l'

alias r='rlogin'

alias which='type -all'

alias ..='cd ..'

alias path='echo -e ${PATH//:/\\n}'

alias print='/usr/bin/lp -o nobanner -d $LPDEST' # Предполагается, что LPDEST определен

alias pjet='enscript -h -G -fCourier9 -d $LPDEST' # Печать через enscript

alias background='xv -root -quit -max -rmode 5' # Положить картинку в качестве фона

alias du='du -kh'

alias df='df -kTh'

# Различные варианты 'ls' (предполагается, что установлена GNU-версия ls)

alias la='ls -Al' # показать скрытые файлы

alias ls='ls -hF --color' # выделить различные типы файлов цветом

alias lx='ls -lXB' # сортировка по расширению

alias lk='ls -lSr' # сортировка по размеру

alias lc='ls -lcr' # сортировка по времени изменения

alias lu='ls -lur' # сортировка по времени последнего обращения

alias lr='ls -lR' # рекурсивный обход подкаталогов

alias lt='ls -ltr' # сортировка по дате

alias lm='ls -al |more' # вывод через 'more'

alias tree='tree -Csu' # альтернатива 'ls'