Publicado primeiramente em meu blog [
http://gnu2all.blogspot.com/2011/10/arch-linux-bashrc.html ], aqui apresento a minha configuração de .bashrc que certamente tornará o uso de seu Arch Linux mais proveitoso, muitos aliases, funções etc.
Também é possível utilizá-lo noutras distros, porém a parte referente ao gerenciamento de pacotes do Arch, deverá ser descartada ou ignorada.
No artigo do blog existe uma outra configuração necessária: a do .dir_colors, salve ambos os arquivos em sua $HOME e ou faça logout ou digite num terminal:
$ bash
Resumindo são 2 arquivos necessários ( ~/.bashrc e ~/.dir_colors ).
* quando possível postarei um outros para o Debian e uma dica com diversos estilos de bash_prompts.
Numa screen postada lá no blog, exemplifico como aplicar sombra numa imagem e esta função está presente neste .bashrc:
http://gnu2all.blogspot.com/2011/10/screenshot-arch-linux-kde.html
# ~/.bashrc: executed by bash(1) for non-login shells.
bash_prompt_command() {
# How many characters of the $PWD should be kept
local pwdmaxlen=25
# Indicate that there has been dir truncation
local trunc_symbol=".."
local dir=${PWD##*/}
pwdmaxlen=$(( ( pwdmaxlen < ${#dir} ) ? ${#dir} : pwdmaxlen ))
NEW_PWD=${PWD/#$HOME/\~}
local pwdoffset=$(( ${#NEW_PWD} - pwdmaxlen ))
if [ ${pwdoffset} -gt "0" ]
then
NEW_PWD=${NEW_PWD:$pwdoffset:$pwdmaxlen}
NEW_PWD=${trunc_symbol}/${NEW_PWD#*/}
fi
}
bash_prompt() {
case $TERM in
xterm*|rxvt*)
local TITLEBAR='\[\033]0;\u:${NEW_PWD}\007\]'
;;
*)
local TITLEBAR=""
;;
esac
local NONE="\[\033[0m\]" # unsets color to term's fg color
# regular colors
local K="\[\033[0;30m\]" # black
local R="\[\033[0;31m\]" # red
local G="\[\033[0;32m\]" # green
local Y="\[\033[0;33m\]" # yellow
local B="\[\033[0;34m\]" # blue
local M="\[\033[0;35m\]" # magenta
local C="\[\033[0;36m\]" # cyan
local W="\[\033[0;37m\]" # white
# emphasized (bolded) colors
local EMK="\[\033[1;30m\]"
local EMR="\[\033[1;31m\]"
local EMG="\[\033[1;32m\]"
local EMY="\[\033[1;33m\]"
local EMB="\[\033[1;34m\]"
local EMM="\[\033[1;35m\]"
local EMC="\[\033[1;36m\]"
local EMW="\[\033[1;37m\]"
# background colors
local BGK="\[\033[40m\]"
local BGR="\[\033[41m\]"
local BGG="\[\033[42m\]"
local BGY="\[\033[43m\]"
local BGB="\[\033[44m\]"
local BGM="\[\033[45m\]"
local BGC="\[\033[46m\]"
local BGW="\[\033[47m\]"
local UC=$W # user's color
[ $UID -eq "0" ] && UC=$R # root's color
# prompt
PROMPT_COMMAND='history -a;echo -en "\033[m\033[38;5;2m"$(( `sed -nu "s/MemFree:[\t ]\+\([0-9]\+\) kB/\1/p" /proc/meminfo`/1024))"\033[38;5;22m/"$((`sed -nu "s/MemTotal:[\t ]\+\([0-9]\+\) kB/\1/Ip" /proc/meminfo`/1024 ))MB"\t\033[m\033[38;5;55m$(< /proc/loadavg)\033[m"'
#PS1='\[\e[m\n\e[1;30m\][$$:$PPID \j:\!\[\e[1;30m\]]\[\e[0;36m\] \T \d \[\e[1;30m\][\[\e[1;34m\]\u@\H\[\e[1;30m\]:\[\e[0;37m\]${SSH_TTY} \[\e[0;32m\]+${SHLVL}\[\e[1;30m\]] \[\e[1;37m\]\w\[\e[0;37m\] \n($SHLVL:\!)\$ '
}
PS1="\e[01;31m+-[\e[01;35m\u\e[01;31m]--[\e[00;37m${HOSTNAME%%.*}\e[01;32m]:\w$\e[01;31m\n\e[01;31m+--\e[01;36m>>\e[00m"
#PS1="+-[\[\e[34m\]\h\[\e[0m\]][\[\e[32m\]\w\[\e[0m\]]\n+-? "
#PS1='[\u@\h \W]\$ '
PROMPT_COMMAND=bash_prompt_command
bash_prompt
unset bash_prompt
# share history across all terminals
PROMPT_COMMAND='history -a'
# Bash completion
set show-all-if-ambiguous on
# visual bell
set bell-style visible
# colour coreutils
eval $(dircolors -b ~/.dir_colors)
export GREP_COLOR="1;31"
alias grep="grep --color=auto"
alias ls="ls --color=auto"
complete -cf sudo
shopt -s cdspell
shopt -s checkwinsize
shopt -s cmdhist
shopt -s dotglob
shopt -s expand_aliases
shopt -s extglob
shopt -s histappend
shopt -s hostcomplete
shopt -s nocaseglob
export HISTSIZE=10000
export HISTFILESIZE=${HISTSIZE}
export HISTCONTROL=ignoreboth
alias ls='ls --group-directories-first --time-style=+"%d.%m.%Y %H:%M" --color=auto -F'
alias ll='ls -l --group-directories-first --time-style=+"%d.%m.%Y %H:%M" --color=auto -F'
alias la='ls -la --group-directories-first --time-style=+"%d.%m.%Y %H:%M" --color=auto -F'
alias grep='grep --color=tty -d skip'
alias cp="cp -i" # confirm before overwriting something
alias df='df -h' # human-readable sizes
alias free='free -m' # show sizes in MB
#
## Cores para manpages.
alias man="TERMINFO=~/.terminfo TERM=mostlike LESS=C PAGER=less man"
#
## Nautilus 'light'.
alias nautilus='gconftool-2 -s -t bool /apps/nautilus/preferences/show_desktop false & gconftool-2 -s -t bool /desktop/gnome/background/draw_background false & gconftool-2 -s -t bool /apps/nautilus/preferences/always_use_browser true & gconftool-2 -s -t bool /apps/nautilus/preferences/show_advanced_permissions true &'
#
## Archive extractor.
## usage: ex <file>
#
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 ;;
*) echo "\`$1': unrecognized file compression" ;;
esac
else
echo "\`$1' is not a valid file"
fi
}
#
## Nano Text Editor.
export EDITOR=nano
export VISUAL=nano
alias vi=nano
#
## Arch Aliases.
alias repos='sudo leafpad /etc/pacman.conf'
alias mirrors='sudo leafpad /etc/pacman.d/mirrorlist'
alias rcconf='sudo leafpad /etc/rc.conf'
alias mkpkg='sudo leafpad /etc/makepkg.conf'
alias fstab='sudo leafpad /etc/fstab'
alias pacsearch="pacman -Sl | cut -d' ' -f2 | grep "
alias clean="sudo pacman -Sc --noconfirm"
alias orphans="sudo pacman -Qtdq > ~/orphans.txt && less orphans.txt"
alias pacback='sudo pacman -Qqe | grep -v "$(sudo pacman -Qmq)" > ~/Dropbox/h4rd3r/pklist.txt'
alias atualizar='sudo pacman -Syu'
alias instalar='sudo pacman -S'
alias remover='sudo pacman -Rnsc'
alias listar='sudo pacman -Qq > pacotes-instalados.txt'
alias procurar='sudo pacman -Ss.txt'
alias otimizar='sudo pacman-optimize'
alias repack='sudo repacman'
alias packer-upgrd='sudo packer -Syu'
alias yaourt-install='sudo yaourt -S'
alias packer-install='packer -S --noedit --skipinteg'
alias removelock='sudo rm -fv /var/lib/pacman/db.lck'
alias sincroniza='repo-add /home/h4rd3r/PkgBuilds/packages/my_packages.db.tar.gz /home/h4rd3r/PkgBuilds/packages/*.pkg.tar.xz'
alias pacupd='removelock && sincroniza && sudo pacman-color -Syu'
alias packer-aur='removelock && sincroniza && sudo packer -Syu --auronly'
#
## Pesquisa colorida para os repos do Arch.
search() {
echo -e "$(pacman -Ss $@ | sed \
-e 's#core/.*#\\033[1;31m&\\033[0;37m#g' \
-e 's#extra/.*#\\033[0;32m&\\033[0;37m#g' \
-e 's#community/.*#\\033[1;35m&\\033[0;37m#g' \
-e 's#^.*/.* [0-9].*#\\033[0;36m&\\033[0;37m#g' )"
}
#
## Baixa pacotes do AUR com o Yaourt e depois os compila.
yaourtd() { cd $HOME/Build && yaourt -d "$1" && cd "$_" && makepkg -i; }
#
## Copiar ou Mover arquivos e seguir para o destino.
cpf() { cp "$@" && goto "$_"; }
mvf() { mv "$@" && goto "$_"; }
goto() { [ -d "$1" ] && cd "$1" || cd "$(dirname "$1")"; }
#
## TimeZone.
zone() { TZ="$1"/"$2" date; }
zones() { ls /usr/share/zoneinfo/"$1" ;}
#
## Nice mount output.
nmount() { (echo "DEVICE PATH TYPE FLAGS" && mount | awk '$2=$4="";1') | column -t; }
#
## Notas simples.
n() { $EDITOR $HOME/.notas/"$*".txt ; }
nls() { tree -CR --noreport $HOME/.notas | awk '{ if ((NR > 1) gsub(/.txt/,"")); if (NF==1) print $1; else if (NF==2) print $2; else if (NF==3) printf " %s\n", $3 }' ;}
nd() { rm $HOME/.notas/"$*".txt ; }
#
## Imprimir ManPages.
manp() { man -t "$@" | lpr -pPrinter; }
#
## Criar PDFs de ManPages (requer ghostscript e mimeinfo).
manpdf() { man -t "$@" | ps2pdf - /tmp/manpdf_$1.pdf && xdg-open /tmp/manpdf_$1.pdf ;}
# MOC (Music On Console).
alias music='mocp -m /media/sda1/MULTIMIDIA/MUSIC/'
alias killmoc='killall mocp'
#
# Pings:
alias google='ping -i 3 www.google.com'
alias globo='ping -i 3 www.globo.com'
alias uol='ping -i 3 www.uol.com.br'
alias yahoo='ping -i 3 www.yahoo.com'
# Converter WMA para WAV.
alias wma2wav='for i in *.wma; do mplayer -vo null -vc dummy -af resample=44100 -ao pcm:waveheader:file="${i%.wma}.wav" "$i" ; done'
#
## Top 10 (mostra os 10 comandos mais utilizados).
function top10() {
# copyright 2007 - 2010 Christopher Bratusek
history | awk '{a[$2]++ } END{for(i in a){print a[i] " " i}}' | sort -rn | head
}
#
## RTFM (Read The Fucking Manual!).
function rtfm()
{ help $@ || man $@ || lynx "http://www.google.com/search?q=$@"; }
#
## Screenshot.
function shot()
{
import -frame -strip -quality 75 "$HOME/$(date +%s).png"
}
#
## Zipar arquivos ou diretórios.
function zipf() { zip -r "$1".zip "$1" ; }
#
# Processos.
alias processos='ps -aux | grep '
alias matar='sudo kill -9 '
alias finalizar='sudo killall '
#
# Rádios OnLine.
alias kissfm='mplayer -playlist "http://www.crosshost.com.br/cbs/kiss/ouvir.m3u"'
alias kissfm2='mplayer -playlist http://www.crosshost.com.br/cbs/kiss/radio.asx'
alias metalmilitia='mplayer -playlist "http://www.server1.bouncestream.com.br/tunein.php/metal/playlist.pls"'
alias globoamsp='mplayer http://wm-sgr-live.globo.com/sgr_off_globoamsp_live.wma'
alias cbnfmsp='mplayer http://wm-sgr-live.globo.com/sgr_off_cbnfmsp_live.wma'
alias bandamsp='mplayer http://servidor25.crossdigital.com.br:8000/bandeirantesam'
#
## Shred.
#alias shred-sda-r='sudo shred -v -z -n 1 /dev/sda'
#alias shred-sda='sudo shred -v -z -n 0 /dev/sda'
#alias shred-sdb-r='sudo shred -v -z -n 1 /dev/sdb'
#alias shred-sdb='sudo shred -v -z -n 0 /dev/sdb'
#alias shred-sdc-r='sudo shred -v -z -n 1 /dev/sdc'
#alias shred-sdc='sudo shred -v -z -n 0 /dev/sdc'
#
## Xterm e Aterm.
alias aterm='xterm -ls -fg gray -bg black'
alias termr='xterm -bg AntiqueWhite -fg DarkRed &'
alias xsu='xterm -fn 7x14 -bg Red -fg white -e su &'
alias xtop='xterm -fn 6x13 -bg LightSlateGray -fg black -e top &'
#
## Ejetar Modem 3G.
alias ejetar='sudo eject /dev/sr1'
#
## Preligar binários (requer prelink).
alias preligar='sudo prelink --all'
#
## Atualizar índices com o updatedb (requer mlocate).
alias index='sudo updatedb'
#
## Image Shadow.
image-shadow () {
out=${1%.*}-shadow.${1#*.}
in=$1
echo "Converted file : $out"
if [ ! -z $2 ] ; then
convert $in -frame $2 $out
in=$out
fi
convert $in \( +clone -background black -shadow 60x5+10+10 \) \
+swap -background white -layers merge +repage $out
}
#
## Mapa de Teclado ABNT2.
setxkbmap -model abnt2 br
#
## Control + ALT + Backspace (ou use AltGr + PrintScrn + K).
setxkbmap -option terminate:ctrl_alt_bksp
#
## Plymouth.
alias plylist='sudo /usr/sbin/plymouth-set-default-theme --list' # lista os temas disponíveis.
alias plytheme='sudo /usr/sbin/plymouth-set-default-theme' # altera o tema do Plymouth.
alias plyupdate='sudo update-initramfs -u' # atualiza o initrd para implementar as mudanças.
alias plymouth-details='sudo /usr/sbin/plymouth-set-default-theme details && sudo update-initramfs -u'
#
## Youtube-dl (requer youtube-dl).
alias youtube='youtube-dl -c -t'
#
## VideoDesk (requer xwinwrap).
alias videodesk='xwinwrap -ni -o 0.6 -fs -s -st -sp -b -nf -- mplayer -wid WID '
#
## Compilar.
alias compile='./configure --prefix=/usr --sysconfdir=/etc && make'
#
## Bash Completion.
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
# ~/.bashrc: executed by bash(1) for non-login shells.