How-To :: ZSH + oh-my-zsh no slackware (e noutras distros)


E venho hoje demonstrar o $HOME/.zshrc que utilizo no Slackware (em breve tentarei fazer o mesmo para o caso do BASH e do FISH (já que sou o atual mantenedor deste pacote no SlackBuilds).

Instalação.

Salvo algumas exceções, boa parte do conteúdo desde .zshrc poderá ser utilizado em qualquer distribuição, então se quiser tentar, instale aí o ZSH.

E defina-o como seu shell padrão:

$ chsh -s /bin/zsh $USER

Como o ZSH já vem instalado numa instalação padrão do Slackware, vamos logo para o passo do oh-my-zsh:

$ cd
$ git clone https://github.com/robbyrussell/oh-my-zsh .oh-my-zsh

Se daqui por diante você quiser seguir com suas próprias pernas, apenas faça isto:

$ cp -a .oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

2015-10-21-141538_802x112_scrot

E ao abrir novamente seu terminal, cês terão algo como isto:

2015-10-21-141614_802x482_scrot

Porém, se quiserem utilizar a minha config, bastará substituir todo o conteúdo do arquivo ~/.zshrc por isto:

# ------------------------------
# ZSH Shell minimal definitions.
# ------------------------------

export ZSH=$HOME/.oh-my-zsh

ZSH_THEME="gnzh"
DISABLE_AUTO_UPDATE="true"
plugins=()

export PATH="$PATH:$HOME/bin:/bin:/sbin:/usr/local/bin:/usr/bin:/usr/games:/usr/lib/java/bin:/usr/lib/java/jre/bin:/usr/lib/qt/bin:/usr/lib/qt5/bin:/usr/sbin:/usr/share/texmf/bin"

source $ZSH/oh-my-zsh.sh

export LANG=pt_BR.UTF-8

setxkbmap -model abnt2 -layout br -variant abnt2
setxkbmap -option terminate:ctrl_alt_bksp

export EDITOR='nano'
alias editor='nano'
alias vi='nano'

# Substitui CP e MV por pycp|pymv ou vcp|vmv.
alias mv='vmv -ga'
alias mvf='vmv -gaf'
alias cp='vcp -ga'
alias cpf='vcp -gaf'

# MAKE colorido.
alias make='colormake'

# LS colorido.
alias ls='ls --color=auto'
LS_COLORS='no=00:fi=00:di=00;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.ogg=01;35:*.mp3=01;35:*.wav=01;35:'
export LS_COLORS

# Remover com possibilidade de recuperação (requer: trash-cli).
alias rm='trash-put -dfRv'
alias list-trash='trash-list'

# --------------------
# Aliases.
# --------------------

alias dir='dir --color=auto'
alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
alias g="grep --color=always"
alias gi="grep -i --color=always"
alias mkdir='mkdir -pv'
alias cls='clear'
alias psa='ps auxf'
alias cal='echo -e "${CYAN}"; cal""'
alias hist='history | g $1'
alias du='du -sh'
alias dul='\du -h | less'
alias df='df -h'
alias nano='nano -w'

# Youtub-dl.
alias ytb_low='youtube-dl -c -f 5'
alias ytb_medium='youtube-dl -c -f 18'
alias ytb_high='youtube-dl -c -f 22'
alias ytb_audio_low='youtube-dl -c -f 140'
alias ytb_audio_high='youtube-dl -c -f 141'
alias youtube_audio='youtube-dl -ctk --extract-audio'

# Atualizar fontes.
alias fonts-upd='sudo fc-cache -vf'

# Transmission CLI.
alias transmission='transmission-cli -b -ep -d 2048 -u 64 -p 51413 -M'

# NTP Update.
alias timeupd='sudo ntpdate -u pool.ntp.org'

# Videodesk. ( requer: xwinwrap )
# INFO: http://www.vivaolinux.com.br/dica/Colocar-um-descanso-de-tela-como-plano-de-fundo-da-area-de-trabalho-(XFCE)
# USO: videodesk arquivo-de-vídeo
alias videodesk='xwinwrap -ni -o 0.6 -fs -s -st -sp -b -nf -- mplayer -wid WID'

# Desligamento|Reinicialização do Sistema.
alias reboot='sudo /sbin/reboot'
alias poweroff='sudo /sbin/poweroff'
alias halt='sudo /sbin/halt'
alias shutdown='sudo /sbin/shutdown'
alias suspend='sudo pm-suspend'

# Diretórios.
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
alias .....='cd ../../../..'
alias home='cd ~/'
alias bin='cd ~/bin'
alias clone='cd ~/build/git'
alias desktop='cd ~/Área\ de\ trabalho'
alias documents='cd ~/Documentos'
alias downloads='cd ~/Downloads'
alias dropbox='cd ~/Dropbox'
alias images='cd ~/Imagens'
alias musicas='cd ~/Música'
alias pdf='cd ~/PDF'
alias shots='cd ~/Screenshots'
alias slackbuilds='cd ~/SlackBuilds'
alias convert='cd ~/SoundKonverter'
alias torrents='cd ~/Torrents'
alias videos='cd ~/Vídeos'

# Slackware.
alias update='rsync-slackcurrent.sh; sudo slackpkg update'
alias update-gpg='sudo slackpkg update gpg'
alias upgrade-all='sudo slackpkg upgrade-all'
alias install-new='sudo slackpkg install-new'
alias new-config='sudo slackpkg new-config'
alias clean-system='sudo slackpkg clean-system'
alias install='sudo slackpkg install'
alias reinstall='sudo slackpkg reinstall'
alias remove='sudo slackpkg remove'
alias search='sudo slackpkg search'
alias file-search='sudo slackpkg file-search'
alias info='sudo slackpkg info'
alias template='export DATA=$(date +%Y-%m-%d-%H:%M); sudo slackpkg generate-template slackware-$DATA'
alias listpkgs='grep -l "NOME" $(find /var/lib/sbopkg/SBo -name \*.info) | xargs -l1'
alias sbosync='sudo sbopkg -r'
alias sboup='sudo sbopkg -c'
alias sbodel='sudo sbopkg -o'
alias sbodep='sudo sqg -p'
alias sbose='sudo sbopkg -s'
alias sbobuild='sudo PKGTYPE=txz OUTPUT=/home/edps/SlackBuilds/Packages/ sbopkg -k -b'
alias sboin='sudo PKGTYPE=txz OUTPUT=/home/edps/SlackBuilds/Packages/ sbopkg -k -i'
alias sbolocal='sudo PKGTYPE=txz OUTPUT=/home/edps/SlackBuilds/Packages/ sh'
alias prelink='sudo prelink --all'
alias updatedb='sudo updatedb'
alias update-grub='sudo grub-mkconfig -o /boot/grub/grub.cfg'
alias grub-install='sudo grub-install'
alias lilo-install='sudo lilo -v'
alias cfg='./configure --prefix=/usr --sysconfdir=/etc && make'

# Listar UUIDS.
alias uuids='ls -al /dev/disk/by-uuid/'

# Speedometer. (requer: speedometer)
alias speed='speedometer -rx eth0 -tx eth0'

# Máquinas Virtuais do VirtualBox.
# Info: http://www.vivaolinux.com.br/artigo/Executando-maquinas-virtuais-diretamente-no-GDM/
alias winxp='VBoxSDL -vm winxp'

# Processos.
alias process='ps aux | grep'
alias kill='sudo kill -9'
alias killall='sudo killall'

# Destruir dados de discos. (comentado por precaução!).
# alias erase-sda='sudo dd if=/dev/urandom of=/dev/sda bs=16M' 
# alias shred-sda='sudo shred -v -z -n 5 /dev/sda' 

# MOC (Music On Console).
alias juh='mocp -m /mnt/multimedia/MUSICAS/'
alias juuh='clyrics -m -P /home/edps/.config/clyrics/plugins/'
alias killmoc='killall mocp'

# Converter todas as imagens .JPG de uma pasta para .PNG.
alias png2jpg='for i in *.png; do convert "$i" "${i%.png}.jpg" && echo "$i"; done'

# Converter imagem colorida para escala de cinza.
alias jpg2grey='find -name "*.jpg" -exec mogrify -colorspace gray {} \;'
alias png2grey='find -name "*.jpg" -exec mogrify -colorspace gray {} \;'

# Limpar lixeira com segurança (srm).
# segurança: minima=-dfllrvz ; média= -dflrvz ; total= -dfrvz

alias tcln='srm -dfllrvz ~/.local/share/Trash/files/; srm -dfllrvz ~/.local/share/Trash/info/; \
srm -dfllrvz /mnt/backup/.Trash-1000/files/; srm -dfllrvz /mnt/backup/.Trash-1000/info/; \
srm -dfllrvz /mnt/multimedia/.Trash-1000/files/; srm -dfllrvz /mnt/multimedia/.Trash-1000/info/'

# Wget ( https://edpsblog.wordpress.com/2013/11/10/wget-erro-no-certificado-resolvido/ )
alias wget='wget -c --no-check-certificate'

# Bleachbit (cli-mode).
alias bbt='bleachbit -c --preset'
alias bbt-root="su -c 'bleachbit -c --preset'"

# Cclive.
alias get='cclive -c --progressbar==normal'

# Backup.
alias backup='rsync -h --progress --stats -rtgoplD --update --delete-after --delete-excluded /mnt/arquivos/ARQUIVOS/ /mnt/backup/Arquivos/'
alias backup-hdd='rsync -h --progress --stats -rtgoplD --update --delete-after --delete-excluded /mnt/arquivos/ARQUIVOS/ /run/media/edps/SAMSUNG/ARQUIVOS/'
alias backup-music='rsync -h --progress --stats -rtgoplD --update --delete-after --delete-excluded /mnt/multimedia/MUSICAS/ /run/media/edps/SAMSUNG/MUSIC/'

# Fdupes.
alias fdupes-compare='fdupes -rNA'
alias fdupes-remove='fdupes -rNd'

# GIT-repair.
alias git-repair='git reset --hard HEAD; git merge upstream/master; git pull'

# Destravar Dispositivos no Thunar.
alias thumb='killall tumblerd; killall vlc; killall proxy'

# Baixar kernel mais recente.
# https://edpsblog.wordpress.com/2013/11/23/obtendo-automagicamente-uma-nova-versao-do-kernel/
alias getkernel='wget --no-check-certificate https://www.kernel.org/$(wget -qO- --no-check-certificate https://www.kernel.org | grep tar | head -n1 | cut -d\" -f2)'

# Squid LOG:
alias squidlog='sudo tail -f /var/log/squid/access.log'

# ----------------------
# Functions.
# ----------------------

# Gerenciar Serviços no Slackware.
# USO: start|stop|restart|reload|status serviço
start()
{
  for arg in $*; do
    sudo /etc/rc.d/$arg start
  done
}
stop()
{
  for arg in $*; do
    sudo /etc/rc.d/$arg stop
  done
}
restart()
{
  for arg in $*; do
    sudo /etc/rc.d/$arg restart
  done
}
reload()
{
  for arg in $*; do
    sudo /etc/rc.d/$arg reload
  done
}
status()
{
  for arg in $*; do
    sudo /etc/rc.d/$arg status
  done
}

# Editar arquivos importantes no Slackware Linux.
# USO: edit argumento
edit () {
    if [[ -z "$1" ]]; then
        echo "Sintaxe: edit aliases"
        return 1
    fi
    case "$1" in
        'zsh')
            $EDITOR "${HOME}/.zshrc"
            ;;
        'aliases')
            $EDITOR "${HOME}/.bash_aliases"
            ;;
        'functions')
            $EDITOR "${HOME}/.bash_functions"
            ;;
        'bashrc')
            $EDITOR "${HOME}/.bashrc"
            ;;
        'nano')
            $EDITOR "${HOME}/.nanorc"
            ;;
        'xbindkeys')
            $EDITOR "${HOME}/.xbindkeysrc"
            ;;
        'xinitrc')
            $EDITOR "${HOME}/.xinitrc"
            ;;
        'Xresources')
            $EDITOR "${HOME}/.Xresources"
            ;;
        'xsession')
            $EDITOR "${HOME}/.xsession"
            ;;
        'xsessionrc')
            $EDITOR "${HOME}/.xsessionrc"
            ;;
        'conky')
            $EDITOR "${HOME}/.conkyrc"
            ;;
        'polipo')
            $EDITOR "${HOME}/.poliporc"
            ;;
        'sources')
            sudo $EDITOR "/etc/slackpkg/mirrors"
            ;;
        'blacklist')
            sudo $EDITOR "/etc/slackpkg/blacklist"
            ;;
        'sbopkg.conf')
            sudo $EDITOR "/etc/sbopkg/sbopkg.conf"
            ;;
        'firewall')
            sudo $EDITOR "/etc/arno-iptables-firewall/firewall.conf"
            ;;
        'grub')
            sudo $EDITOR "/etc/default/grub"
            ;;
        'lilo')
            sudo $EDITOR "/etc/lilo.conf"
            ;;
        'lxdm')
            sudo $EDITOR "/etc/lxdm/lxdm.conf"
            ;;
        'slim')
            sudo $EDITOR "/etc/slim.conf"
            ;;
        'xorg')
            sudo $EDITOR "/etc/X11/xorg.conf"
            ;;
        'fstab')
            sudo $EDITOR "/etc/fstab"
            ;;
        'hosts')
            sudo $EDITOR "/etc/hosts"
            ;;
        'hostname')
            sudo $EDITOR "/etc/HOSTNAME"
            ;;
        'inittab')
            sudo $EDITOR "/etc/inittab"
            ;;
        'ntp.conf')
            sudo $EDITOR "/etc/ntp.conf"
            ;;
        'prelink')
            sudo $EDITOR "/etc/prelink.conf"
            ;;
        'preload')
            sudo $EDITOR "/etc/preload.conf"
            ;;
        'profile')
            sudo $EDITOR "/etc/profile"
            ;;
        'resolv.conf')
            sudo $EDITOR "/etc/resolv.conf"
            ;;
        'sudoers')
            sudo $EDITOR "/etc/sudoers"
            ;;
        'updatedb')
            sudo $EDITOR "/etc/updatedb.conf"
            ;;
        'wget')
            sudo $EDITOR "/etc/wgetrc"
            ;;
        *)
            if [[ "$(readlink -f "$1")" != ${HOME}/* ]]; then
                sudo $EDITOR "$1"
            else
                $EDITOR "$1"
            fi
            ;;
    esac
}

# Espaço em disco.
hdd() {
  hdd=( sda1 sdb1 sdb2 sdb3 sdb5)
  echo -e "\n device | size  | used  | used% | avail | mount"
  echo "-----------------------------------------------"
  for hd in ${hdd[@]}; do
    fs=$(df -h /dev/$hd | tail -1 | awk -F' ' '{print $1}')
    sz=$(df -h /dev/$hd | tail -1 | awk -F' ' '{print $2}')
    us=$(df -h /dev/$hd | tail -1 | awk -F' ' '{print $3}')
    av=$(df -h /dev/$hd | tail -1 | awk -F' ' '{print $4}')
    pr=$(df -h /dev/$hd | tail -1 | awk -F' ' '{print $5}')
    mt=$(df -h /dev/$hd | tail -1 | awk -F' ' '{print $6}')
    echo -e " ${fs/\/dev\//}\t| $sz \t| $us \t| $pr \t| $av \t| ${mt/\/hdd\//}"
  done; echo
} #hdd

# Listar os 10 comandos mais utilizados.
function top10() { 
 history | awk '{a[$2]++ } END{for(i in a){print a[i] " " i}}' | sort -rn | head
} 

# Criar PDFs de ManPages (requer: ghostscript e mimeinfo).
manpdf() { man -t "$@" | ps2pdf - /tmp/manpdf_$1.pdf && xdg-open /tmp/manpdf_$1.pdf ;} 

# Extract.
# USO: extract arquivo
extract() { 
 if [ -f $1 ] ; then
 case $1 in
	*.tar.bz2)	tar xvjf $1	;; 
	*.tar.gz)	tar xvzf $1	;; 
	*.tar.xz)	tar xvJf $1	;; 
	*.bz2)		bunzip2 $1	;; 
	*.rar)		unrar x $1	;; 
	*.gz)		gunzip $1	;; 
	*.tar)		tar xvf $1	;; 
	*.tbz2)		tar xvjf $1	;; 
	*.tgz)		tar xvzf $1	;; 
	*.zip)		unzip $1	;; 
	*.Z)		uncompress $1	;; 
	*.7z)		7z x $1		;; 
	*.xz)		unxz $1		;; 
	*.exe)		cabextract $1	;; 
        *.deb)		dpkg -x "${1}" `echo "${1}" | sed "s/.deb//"`	;;
	*) echo "\`$1': tipo de arquivo desconhecido"			;;
 esac 
 else
 echo "\`$1' não é um arquivo válido!"
 fi
}

# Compactar Diretórios.
# USO: pk dir
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' não pode ser compactado via pk()" ;;
        esac
    else
        echo "'$1' não é um arquivo válido!"
    fi
}

# Screenshot da tela (requer: scrot).
shot() {
                name=`date +%Y%m%I%M%S%N`
                file=$name.png
                scrot $file -e 'mv $f /home/edps/Screenshots/'
}

shot5() {
                name=`date +%Y%m%I%M%S%N`
                file=$name.png
                scrot $file -e 'mv $f /home/edps/Screenshots/' -d 5
}

# Send text to hastbin.
haste() { a=$(cat); curl -X POST -s -d "$a" http://hastebin.com/documents | awk -F '"' '{print "http://hastebin.com/"$4}'; }

Este slideshow necessita de JavaScript.

Salve, feche seu teminal e divirta-se! 🙂

Plugins.

Se observarem bem, não tenho nenhum plugin habilitado, o que não quer dizer que vocês não possam fazê-lo, para tal vejam o que cada um significa em:

https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins

Então se desejar encorpar seu ~/.zshrc, modifique a linha:

plugins=()

E adicione o que desejar, minha sugestão são os plugins colored-man-pages e common-aliases (este, incompatível com alguns aliases que inseri em minha config, como o cp, mv, rm). Além dos que citei há muitos mais, como os específicos para algumas distros (archlinux, fedora, debian, suse, ubuntu) e vários tipos de linguagem de programação:

plugins=(colored-man-pages common-aliases)

Temas.

Caso deseje alterar o tema de seu ZSH, veja algumas screenshots em:

https://github.com/robbyrussell/oh-my-zsh/wiki/themes

E no ~/.zshrc, modifique a linha:

ZSH_THEME="gnzh"

Para um tema bacana, como por exemplo o minimal:

ZSH_THEME="minimal"
Terminal Sakura com shell ZSH e tema Minimal
Terminal Sakura com shell ZSH e tema Minimal

InTÈ!

How-To :: ZSH + oh-my-zsh no slackware (e noutras distros)

5 comentários sobre “How-To :: ZSH + oh-my-zsh no slackware (e noutras distros)

  1. zezaocapoeira disse:

    Salve mano. Parabéns pelo trabalho.

    Já uso o zsh há algum tempo como padrão.

    Aqui preferi montar uma configuração mais enxuta do “.zshrc”

    https://github.com/zezaocapoeira/dotfiles/blob/master/.zshrc

    E também adotei o “urxvt” como terminal padrão .
    A configuração que uso nele. Tem somente as funções que uso.

    https://github.com/zezaocapoeira/dotfiles/blob/master/.Xresources

    Obrigado pela atenção , salve !!!

    Curtir

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s