141 votos

¿Qué cosas útiles puede uno agregar a su .bashrc?

¿Hay algo sin lo que no puedas vivir y que haga mi vida mucho más fácil? Aquí hay algunos que uso (el espacio de disco y las carpetas son particularmente útiles).

# some more ls aliases
alias ll='ls -alh'
alias la='ls -A'
alias l='ls -CFlh'
alias woo='fortune'
alias lsd="ls -alF | grep /$"

# This is GOLD for finding out what is taking so much space on your drives!
alias diskspace="du -S | sort -n -r |more"

# Command line mplayer movie watching for the win.
alias mp="mplayer -fs"

# Show me the size (sorted) of only the folders in this directory
alias folders="find . -maxdepth 1 -type d -print | xargs du -sk | sort -rn"

# This will keep you sane when you're about to smash the keyboard again.
alias frak="fortune"

# This is where you put your hand rolled scripts (remember to chmod them)
PATH="$HOME/bin:$PATH"

81voto

Dr.Dredel Puntos 684

Tengo un pequeño script que extrae archivos, lo encontré en algún lugar de la red:

extract () {
   if [ -f $1 ] ; then
       case $1 in
           *.tar.bz2)   tar xvjf $1    ;;
           *.tar.gz)    tar xvzf $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        ;;
           *)           echo "don't know how to extract '$1'..." ;;
       esac
   else
       echo "'$1' is not a valid file!"
   fi
 }

39voto

Eddie Puntos 6779

Ya que uso tantas máquinas diferentes, mi .bashrc siempre establece el símbolo del sistema para incluir, entre otras cosas, el nombre del servidor en el que estoy conectado. De esta manera, cuando estoy a tres niveles de profundidad en telnet/ssh, no escribo lo que no debo en la ventana equivocada. Realmente apesta rm -rf . en la ventana equivocada! (Nota: En casa, el telnet está desactivado en todas las máquinas. En el trabajo, ssh no siempre está habilitado y no tengo acceso de root a muchas máquinas).

Tengo un script ~/bin/setprompt que es ejecutado por mi .bashrc que contiene:

RESET="\[\017\]"
NORMAL="\[\033[0m\]"
RED="\[\033[31;1m\]"
YELLOW="\[\033[33;1m\]"
WHITE="\[\033[37;1m\]"
SMILEY="${WHITE}:)${NORMAL}"
FROWNY="${RED}:(${NORMAL}"
SELECT="if [ \$? = 0 ]; then echo \"${SMILEY}\"; else echo \"${FROWNY}\"; fi"

# Throw it all together 
PS1="${RESET}${YELLOW}\h${NORMAL} \`${SELECT}\` ${YELLOW}>${NORMAL} "

Esto script establece el aviso al nombre del host seguido de :) si el último comando tuvo éxito y :( si el último comando falló.

25voto

Paul Owens Puntos 1617

El color para las páginas de manual en menos hace que las páginas de manual sean un poco más fáciles de leer:

export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;31m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;44;33m'
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;32m'

También se pueden obtener páginas de color instalando la mayoría y usándola como variable de envolvente de MANPAGER. Si quieres usar este paginador no solo para el hombre, usa la variable PAGER, así:

export PAGER="/usr/bin/most -s"

24voto

Paul de Vrieze Puntos 111

No más cd / / / pero arriba 4

Sube muchos dirs como el número pasado como argumento, si ninguno sube por 1 por defecto (encontrado en un enlace en un comentario en stackoverflow.com y modificado un poco)

up(){
  local d=""
  limit=$1
  for ((i=1 ; i <= limit ; i++))
    do
      d=$d/..
    done
  d=$(echo $d | sed 's/^\///')
  if [ -z "$d" ]; then
    d=..
  fi
  cd $d
}

19voto

81bronco Puntos 7071

Trato con muchas máquinas diferentes, así que uno de mis favoritos es el alias de cada máquina a la que tengo que hacer SSH con frecuencia:

alias claudius="ssh dinomite@claudius"

También es útil para establecer una buena .ssh/config y llaves ssh para facilitar aún más el salto entre las máquinas.

Otro de mis alias favoritos es para subir en los directorios:

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

Y algunos para las variaciones comúnmente utilizadas de ls (y errores tipográficos):

alias ll="ls -l"
alias lo="ls -o"
alias lh="ls -lh"
alias la="ls -la"
alias sl="ls"
alias l="ls"
alias s="ls"

La historia puede ser muy útil, pero por defecto, en la mayoría de las distribuciones, la historia se borra con cada salida de Shell, y no tiene mucho valor para empezar. Me gusta tener 10.000 líneas de historia:

export HISTFILESIZE=20000
export HISTSIZE=10000
shopt -s histappend
# Combine multiline commands into one in history
shopt -s cmdhist
# Ignore duplicates, ls without options and builtin commands
HISTCONTROL=ignoredups
export HISTIGNORE="&:ls:[bf]g:exit"

De esa manera, si sé que he hecho algo antes pero no puedo recordar los detalles, una rápida history | grep foo ayudará a refrescar mi memoria.

A menudo me encontré a mí mismo canalizando la salida a través de awk para obtener una cierta columna de la salida, como en df -h | awk '{print $2}' para encontrar el tamaño de cada uno de mis discos. Para facilitar esto, he creado una función fawk en mi .bashrc:

function fawk {
    first="awk '{print "
    last="}'"
    cmd="${first}\$${1}${last}"
    eval $cmd
}

Ahora puedo correr df -h|fawk 2 lo que ahorra un poco de trabajo de mecanografía.

Si necesita especificar un delimitador ( por ejemplo. , awk -F: para /etc/passwd ), esta función obviamente no puede manejar eso. La versión ligeramente revisada en esta esencia puede manejar la arbitrariedad awk argumentos antes del número de campo (pero aún así requiere la entrada de stdin).

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: