#!/bin/bash #################################################################### # # Изменён: Пн. 14 апр. 2014 10:29:56 # Изменён: Чт. 10 апр. 2014 10:35:05 # ################################################################################ #{{{ Псевдонимы ################################################################################ alias ~='cd ~' #noindex alias ..='cd ..' #noindex alias .-='cd -' #noindex alias pd="pushd" #noindex alias po="popd" #noindex #- Удаление, перемещение и копирование с подтверждением #+ Строка прогресса: http://beatex.org/web/advancedcopy.html alias mv='mv -g -i -v' #noindex alias cp='cp -g -i -v -r' #noindex alias rm="rm -i -v" #noindex alias rmdir="rmdir -v" #noindex #- Алиасы для стандартных команд alias gcc="gcc -Os -Wextra -Wall" #noindex alias g++="g++ -Os -Wall" #noindex alias echo="echo -e" #noindex alias less="less -R" #noindex alias ls='ls -lGhpX --color=always --group-directories-first -v' #noindex alias lss='\ls --format=single-column' #noindex alias nl="nl -b a" #noindex alias df='df -hT' #noindex alias du='du -hs' #noindex alias free="free -m" #noindex alias wget='wget -c -T 5' #noindex alias ps="ps -aux" #noindex alias grep='grep -E -i' #noindex alias tree="tree -CAFa" #noindex alias crontab_i="crontab $CRON" #noindex alias crontab_e="$EDITOR $CRON" #noindex alias dmenu="dmenu -fn '-*-fixed-*-*-*-*-15-*-*-*-*-*-*-*'" #noindex alias pstree="pstree -U -h" #noindex alias mkdir="mkdir -p -v" #noindex alias j="jobs -l" #noindex alias dirs="dirs -v" #noindex alias src=vimcat #noindex #- Замена стандартных путей для конфигурационных файлов alias mpd="mpd $SHELLRC/etc/media/mpd/mpd.conf" #noindex alias mpdr="\mpd $SHELLRC/etc/media/mpd/mpd_remote.conf" #noindex alias vim="vim -i $SHELLRC/var/vim/viminfo -p $*" #noindex alias mutt="mutt -F $SHELLRC/etc/mail/mutt/muttrc && echo "0" > $MD/new" #noindex alias screen="TERM=rxvt-256color screen" #noindex alias figlet="figlet -f $SHELLRC/etc/soft/figlet/fonts/standard.flf" #noindex alias cdargs="cdargs -b -f $SHELLRC/etc/soft/cdargs/cdargs -o $SHELLRC/etc/soft/cdargs/cdargsresult" #noindex alias zathura="nh zathura" #noindex alias z="nh zathura" #noindex alias sendemail="sendemail -l $LOGDIR/sendemail" #noindex alias g=git #noindex alias fm="PAGER=autoex fm" #noindex if [ $UID -eq 0 ]; then alias mc="TERM=xterm-256color mc -S modarin256root" else alias mc="TERM=xterm-256color mc -S modarin256" alias htop="htop -u $(whoami)" fi #}}} ########################################################################### #{{{ \033[00m\n\b------\n ################################################################################ #- Подсветка текущего дня в календаре function cal() { [ -z "$1" ] && command cal -m | clr "$(\date +%_d)" || command cal -m $* } #- Запуск программ без привязки к сессии nh() { nohup "$@" &>/dev/null & } #- Правка псевдонимов в Vim alias ealias="$EDITOR $ALIASES" #noindex #- Перезагрузка конфигов баша alias reload=". ~/.bashrc" #- Выход из сеанса alias :q="exit" #- ls с цифровым видом прав alias lls="ls -l | sed 's/--x/1/g; s/-w-/2/g; s/-wx/3/g; s/r--/4/g; s/r-x/5/g; s/rw-/6/g; s/rwx/7/g; s/---/0/g'" #- История bash h() { [ -z "$1" ] && history || history | grep "$1"; } #Переназначение функции, вызываемой неизвестной командой command_not_found_handle() { #noindex if [ -d "$1" ]; then cd "$1" else echo $1 | grep '[фывапролджэйцукенгшщзхъячсмитьбю]' 2>&1 > /dev/null if [ $? == 0 ]; then ex="$(echo -n $@ | \ sed "y/йцукенгшщзхъфывапролджэячсмитьбю\.ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,/qwertyuiop\[\]asdfghjkl;\'zxcvbnm,\.\/QWERTYUIOP\{\}ASDFGHJKL:\"ZXCVBNM<>\?/")" echo "$red[$@] -> $green[$ex]$rstc" $ex else echo >&2 "$redКоманда ${green}${1}${red} не найдена.$rstc" fi fi } #- Дата function date() { #noindex command date "${@:-'+%A, %d %B %Y, %H:%M'}" } #- Список функций и псевдонимов :h() { printf "$white -----------------------[ Функции и псевдонимы ]-----------------------$rstc\n" for file in ${HELPSRC[@]}; { for i in $(awk '/\w\(\)|^alias|^#\{\{\{ / && !/#noindex/ {print NR"\n"}' $file); { printf "$blue\t%-17s$rstc%s\n" \ "$(echo $(sed "s/=/ /g; /alias \|()\|#{{{ \| .*/ s///g; "$i"q;d" $file))" \ "$(sed "/#\|}}}/ s///g; "$((--i))"q;d" $file)"; } } printf "$white ----------------------------------------------------------------------$rstc\n\n" } #- Бэкап настроек b_back() { tar cvpzf "./Bash_`\date +%d-%m-%Y.%T`".tgz $SHELLRC; } #- Цветовые коды консоли colors() { for ((i = 0; i < 127; i++ )); { printf "\033[${i}m ${i} \e[0m" } echo "" } #- Самые используемые команды [-u -- уникальные] toph() { case "$1" in -u) history | cut -d ' ' -f 6- | sort | uniq -c | sort -rn | head -n 30;; * ) history | awk '{a[$4]++} END {for(i in a) {print a[i] " " i}}' \ | sort -rn | head -n 30 | column -t;; esac } #- Форматированный вывод PATH path() { echo $PATH | tr ':' '\n' | nl } #- alias w1="watch -n 1" #noindex #}}} ########################################################################### #{{{ \033[00m\n\b------<Мультимедийные_функции>\n ################################################################################ #- Конвертирование аудио в mp3 a2mp3() { lame -b ${2:-320} --noreplaygain -q 0 -m s -k -p "$1"; } #- Лог scmpc/last.fm lastfmlog() { watch -n 1 "tail $SHELLRC/var/log/mpdscribble.log"; } #}}} ########################################################################### #{{{ \033[00m\n\b------<Сетевые_функции>\n ################################################################################ #- Загрузка проекта с github.com githubdl() { git clone git://github.com/${1}.git } #}}} ########################################################################### #{{{ \033[00m\n\b------<Работа_с_файлами>\n ################################################################################ #- Vim alias :e="vim" #- Переход с поиском выше по дереву директорий up() { [[ "$1" == "" ]] && cd .. \ || cd $(echo $PWD | \grep -o "^.*$1\/" \ || (echo "$redПуть $1 не найден$rstc" >&2 && echo ".") ) } #- koi8r -> utf8 alias KU="iconv -c -f koi8r" #- cp1251 -> utf8 alias CU="iconv -c -f cp1251" #- 866 -> utf8 alias 8U="iconv -c -f 866" #- utf8 -> koi8r alias UK="iconv -c -t koi8r" #- utf8 -> cp1251 alias UC="iconv -c -t cp1251" #- utf8 -> 866 alias U8="iconv -c -t 866" #- -> utf8 alias 2U="iconv -c -t utf8" #- Конвертирование обложки в png alias cover2png="mv *.jpg cover.jpg; convert cover.jpg cover.png && rm -f cover.jpg" lnt() { #noindex ln -s "$(pwd)/$1" "$HOME/Downloads/TORRENTS/${2:-}" } #- Создание резервной копии файла backup() { cp $1{,.$(\date "+%d-%m-%Y.%T").bak}; } #- Удаление HTML-тэгов из файла ($1) unhtml() { cat $1 | sed -e :a -e 's/<[^>]*>//g;/&- #- Вывод размера файлов в отсортированном виде dus() { \du -smc "$@" | sort -gr | awk '{ if ($1 > 1024) { printf("%s%10sG","'$red'",sprintf("%.2f",$1/1024)) } else if ($1 > 1) { printf("%s%10sM","'$yellow'",$1) } else { printf("%s%10sM","'$blue'","~"$1) } sub($1,"") print $0,"'$rstc'" }' } #- file -> [X] file fcheck() { for i in "$@"; { if [[ ! "$i" =~ \[X\]\ .* ]]; then echo -n $i echo -ne '\000' echo -n $(echo $(basename "$i") | sed 's/^\[ \] \|^/[X] /') echo -ne '\000' fi } | xargs -0 -n2 mv -v } #- file -> [ ] file fucheck() { for i in "$@"; { if [[ ! "$i" =~ \[.\]\ .* ]]; then echo -n $i echo -ne '\000' echo -n "[ ] $i" echo -ne '\000' fi } | xargs -0 -n2 mv -v } #- Вывод файлов с подсветкой синтаксиса vcat() { source-highlight \ -f esc \ -i "$1" \ -o STDOUT \ --line-number=' ' \ --style-file=$SHELLRC/etc/soft/source-hl/default.style echo } #- Поиск пути к исполняемому файлу, просмотр кода функций и псевдонимов which() { #noindex (alias; declare -f) \ | /usr/bin/which \ --tty-only \ --read-alias \ --read-functions \ --show-tilde \ --show-dot $@ } 2>/dev/null #- Переход в директорию файла cdwhich() { cd $(dirname $(/usr/bin/which $1)) } #- Редактирование скриптов dowhich() { #noindex eval $1 $(/usr/bin/which $2) } #- Редактирование скриптов alias vimwhich="dowhich vim" #noindex alias nlwhich="dowhich nl" #noindex alias catwhich="dowhich cat" #noindex alias vcatwhich="dowhich vcat" #noindex #- Список уникальных слов с количеством вхождений wcu() { cat "$1" | tr -cs A-Za-z\' '\n' | tr A-Z a-z | sort | uniq -c | sort -nr | nl } #}}} ########################################################################### #{{{ \033[00m\n\b------<Администрирование>\n ################################################################################ #- Копирование файла $1 в $SHELLRC/bin/$2 cpbin() { cp $1 $SHELLRC/bin/$2/ } #- Перемещение файла $1 в $SHELLRC/bin/$2 mvbin() { mv $1 $SHELLRC/bin/$2/ } #- Создание символической ссылки на файл $1 в $SHELLRC/bin/$2 lnbin() { ln -s $(realpath $1) $SHELLRC/bin/$2/$1 } #- Генератор паролей passgen() { for i in `seq ${2:-10}`; { \n ################################################################################ #- Создание документации robodoc robodoc2html() { mkdir -p ${1:-.}/doc robodoc --src ${1:-.} --doc ./doc/ --multidoc \ --html \ --charset utf-8 \ --index \ --nosort \ --sections \ --source_line_numbers # --syntaxcolors # --nopre \ } #}}} ########################################################################### #{{{ \033[00m\n\b------<Управление_сервисами_и_процессами>\n ################################################################################ #- Поиск процесса по имени alias pgrep="pgrep -l" #- Запуск сервиса start() { su -c "sh $1 start"; } #- Остановка сервиса stop() { su -c "sh $1 stop"; } #- Перезапуск сервиса restart() { su -c "sh $1 restart"; } #}}} ########################################################################### #{{{ \033[00m\n\b------<Математические_функции>\n ################################################################################ #- Консольный калькулятор calc() { echo "$*" | bc -l; } #}}} ########################################################################### #{{{ \033[00m\n\b------<Прочее>\n ################################################################################ #- Подсветка выражений clr() { sed -e "s/$1/`echo -e "\033"`[7;31m&`echo -e "\033"`[1;0m/g"; } #- Перевод слов/выражений с сохранением слова в файл t() { sdcv --data-dir $SHELLRC/etc/soft/sdcv/dictionaries/ "$*" } #- Vimwiki alias ,ww="vim -c VimwikiIndex" #noindex #- Дневник alias ,w,w="vim -c VimwikiMakeDiaryNote" #noindex #- Vim со списком последних файлов alias ,m="vim -c MRU" #noindex #- Загрузка текста на ix.io alias ix="curl -F 'f:1=<-' ix.io" #- Преобразование списка в строку alias flat="tr '\n' ' '; echo" #}}} ###########################################################################