Система Orphus
[]

вторник, 24 июня 2008 г.

Мой bash-конфиг...


Ты часто работаешь в шелле? А я - ДА!
Тебе удобно работать в шелле? А мне - ДА!

А дело тут просто: нужно настроть файлик ~/.bashrc и больше не придется париться, а работа станет быстрее и удобнее.

Ниже я выложил содержимое моего файла ~/.bashrc и комментариями, поэтому разберешься сам. Ну а я думаю тебе будет это полезно узнать (если еще не знаешь)... =)

В основном этот конфиг заточен под убунту, для других *nix систем его пидется подправить немножко...



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

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 (нет цвета)

# Определил 2 раза для удобства :)

Black='\e[0;30m'

DarkGray='\e[1;30m'

Blue='\e[0;34m'

LightBlue='\e[1;34m'

Green='\e[0;32m'

LightGreen='\e[1;32m'

Cyan='\e[0;36m'

LightCyan='\e[1;36m'

Red='\e[0;31m'

LightRed='\e[1;31m'

Purple='\e[0;35m'

LightPurple='\e[1;35m'

Brown='\e[0;33m'

Yellow='\e[1;33m'

LightGray='\e[0;37m'

White='\e[1;37m'

NoColor='\e[0m'



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

echo -en "${red}"

date "+%A, %d %B %Yг. %H:%M:%S (%:::z - %Z)"

echo -en "$NC\n"



export HISTSIZE=2000 # Длина истории команд

export HISTFILE=~/.bash_history # Где хранить историю команд

# export HISTCONTROL="ignoredups" # Не дублировать команды



# Чтобы история команд сохранялась сразу после ввода (а не во время закрытия терминала)

shopt -s histappend

PROMPT_COMMAND='history -a'



# Испраляет ошибки в написании

shopt -s cdspell



# Разорванные многострочные команды в истории команд

shopt -s cmdhist



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

alias ll="/bin/ls -lh --color" # Отображает символьную инфу о типе файла

alias l1="/bin/ls -1Fh --color" # Вывод содержимого каталога в один столбец + отображение символьной инфы о типах файлов

alias lr="/bin/ls -Rh --color" # Вывод содержимого с подкаталогами

alias la="/bin/ls -lAh --color" # Подробный пывод содержимого каталога, включая скрытые файлы

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

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

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

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

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

alias lt='/bin/ls -ltrh --color' # сортировка по дате

alias lm='/bin/ls -lAh --color | more' # вывод через 'more'





# На первый взягляд это бред, но когда привыкаешь, реально ускоряет работу

alias md="/bin/mkdir"

alias mds="sudo /bin/mkdir"

alias mkdirs="sudo /bin/mkdir"



alias mdp="/bin/mkdir -p"

alias mdps="sudo /bin/mkdir -p"



alias cp="/bin/cp -iv"

alias cps="sudo /bin/cp -iv"



alias cpi="/bin/cp -v"

alias cpis="sudo /bin/cp -v"



alias cpR="/bin/cp -Rv"

alias cpRs="sudo /bin/cp -Rv"



alias cpr="/bin/cp -Riv"

alias cprs="sudo /bin/cp -Riv"



alias mv="/bin/mv -iv"

alias mvs="sudo /bin/mv -iv"



alias mvi="/bin/mv -v"

alias mvis="sudo /bin/mv -v"



alias rm="/bin/rm -iv"

alias rms="sudo /bin/rm -iv"



alias rmi="/bin/rm -v"

alias rmis="sudo /bin/rm -v"



alias rmr="/bin/rm -Rfiv"

alias rmrs="sudo /bin/rm -Rfiv"



alias rmri="/bin/rm -Rfv"

alias rmris="sudo /bin/rm -Rfv"



alias ..="cd .."

alias ...="cd ../.."

alias ....="cd ../../.."

alias .....="cd ../../../.."





alias cls="/usr/bin/clear" # Если ты привык к консоле винды, то тебе это поможет





alias h='history' # История команд

alias j='jobs -l' # Задания

alias path='echo -e ${PATH//:/\\n}' # Значение переменной окружения $PATH

alias recfg='. ~/.bashrc' # Перечитать настройки BASH (иногда бывает полезно, особенно для отладки)



alias du='/usr/bin/du -kh' # Размер всех подкаталогов в каталоге (включая др. ф.с.)

alias duS='/usr/bin/du -khxS' # Размер всех папок в каталоге (не переходить в др. ф.с.)

alias dus='/usr/bin/du -khxs' # Размер каталога (не переходить в др. ф.с.)

alias df='/bin/df -kh' # Занятое пространство на диске



alias upgrade='sudo apt-get update ; sudo apt-get upgrade' # Обновление пакетов



alias aptsearch='sudo apt-cache search ' # Поиск пакетов в репозиториях

alias aptinstall='sudo apt-get install ' # Установить пакет из репозитория

alias aptremove='sudo apt-get remove ' # Удалить пакет из системы

alias aptpurge='sudo apt-get purge ' # Удалить пакет из системы и его конф. файлы

alias aptautoremove='sudo apt-get autoremove' # Автоматически удалить не нужные пакеты из системы



alias 'restart-gnome'='sudo /etc/init.d/gdm restart' # Перезапустить GNOME



alias 'cd-'='cd -' # Перейти в последнюю дирректорию (бывает забываю пробем поставить)





# проверка правописания

alias xs='cd'

alias vf='cd'

alias moer='more'

alias moew='more'

alias kk='ll'





# Не все эти функции писал я сам, есть и не мои работы, но авторов уже не помню, к сожалению :(



function dfp() # Сколько занято на опр. ф.с. в %

{

/bin/df -kh | /bin/grep $1 | /usr/bin/cut -c41-43

}





function lg() # ls -lAh --color <path> | grep <filter>

{

if [ "$1" = "" ] && [ "$2" = "" ]; then

echo -en "\n${Blue}Команда$NC ${LightRed}lg$NC ${Blue}выводит список файлов с фильтрацией (тоже самое, что ${LightRed}ls -lA$NoColor ${Red}<patn>${NoColor} ${LightRed}| grep${NoColor} ${Red}<filtet>${NoColor}${Blue})${NoColor}"

echo -en "\n${Cyan}Использование:$NC ${LightRed}lg$NC ${Red}[path] <filter>$NC"

echo -en "\n${Cyan}Если$NC ${Red}[path]$NC ${Cyan}не задан, то используется текущая дирректория.$NC\n\n"

elif [ "$1" != "" ] && [ "$2" = "" ]; then

/bin/ls -lAh --color $(/bin/pwd) | /bin/grep $1

else

/bin/ls -lAh --color $1 | /bin/grep $2

fi

}



function my_ip() # IP адрес

{

MY_IP=$(/sbin/ifconfig ppp0 | /usr/bin/awk '/inet/ { print $2 } ' | /bin/sed -e s/addr://)

MY_ISP=$(/sbin/ifconfig ppp0 | /usr/bin/awk '/P-t-P/ { print $3 } ' | /bin/sed -e s/P-t-P://)

}



function ii() # Дополнительные сведения о системе

{

echo -e "\nВы находитесь на ${RED}$HOSTNAME"

echo -e "\nДополнительная информация:$NC " ; /bin/uname -a

echo -e "\n${RED}В системе работают пользователи:$NC " ; /usr/bin/w -h

echo -e "\n${RED}Дата:$NC " ; /bin/date +"%A, %d %B %Yг. %H:%M:%S (%:::z - %Z)"

echo -e "\n${RED}Время, прошедшее с момента последней перезагрузки :$NC " ; /usr/bin/uptime

echo -e "\n${RED}Память :$NC " ; /usr/bin/free

my_ip 2>&- ;

echo -e "\n${RED}IP адрес:$NC" ; echo ${MY_IP:-"Соединение не установлено"}

echo -e "\n${RED}Адрес провайдера (ISP):$NC" ; echo ${MY_ISP:-"Соединение не установлено"}

echo

}



function swap() # меняет 2 файла местами

{

if [ "$1" = "" ] || [ "$2" = "" ]; then

echo ""

echo -e "${blue}Команда$NC ${RED}swap$NC ${blue}меняет 2 файла местами$NC"

echo -e "${cyan}Использование:$NC ${RED}swap$NC ${red}<file1> <file2>$NC"

echo ""

else

local TMPFILE=tmp.$$

/bin/mv -v "$1" $TMPFILE

/bin/mv -v "$2" "$1"

/bin/mv -v $TMPFILE "$2"

fi

}



function sswap() # меняет 2 файла местами с правами root'a

{

if [ "$1" = "" ] || [ "$2" = "" ]; then

echo ""

echo -e "${blue}Команда$NC ${RED}sswap$NC ${blue}меняет 2 файла местами с правами root'а$NC"

echo -e "${cyan}Использование:$NC ${RED}sswap$NC ${red}<file1> <file2>$NC"

echo ""

else

local TMPFILE=tmp.$$

sudo /bin/mv -v "$1" $TMPFILE

sudo /bin/mv -v "$2" "$1"

sudo /bin/mv -v $TMPFILE "$2"

fi

}



function myps()

{

ps $@ -u $USER -o pid,%cpu,%mem,bsdtime,command ;

}

function pp()

{

myps f | /usr/bin/awk '!/awk/ && $0~var' var=${1:-".*"} ;

}





function lowercase() # перевести имя файла в нижний регистр

{

for file ; do

filename=${file##*/}

case "$filename" in

*/*) dirname==${file%/*} ;;

*) dirname=.;;

esac

nf=$(echo $filename | tr A-Z a-z)

newname="${dirname}/${nf}"

if [ "$nf" != "$filename" ]; then

/bin/mv "$file" "$newname"

echo "lowercase: $file --> $newname"

else

echo "lowercase: имя файла $file не было изменено."

fi

done

}





# Поиск файла по шаблону:

function ff()

{

if [ "$1" = "" ]; then

echo ""

echo -e "${blue}Команда$NC ${RED}ff$NC ${blue}ищет файл по шаблону в текущем каталоге$NC"

echo -e "${cyan}Использование:$NC ${RED}ff$NC ${red}<шаблон>$NC"

echo ""

else

/usr/bin/find . -type f -iname '*'$*'*' -ls ;

fi

}





# Поиск файла по шаблону в $1 и запуск команды в $2 с ним:

function fe()

{

if [ "$1" = "" ] || [ "$2" = "" ]; then

echo ""

echo -e "${blue}Команда$NC ${RED}fe$NC ${blue}ищет файл по шаблону в текущем каталоге и выполняет заданную команду над ним$NC"

echo -e "${cyan}Использование:$NC ${RED}ff$NC ${red}<шаблон> <команда>$NC"

echo ""

else

/usr/bin/find . -type f -iname '*'$1'*' -exec "${2:-file}" {} \; ;

fi

}





# поиск строки в файлах:

function fstr_help()

{

echo -en "\n${blue}Команда$NC ${RED}fstr$NC ${blue}ищет заданную строку в файлах из текущего католога и его подкаталогах$NC\n"

echo -en "${cyan}Использование:$NC ${RED}fstr$NC ${red}[-i] \"шаблон_строки_для_поиска\" [\"шаблон_имени_файла\"]$NC\n"

echo -en " ${red}-i$NC ${blue}- не учитывать регистр$NC\n"

echo -en " ${blue}если$NC ${red}\"шаблон_имени_файла\"$NC ${blue}не задан, то поиск ведется по всем файлам$NC\n\n"

}





function fstr()

{

OPTIND=1

local case=""

local usage="${blue}Команда$NC ${RED}fstr$NC ${blue}ищет заданную строку в файлах из текущего католога и его подкаталогах$NC

${cyan}Использование:$NC ${RED}fstr$NC ${red}[-i] \"шаблон_строки_для_поиска\" [\"шаблон_имени_файла\"]$NC

${red}-i$NC - не учитывать регистр

если \"шаблон_имени_файла\" не задан, то поиск ведется по всем файлам"

while getopts :it opt

do

case "$opt" in

i) case="-i " ;;

#*) echo "$usage"; return;;

*) fstr_help; return;

esac

done

shift $(( $OPTIND - 1 ))

if [ "$#" -lt 1 ]; then

#echo "$usage"

fstr_help

return;

fi

local SMSO=$(tput smso)

local RMSO=$(tput rmso)

/usr/bin/find . -type f -name "${2:-*}" -print0 | /usr/bin/xargs -0 /bin/grep -sn ${case} "$1" 2>&- | /bin/sed "s/$1/${SMSO}\0${RMSO}/gI" | /bin/more

}

Похожие статьи

2 коммент.:

aceq комментирует... пятница, 29 января 2010 г. в 10:35:00 GMT+2

$ source ~/.bashrc
заствляет систему пееречитать настройки из .bashrc для уже открытой консоли. таким образом нет необходимочти открывать новую консоль или закрывать старую.

Unknown комментирует... пятница, 29 января 2010 г. в 10:44:00 GMT+2

Да, я знаю :)

Но когда писал этот пост еще не знал, я тогда только начал работать в никсах.

Отправить комментарий