Pregunta ¿Qué cosas útiles se pueden agregar a tu .bashrc? [cerrado]


¿Hay algo sin lo que no puedas vivir y hará que mi vida sea MÁS fácil? Aquí hay algunos que uso ("espacio en disco" y "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"

142


origen


Esto debería ser wiki de la comunidad. - Toro
Se convirtió en wiki de la comunidad. Disfrutar. - Gareth
canalizado a más? Apuesto a que serías más feliz con menos o menos -F - derobert
Excepto que existe esa "ordenación" antes que más, ya que la ordenación necesita la entrada completa, la menor -F simplemente te dejaría ver la clasificación más rápido, y apuesto a que es bastante rápido. - GreenKiwi
En caso de que alguien esté interesado, hay un servicio que le permite navegar, crear una lista y obtener sus alias: alias.sh - Sam152


Respuestas:


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
 }

81



Bonito. Una vez más, sin embargo, está ese argumento IDE / Vim con respecto a conocer los comandos de la memoria. Fantástico poco de guión sin embargo. Definitivamente va en el .bashrc Cheers! - Gareth
Hay un comando de linux agradable y simple llamado "unp", el Desempaquetador que hace esto y más. - Sander Marechal
El comando tiene una característica que falta. No se puede abrir el paquete 7z en boost.org/doc/libs/1_39_0/more/getting_started/… correctamente. ¿Sabes cómo resolver el problema? - Léo Léopold Hertz 준영
Las versiones más recientes de tar detectan automáticamente el tipo de archivo, por lo que pueden extraer todos los formatos compatibles solo con 'tar xvf'. - Prof. Moriarty
@Sander dtrx tampoco es malo en eso. Se asegura de que el archivo extraiga a su propio subdirectorio. - Tobu


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 actualmente. De esta manera, cuando tengo tres niveles de profundidad en telnet / ssh, no escribo lo incorrecto en la ventana incorrecta. Realmente apesta a rm -rf . en la ventana equivocada (Nota: en casa, telnet está deshabilitado 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 guion ~/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} "

Esta secuencia de comandos establece el aviso al nombre del host seguido de :) si el último comando fue exitoso y :( si el último comando falló


39



El $? El cheque es una idea bastante buena, me gusta. - derobert
También muestro el estado en mi indicador, pero mantengo el valor numérico y lo coloreamos en rojo si no es cero, de lo contrario, verde. - pgs
Interesante.... - imapollo


El color de las páginas de manual en menos facilita la lectura de las páginas de manual:

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'

Las páginas de manual en color también se pueden obtener instalando la mayoría y usándolas como variable env de MANPAGER. Si desea usar este paginador no solo para el hombre, use la variable PAGER, como esto:

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

25





No más cd ../../../ .. pero hasta 4

Sube muchos dirs como el número pasado como argumento, si ninguno aumenta en 1 de forma predeterminada (se encuentra en un enlace en un comentario en stackoverflow.com y se modificó 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
}

24



Esta versión de up () parece innecesariamente compleja. Yo uso esta versión: arriba () {cd $ (eval printf '../'%.0s {1 .. $ 1}) && pwd; }. Puede eliminar la llamada a 'pwd' si lo desea, obviamente. - Matthew G
Yo uso algo como esto: # Alias ​​de navegación de directorio alias ..='cd ..' alias ...='cd ../..' alias ....='cd ../../..' alias .....='cd ../../../..' - Matt Kenefick


Trato con muchas máquinas diferentes, así que uno de mis favoritos son los alias para cada máquina que necesito SSH con frecuencia para:

alias claudius="ssh dinomite@claudius"

También es útil para configurar un buen .ssh/config y teclas ssh Para hacer aún más fácil saltar entre máquinas.

Otro de mis alias favoritos es para subir directorios:

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

Y algunos para variaciones de uso común 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"

El historial puede ser muy útil, pero de forma predeterminada en la mayoría de las distribuciones, su historial se ve afectado por cada shell que sale, y para empezar no tiene mucho. 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, un rápido history | grep foo ayudará a refrescar mi memoria.

A menudo me encontré canalizando la salida a través de awk para obtener una determinada columna de la salida, como en df -h | awk '{print $2}' Para encontrar el tamaño de cada uno de mis discos. Para hacer esto más fácil, creé 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 escritura.

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


19



También uso el alias ssh y las teclas ssh ... hace que todo sea tan fácil - devin
+1 para los consejos de control de historial. - Rene Saarsoo
puede poner alias de nombre de host en .ssh / config con el mismo efecto. En este caso, agregue una entrada 'Host cloudius' con 'username dinomite' - Sirex


GPD cifrado bashrc

Estoy seguro de que todos tenemos cosas que nos gustaría poner en nuestra base que no queremos que los sudoers puedan leer fácilmente. Mi solución a esto es:

if [ -f ~/.bash_private.gpg ]; then
   eval "$(gpg --decrypt ~/.bash_private.gpg 2>/dev/null)"
fi

Tengo un agente de GPG que lo hace, así que solo tengo que ingresar la contraseña de mi clave privada una vez cada pocas horas. Aún debe tener cierta confianza en los usuarios del sistema porque su variable, funciones y alias que defina podrían extraerse de la RAM. Sin embargo, lo uso principalmente para mi portátil. Si me lo roban, no quiero que alguien vea fácilmente cosas como:

alias MYsql='mysql -uadmin -psecret'
wglatest(){ wget -O https://admin:secret@server.com/latest; }

15



¿También encriptas tu historia en ese caso? ¿Por qué no cifrar su $ casa - Rqomey
@Rqomey, el punto es que no tengo que cifrar mi historial ya que mis contraseñas no aparecen en mi .bash_history porque están ocultas por alias o funciones. En ella ves cosas como MYsql < garbagecollect.sql en lugar de mysql -uadmin -psecret < garbagecollect.sql - Bruno Bronosky


Este es un recurso increíble para esto:

muéstranos tu .bashrc


12