Мой .zshrc с комментариями

Выкладываю свой zshrc. Немного причесал. С комментариями оказалось 377 строк, без комментариев около ста шестидесяти. Как-то он у меня постоянно растет и изменяется, в общем у меня это единственный конфиг который я допиливаю (добавляю функции и алиасы) для удобства. Все никак не могу придумать нормальный FMMODE, поэтому кусок касающийся его и не привожу. Думаю как небольшой хелп по настройке zsh этот конфиг сойдет.

# загружаем дефолтный профиль оболочки
source /etc/profile

#
# Настраиваем безполезные клавиши плюс бекспей
#
# алиас ибо на некоторых машинах нихера чё-то без алиаса на загружается
alias zkbd='zsh /usr/share/zsh/4.3.9/functions/Misc/zkbd'
autoload zkbd
[[ ! -d ~/.zkbd ]] && mkdir ~/.zkbd
[[ ! -f ~/.zkbd/$TERM-$VENDOR-$OSTYPE ]] && zkbd 

# в новых версях пути поменялись, после вызова zkbd пишет новые,
# просто у мну старые файлы до сих пор валяются и работают
source  ~/.zkbd/$TERM-$VENDOR-$OSTYPE
[[ -n ${key[Home]}    ]]  && bindkey  "${key[Home]}"    beginning-of-line
[[ -n ${key[End]}     ]]  && bindkey  "${key[End]}"     end-of-line
[[ -n ${key[Insert]}  ]]  && bindkey  "${key[Insert]}"  overwrite-mode
[[ -n ${key[Delete]}  ]]  && bindkey  "${key[Delete]}"  delete-char
[[ -n ${key[Up]}      ]]  && bindkey  "${key[Up]}"      up-line-or-history
[[ -n ${key[Down]}    ]]  && bindkey  "${key[Down]}"    down-line-or-history
[[ -n ${key[Left]}    ]]  && bindkey  "${key[Left]}"    backward-char
[[ -n ${key[Right]}   ]]  && bindkey  "${key[Right]}"   forward-char
[[ -n ${key[Backspace]}   ]]  && bindkey  "${key[Backspace]}"   backward-delete-char

# PageUp PageDown(в арче лоханулись, забыли прописать)
bindkey "^[[5~" up-line-or-history
bindkey "^[[6~" down-line-or-history

#
# тут немного всякой хери, смысл которой я сам не особо понимаю
#
# Use hard limits, except for a smaller stack and no core dumps

unlimit
limit stack 8192
limit core 0
limit -s

# Установка атрибутов доступа для вновь создаваемых файлов
umask 022

# Shell functions
setenv() { typeset -x "${1}${1:+=}${(@)argv[2,$#]}" }  # csh compatibility
freload() { while (( $# )); do; unfunction $1; autoload -U $1; shift; done }

# Autoload zsh modules when they are referenced
zmodload -a zsh/stat stat
zmodload -a zsh/zpty zpty
zmodload -a zsh/zprof zprof
zmodload -ap zsh/mapfile mapfile

# Completions
zstyle ':completion:*::::' completer _expand _complete _ignored _approximate
zstyle -e ':completion:*:approximate:*' max-errors 'reply=( $(( ($#PREFIX+$#SUFFIX)/3 )) numeric )'
zstyle ':completion:*:expand:*' tag-order all-expansions
zstyle ':completion:*' verbose yes
zstyle ':completion:*:descriptions' format '%B%d%b'
zstyle ':completion:*:messages' format '%d'
zstyle ':completion:*:warnings' format 'No matches for: %d'
zstyle ':completion:*:corrections' format '%B%d (errors: %e)%b'
zstyle ':completion:*' group-name ''
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters
zstyle ':completion:*:*:(^rm):*:*files' ignored-patterns '*?.o' '*?.c~''*?.old' '*?.pro'
zstyle ':completion:*:functions' ignored-patterns '_*'

# менюшку нам для астокомплита
zstyle ':completion:*' menu yes select

#
# различные опцие шела
#
# Позволяем разворачивать сокращенный ввод, к примеру cd /u/sh в /usr/share
autoload -U compinit && compinit

# файл истории команд
HISTFILE=~/.zhistory

# Число команд, сохраняемых в HISTFILE
SAVEHIST=5000

# Дополнение файла истории
setopt  APPEND_HISTORY

# Игнорировать все повторения команд
setopt  HIST_IGNORE_ALL_DUPS

# Игнорировать лишние пробелы
setopt  HIST_IGNORE_SPACE

# не пищать при дополнении или ошибках
setopt NO_BEEP

# если набрали путь к директории без комманды CD, то перейти
setopt AUTO_CD

# исправлять неверно набранные комманды
setopt CORRECT_ALL

# zsh будет обращаться с пробелами так же, как и bash
setopt SH_WORD_SPLIT

# последние комманды в начале файла и не хранить дубликаты
setopt histexpiredupsfirst histfindnodups

# ещё всякая херь про истоию
setopt histignoredups histnostore histverify histignorespace extended_history  share_history

# Установка и снятие различных опций шелла
setopt   notify globdots correct pushdtohome cdablevars autolist
setopt   correctall autocd recexact longlistjobs
setopt   autoresume histignoredups pushdsilent noclobber
setopt   autopushd pushdminus extendedglob rcquotes mailwarning
unsetopt bgnice autoparamslash

# Не считать Control+C за выход из оболочки
setopt  IGNORE_EOF

# автоматическое удаление одинакового из этого массива
typeset -U path cdpath fpath manpath

# загружаем список цветов
autoload colors && colors

#
# Установка PROMT
#
# левый
PROMPT="%{$fg_bold[grey]%}>>%{$reset_color%}"

# правый
# %(?,%{\e[0;32m%}:%)%{\e[0m%},%{\e[0;31m%}:(%{\e[0m%}
# когда всё гуд хороший смайлик, когда ошибка то грусный, ну и цветные ясен фиг
RPROMPT="%{$fg_bold[grey]%}%~/ %{$reset_color%}% %(?,%{$fg[green]%}:%)%{$reset_color%},%{$fg[red]%}:(%{$reset_color%}"

# вопрос на автокоррекцию
SPROMPT='zsh: Заменить '\''%R'\'' на '\''%r'\'' ? [Yes/No/Abort/Edit] '

# симпотное добавления для kill
zstyle ':completion:*:*:kill:*:processes' list-colors "=(#b) #([0-9]#)*=$color[cyan]=$color[red]"

# заголовки и прочее.

precmd() {
	 [[ -t 1 ]] || return
	case $TERM in
	*xterm*|rxvt|(dt|k|E|a)term*) print -Pn "\e]0;[%~] %m\a"	;;
	screen(-bce|.linux)) print -Pn "\ek[%~]\e\" && print -Pn "\e]0;[%~] %m (screen)\a" ;;  #заголовок для скрина
	esac
}
preexec() {
	[[ -t 1 ]] || return
	case $TERM in
	*xterm*|rxvt|(dt|k|E|a)term*) print -Pn "\e]0;<$1> [%~] %m\a" ;;
	screen(-bce|.linux)) print -Pn "\ek<$1> [%~]\e\" && print -Pn "\e]0;<$1> [%~] %m (screen)\a" ;; #заголовок для скрина
	esac
}
typeset -g -A key

#
# экранируем спецсимволы в url, например &, ?, ~ и так далее
autoload -U url-quote-magic
zle -N self-insert url-quote-magic

#
# мои хоткеи
#
# дополнение по истории, ^X^Z включить ^Z выключить
autoload -U predict-on
zle -N predict-on
zle -N predict-off
bindkey -M emacs "^X^Z" predict-on
bindkey -M emacs "^Z" predict-off

# peжuм нaвuгaцuu в cтuлe emacs
bindkey -e

# режим редактирования команды, вызывает для этого то что в $EDITOR
autoload -U edit-command-line

# Вызов редактора для редактирования строки ввода (хоткей в стиле emacs)
# bindkey -M vicmd v edit-command-line для командного режима vi
zle -N  edit-command-line
bindkey -M emacs "^X^E" edit-command-line

#завершить слово команду
bindkey -M emacs "^N" complete-word

#вызов диалога удаления файлов в папке
function dialogrun; { rm -rf $(dialog --separate-output --checklist file 100 100 100 $(for l in $(ls -A); do echo "$l" "$(test -d $l && echo "dir" || echo "file")" 0; done) --stdout); clear  }
zle -N dialogrun
bindkey -M emacs "^X^O" dialogrun

# куда же мы без калькулятора
autoload -U zcalc

#
# мои функции
#
ccd() { cd && ls}

# создать директорию и перейти в нее
mcd(){ mkdir $1; cd $1 }

# если текущая директория пустая, то удалить ее и перейти в родительскую директорию
rcd(){ local P="`pwd`"; cd .. && rmdir "$P" || cd "$P"; }

# быстрое переименование
name() {
    name=$1
    vared -c -p 'rename to: ' name
    command mv $1 $name
}

# распаковка архива
extract () {
    if [ -f $1 ] ; then
        case $1 in
            *.tar.bz2)   tar xjf $1        ;;
            *.tar.gz)    tar xzf $1     ;;
            *.bz2)       bunzip2 $1       ;;
            *.rar)       unrar x $1     ;;
            *.gz)        gunzip $1     ;;
            *.tar)       tar xf $1        ;;
            *.tbz2)      tar xjf $1      ;;
            *.tgz)       tar xzf $1       ;;
            *.zip)       unzip $1     ;;
            *.Z)         uncompress $1  ;;
            *.7z)        7z x $1    ;;
            *)           echo "я не в курсе как распаковать '$1'..." ;;
        esac
    else
        echo "'$1' is not a valid file"
    fi
}

# упаковка в архив
pk () {
    if [ $1 ] ; then
        case $1 in
            tbz)   	tar cjvf $2.tar.bz2 $2      ;;
            tgz)   	tar czvf $2.tar.gz  $2   	;;
            tar)  	tar cpvf $2.tar  $2       ;;
			bz2)	bzip $2 ;;
            gz)		gzip -c -9 -n $2 > $2.gz ;;
			zip)   	zip -r $2.zip $2   ;;
            7z)    	7z a $2.7z $2    ;;
            *)     	echo "'$1' cannot be packed via pk()" ;;
        esac
    else
        echo "'$1' is not a valid file"
    fi
}

# мой cd
cdpath=( . ~ /mnt/MLIVE )

# mp3 в нормальную кодировку
mp32utf() { find -iname '*.mp3' -print0 | xargs -0 mid3iconv -eCP1251 --remove-v1 }

# конвертируем всякую дурь
mpg2flv() { ffmpeg -i $1 -ar 22050 -ab 32 -f flv -s 320x240 `echo $1 | awk -F . '{print $1}'`.flv }
flv2xvid() { mencoder "$1" -vf scale=320:240  -ovc xvid -xvidencopts bitrate=250:autoaspect -vf pp=lb -oac mp3lame  -lameopts fast:preset=standard -o  "./basename $1.avi" }
flv2divx() { mencoder "$1" --vf scale=320:240  -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=250:mbd=2:v4mv:autoaspect -vf pp=lb -oac mp3lame  -lameopts fast:preset=standard -o  "./basename $1.avi" }

# top по имени процесса, правда только по полному
pidtop() {top -p `pidof $@ | tr ' ' ','`}

# простой калькулятор
calc() {echo "${1}"|bc -l;}

# мой айпишник
myip() {lynx --source http://www.formyip.com/ |grep The | awk {'print $5'}}

# великий рандом для перемешивания строк в файле
rand() { awk '{print rand()"\t"$0}'|sort|awk -F'\t' '{print $2}'  }

# копипаст в консоли
ccopy(){ cp $1 /tmp/ccopy.$1; }
alias cpaste="ls /tmp/ccopy.* | sed 's|/tmp/ccopy.||' | xargs -I % mv /tmp/ccopy.% ./%"

#
# переменные окружения и прочая чушь
#
# перенаправляем
READNULLCMD=${PAGER}

#оформим подсветку в grep
export GREP_COLOR="1;33"

# если стоит most то заюзаем в качестве $PAGER
[[ -x $(whence -p most) ]] && export PAGER=$(whence -p most)

# редактор по дефолту
export EDITOR=joe

# пути где искать бинарники
export PATH="$PATH:~/soft/bin/"

# ООо и русские имена файлов
export OOO_FORCE_DESKTOP=gnome

# забыл зачем ставил
export LESSCHARSET=UTF-8

#разукрашиваем ls и автодополнение
export LS_COLORS='no=00;37:fi=00;37:di=01;36:ln=04;36:pi=33:so=01;35:do=01;35:bd=33;01:cd=33;01:or=31;01:su=37:sg=30:tw=30:ow=34:st=37:ex=01;31:*.cmd=01;31:*.exe=01;31:*.com=01;31:*.btm=01;31:*.sh=01;31:*.run=01;31:*.tar=33:*.tgz=33:*.arj=33:*.taz=33:*.lzh=33:*.zip=33:*.z=33:*.Z=33:*.gz=33:*.bz2=33:*.deb=33:*.rpm=33:*.jar=33:*.rar=33:*.jpg=32:*.jpeg=32:*.gif=32:*.bmp=32:*.pbm=32:*.pgm=32:*.ppm=32:*.tga=32:*.xbm=32:*.xpm=32:*.tif=32:*.tiff=32:*.png=32:*.mov=34:*.mpg=34:*.mpeg=34:*.avi=34:*.fli=34:*.flv=34:*.3gp=34:*.mp4=34:*.divx=34:*.gl=32:*.dl=32:*.xcf=32:*.xwd=32:*.flac=35:*.mp3=35:*.mpc=35:*.ogg=35:*.wav=35:*.m3u=35:';
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}

# значение цветов #30 черный текст #40 черный фон
#00 восстановление цвета по умолчанию #31 красный текст #41 красный фон
#01 включить яркие цвета #32 зеленый текст #42 зеленый фон
#04 подчеркнутый текст #33 желтый (или коричневый) текст #43 желтый (или коричневый) фон
#05 мигающий текст #34 синий текст #44 синий фон
# ну или color юзать #35 фиолетовый текст #45 фиолетовый фон
# #36 cyan текст #46 cyan фон
# алиасы #37 белый (или серый) текст #47 белый (или серый) фон
#
# цветной grep
alias grep='grep --color=auto'

# более человекочитаемые df и du
alias df='df -h'
alias du='du -h'

# переименование-перемещение c пogтвepжgeнueм без коррекции
alias mv='nocorrect mv -i'

# рекурсивное копирование с подтверждением без коррекции
alias cp='nocorrect cp -iR'

# удаление с подтверждением без коррекции
alias rm='nocorrect rm -i'

# принудимтельное удаление без коррекции
alias rmf='nocorrect rm -f'

# принудительное рекурсивное удаление без коррекции
alias rmrf='nocorrect rm -fR'

# создание каталогов без коррекции
alias mkdir='nocorrect mkdir'

# показ файлов в цвете
alias ls='ls -F --color=auto'

# разукрашиваем некоторые команды с помощью grc
[[ -f /usr/bin/grc ]] && {
  alias ping="grc --colour=auto ping"
  alias traceroute="grc --colour=auto traceroute"
  alias make="grc --colour=auto make"
  alias diff="grc --colour=auto diff"
  alias cvs="grc --colour=auto cvs"
  alias netstat="grc --colour=auto netstat"
}

# разукрашиваем логи с помощью grc
alias logc="grc cat"
alias logt="grc tail"
alias logh="grc head"

#
# запуск программ
#
# везде
alias -s {avi,mpeg,mpg,mov,m2v,flv}=mplayer
alias -s {zip,fb2}=fbless
alias -s txt=$PAGER
alias -s py=python
alias -s {ogg,mp3,wav,wma}=mplayer

# в иксах
alias -s {xls,doc,,rtf,ppt,odt,sxw}=soffice
alias -s {png,gif,jpg,jpeg}=feh
alias -s {pdf,djvu}=evince

# без иксов
[[ -z $DISPLAY ]] && {
	alias -s {odt,doc,sxw,xls,doc,rtf}=catdoc
	alias -s {png,gif,jpg,jpeg}="fbi -a"
	alias -s {pdf,djvu}=evince
}

# html сам пусть соображает чё запускать
autoload -U pick-web-browser
alias -s {html,htm}=pick-web-browser

#
# глобальные алиасы
#
alias -g H="| head"
alias -g T="| tail"
alias -g G="| grep"
alias -g L="| less"
alias -g M="| most"
alias -g B="&|"
alias -g HL="--help"
alias -g LL="2>&1 | less"
alias -g CA="2>&1 | cat -A"
alias -g NE="2> /dev/null"
alias -g NUL="> /dev/null 2>&1"

#конвертим вывод в utf8, а то достало
alias -g KU="| iconv -c -f koi8r -t utf8"
alias -g CU="| iconv -c -f cp1251 -t utf8"

#ну и обратно тоже
alias -g UK="| iconv -c -f utf8 -t koi8r"
alias -g UC="| iconv -c -f utf8 -t cp1251"

#
# куча алиасов
#
# sudo
alias spacman="sudo pacman"
alias pstop="sudo pppoe-stop"
alias pstart="sudo pppoe-start"
alias halt="sudo halt"
alias reboot="sudo reboot"
alias gparted="sudo gparted"

# родной скрин
alias screen="screen -DR"

# ну так привычнее :)
alias ncmpc="ncmpcpp"

# lastfm
alias shell-fm="shell-fm lastfm://user/muhas"

# список удаленных файлов с NTFS, FAT, UFS1/2, FFS, Ext2 и Ext3
# пакет sleuthkit, утилита icat для восстановления
alias fls="fls -rd"

#
# хитрожопые алиасы
#
# пишем диски
alias iso2cd="cdrecord -s dev=`cdrecord --devices 2>&1 | grep "\(rw\|dev=\)" | awk {'print $2'} | cut -f'2' -d'=' | head -n1` gracetime=1 driveropts=burnfree -dao -overburn -v"

# nrg2iso
alias nrg2iso="dd bs=1k if=$1 of=$2 skip=300"

# ls -l с цифровым видом прав
alias lls="ls -l | sed -e 's/--x/1/g' -e 's/-w-/2/g' -e 's/-wx/3/g' -e 's/r--/4/g'  -e 's/r-x/5/g' -e 's/rw-/6/g' -e 's/rwx/7/g' -e 's/---/0/g'"

# показываев дерево директорий
alias dirf='find . -type d | sed -e "s/[^-][^\/]*\//  |/g" -e "s/|\([^ ]\)/|-\1/"'

# grep по ps aux
alias psgrep='ps aux | grep $(echo $1 | sed "s/^\(.\)/[\1]/g")'

# удаляем пустые строки и комментарии
alias delspacecomm="sed '/ *#/d; /^ *$/d' $1"

# создаем пароль из 6символов
alias mkpass="head -c6 /dev/urandom | xxd -ps"

#
# команды при запуске zsh
#
# фортунки с лора, без них скучно =)
fortune lorquotes


valya 09-03-2009
Извините за ламерский вопрос, но что такое upload/post? че то у меня zsh ругается...
Denis 09-03-2009
У меня почему то pacman перестал выводить часть строк в xterm при использовании zsh, потому от него отказался в пользу консервативного bash...
muhas 09-03-2009
valya, извиняюсь ща поправлю, это блог квадратные ковычки переведл так :(
muhas 09-03-2009
Поправил. Ещё раз извеняюсь за то что лоханулся...
Если ещё какая-нить ошибка то файлик можно посмотреть тут, и желательно сообщить мне об ошибке
amigo 09-03-2009
Спасибо! Положил в закладки.
evgen 09-03-2009
с этой штукой
alias make="grc --colour=auto make"

тебе будет сложно конфигурить ядро ;)
попробуй как нибудь на досуге сделать make menuconfig
я в свое время долго голову ломал :)
muhas 09-03-2009
Ядро уже лет пять не пересобирал, но если что алиас и снять можно
Denis 09-03-2009
Хмм... а я довольно часто пересобираю ядро... оно у меня самосборное, и ак выходит новая версия ванильного - тут же пересобираю...
muhas 09-03-2009
меня, к счастью, в дефолтном арчевском все устраивает.
Кстати, расскажи поподробнее про проблемы zsh+pacman, я что-то не понял :(
Denis 09-03-2009
Да когда пытался использовать zsh, все было супер, но заметил, что при вызове yaourt часть сообщения просто не показывается на экране, такое ощущение, что обрубается... таже ситуация и с пакманом. В некоторых случаях поэтом невозможно было провести обновление. что за часть не показывается уже не помню, давненько это было...
kapsh 09-09-2009
> extract () {

Тоже стал писать подобный велосипед, но потом обнаружил, что всё уже написано до нас: http://pastebin.ca/1561132
muhas 09-09-2009
kapsh, ага. сейчас вообще atool использую - правда отдельная софтина а не скрипт, но работает замечательно.
kapsh 09-09-2009
muhas, спасибо за наводку, atool тоже нашлась в репозиториях. Это кстати тоже перловый скрипт ;)
анонимоус 10-02-2010
Спасибо, после bash, pdksh, tcsh думаю переползти на zsh, Ваши заметки интересны
esc 10-03-2010
Уважаемые, подскажите, чяднт? Каждый раз при включении консоли у меня заново спрашивает все эти клавиши: F1, F2, Backspace...
muhas 10-03-2010
в новых версях пути поменялись, после вызова zkbd пишет новые,

вроде сейчас это
~/.zkbd/$TERM-$VENDOR-$OSTYPE
нужно заменить на
~/.zkbd/$TERM-${DISPLAY:-$VENDOR-$OSTYPE}
или
${ZDOTDIR:-$HOME}/.zkbd/$TERM-${DISPLAY:-$VENDOR-$OSTYPE}

ну и alias zkbd сменить соответсвенно версию (хотя повидимому и так работает)
Тов.Жюков 10-05-2010
muhas, прикрепи ссылку на скачку файла, чтобы не копипастить с веба.
wiz 10-08-2010
zsh: can't open input file: /usr/share/zsh/4.3.9/functions/Misc/zkbd
/home/wiz/.zshrc:source:16: no such file or directory: /home/wiz/.zkbd/xterm-pc-linux-gnu

это он чего от меня хочет? щ_Щ
muhas 10-08-2010
@wiz клаву хочет помочь тебе настроить, но функции не найти ибо видимо путь другой(версия изменилась или ещё чего) - так что закоментируй строку
alias zkbd='zsh /usr/share/zsh/4.3.9/functions/Misc/zkbd'
ибо zkbd и так должен увидится(писал на всякий случай ибо на некоторых машинах лоад путей был почему-то раньше и приходилось путь указывать напрямую)
anon 11-05-2011
if [ "${UID}" != 0 ] && [ -x `where sudo` ]; then
SUDO_CMD="$(where sudo)"
alias modprobe="${SUDO_CMD} modprobe"
alias updatedb="${SUDO_CMD} updatedb"
alias locate="${SUDO_CMD} locate"
alias sudoi="${SUDO_CMD} -i"
alias pacman="${SUDO_CMD} pacman-color"
alias updt="${SUDO_CMD} yaourt -Syu --aur --noconfirm -f"
alias yaS="${SUDO_CMD} yaourt -S"
alias yaR="${SUDO_CMD} yaourt -R"
else
alias updt="${SUDO_CMD} yaourt -Syu --aur --noconfirm -f"
alias yaS="yaourt -S"
alias yaR="yaourt -R"
fi
отличный пост и камфиг.
muhas 11-05-2011
спасибо за коплимент. с sudocmd занятно придумано. кстати у меня в zshrc появился алиас y на йогурт дабы упростить y -Suy (aur включен в конфиге)
и без sudo ибо sudo пакману разрешон и поэтому yaourt можно запускать без судо(да и с рутовыми правами он вроде как ругается)
anon 11-05-2011
функция наподобие фидоровской service,
может кому пригодится и дабы не плодить одинаковые костыли:

service(){
INIT_PATH="/etc/rc.d"
if [ -f "${INIT_PATH}"/"${1}" ]; then SERVICE="${1}"
if [ "$UID" != "0" ] && [ -x `where sudo` ]; then
SUDO_CMD="$(where sudo)"
fi
fi
case "$2" in
force-restart)
"${SUDO_CMD}" "${INIT_PATH}"/"${SERVICE}" force-restart
;;
force-reload)
"${SUDO_CMD}" "${INIT_PATH}"/"${SERVICE}" force-reload
;;
reload)
"${SUDO_CMD}" "${INIT_PATH}"/"${SERVICE}" reload
;;
setup)
"${SUDO_CMD}" "${INIT_PATH}"/"${SERVICE}" setup
;;
start)
"${SUDO_CMD}" "${INIT_PATH}"/"${SERVICE}" start
;;
stop)
"${SUDO_CMD}" "${INIT_PATH}"/"${SERVICE}" stop
;;
restart)
"${SUDO_CMD}" "${INIT_PATH}"/"${SERVICE}" restart
;;
setup)
"${SUDO_CMD}" "${INIT_PATH}"/"${SERVICE}" setup
;;
*)
echo "usage: $0 <service name> {force-reload|force-restart|reload|restart|setup|start}"
esac
}
muhas 11-05-2011
дабы не плодить одинаковые костыли в арче имеется с недавнего времени команда rc
а в ауре есть RedHat-like 'service' command for services managing
yaourt -S service
в блоге про что-то из гуев вроде писал, на а про команды rc (который позволяет рулить сразу несколькими демонами) в арчетолксах новости проскакивали на днях

но к zshrc сие отношение никакого не имеет =)
muhas 11-05-2011
кстати для service у zsh вроде даже автодополнения работает подстваляя сервисы
anon 11-05-2011
работает. тем и кашерно. арчик + зишелик = профит :)
anon 11-05-2011
кстати амикус прыщ
balta2ar 12-07-2012
Товарищ Мухас, может быть вы подскажете? Как сделать PID completion для команды gdb такой же, как у kill, но обязательно только после параметра -p, например
gdb -- дополняются файлы
gdb -p -- дополняются *только* процессы
muhas 12-07-2012
К сожалению не знаю