it-swarm-es.com

¿Qué cosas útiles se pueden agregar a .bashrc?

¿Hay algo sin lo que no pueda vivir y que me haga la vida SO mucho 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"
141
Gareth

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
Gert M

Como 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 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} "

Este script establece la solicitud en el nombre del host seguido de :) si el último comando fue exitoso y :( si el último comando falló.

39
Eddie

El color de 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'

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

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

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

Sube muchos directorios a medida que pasa el número como argumento, si ninguno sube 1 por defecto (se encuentra en un enlace en un comentario en stackoverflow.com y se modifica 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
Alberto Zaccagni

Trato con muchas máquinas diferentes, por lo que uno de mis favoritos es el alias para cada máquina que necesito frecuentemente para SSH para:

alias claudius="ssh [email protected]"

También es útil para configurar un buen .ssh/config y teclas ssh para facilitar aún más el salto 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, cada historial que sale de Shell lo deslumbra 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 encontraba 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, 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 que ahorra un poco de tipeo.

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 este Gist puede manejar argumentos arbitrarios awk antes del número de campo (pero aún requiere la entrada de stdin).

19
Drew Stephens

GPG cifrado bashrc

Estoy seguro de que todos tenemos cosas que nos gustaría poner en nuestro bashrc 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 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 confiar en los usuarios del sistema porque sus variables, funciones y alias que defina podrían extraerse de la RAM. Sin embargo, uso esto principalmente para mi computadora portátil. Si se lo roban, no quiero que alguien vea fácilmente cosas como:

alias MYsql='mysql -uadmin -psecret'
wglatest(){ wget -O https://admin:[email protected]/latest; }
15
Bruno Bronosky

este es un recurso increíble para esto:

muéstranos tu .bashrc

12
devin

Solía ​​configurarlos por todas partes, pero luego me di cuenta de que era mejor recordar cómo hacerlos 'manualmente' porque significaba que 1) entendería completamente lo que estaba sucediendo y 2) tendría acceso a estas capacidades incluso si mi .bashrc personalizado no estaba instalado.

Lo único que uso alias para estos días es reducir el tipeo repetitivo de líneas realmente largas (por ejemplo, alias myhost='ssh -T [email protected] screen -dAr')

12
pjz

Las líneas y los pequeños guiones por ahí podrían continuar para siempre. Recomiendo man bash y escribir cosas tú mismo. Algunas buenas cosas cortas de bash en http://www.commandlinefu.com . Aquí hay algunas cosas.

#use extra globing features. See man bash, search extglob.
shopt -s extglob
#include .files when globbing.
shopt -s dotglob
#When a glob expands to nothing, make it an empty string instead of the literal characters.
shopt -s nullglob
# fix spelling errors for cd, only in interactive Shell
shopt -s cdspell
# vi mode
set -o vi

s() { # do Sudo, or Sudo the last command if no argument given
    if [[ $# == 0 ]]; then
        Sudo $(history -p '!!')
    else
        Sudo "[email protected]"
    fi
}

Prompt_command() {
    p=$PWD  # p is much easier to type in interactive shells
    # a special IFS should be limited to 1 liners or inside scripts.
    # Otherwise it only causes mistakes.
    unset IFS
}
Prompt_COMMAND=Prompt_command


# smart advanced completion, download from
# http://bash-completion.alioth.debian.org/
if [[ -f $HOME/local/bin/bash_completion ]]; then
    . $HOME/local/bin/bash_completion
fi


extract () { # extract files. Ignore files with improper extensions.
    local x
    ee() { # echo and execute
        echo "[email protected]"
        $1 "$2"
    }
    for x in "[email protected]"; do
        [[ -f $x ]] || continue
        case "$x" in
            *.tar.bz2 | *.tbz2 )    ee "tar xvjf" "$x"  ;;
            *.tar.gz | *.tgz ) ee "tar xvzf" "$x"   ;;
            *.bz2 )             ee "bunzip2" "$x"   ;;
            *.rar )             ee "unrar x" "$x"   ;;
            *.gz )              ee "gunzip" "$x"    ;;
            *.tar )             ee "tar xvf" "$x"   ;;
            *.Zip )             ee "unzip" "$x"     ;;
            *.Z )               ee "uncompress" "$x" ;;
            *.7z )              ee "7z x" "$x"      ;;
        esac
    done
}
9
Ian Kelling

Un pequeño consejo para Bash si eres un administrador de sistemas y trabajas mucho con privilegios de root:

shopt -o noclobber

Esto evitará que destruyas accidentalmente el contenido de un archivo ya existente si redirige la salida (> nombre de archivo). Siempre puede forzar la sobrescritura con> | nombre de archivo.

9
Cyberdrow

Tengo lo siguiente en mi bashrc

function __setprompt {
  local BLUE="\[\033[0;34m\]"
  local NO_COLOUR="\[\033[0m\]"
  local SSH_IP=`echo $SSH_CLIENT | awk '{ print $1 }'`
  local SSH2_IP=`echo $SSH2_CLIENT | awk '{ print $1 }'`
  if [ $SSH2_IP ] || [ $SSH_IP ] ; then
    local SSH_FLAG="@\h"
  fi
  PS1="$BLUE[\$(date +%H:%M)][\u$SSH_FLAG:\w]\\$ $NO_COLOUR"
  PS2="$BLUE>$NO_COLOUR "
  PS4='$BLUE+$NO_COLOUR '
}
__setprompt

En una máquina local se ve así:

[17:57][user:~]$

pero en un control remoto (a través de ssh) es:

[17:57][[email protected]:~]$
8
Anders Rasmussen

He tenido esto en mi .bashrc por un tiempo y me ha resultado útil. Si está entrando en la casilla, la pantalla de inicio se inicia automáticamente cuando inicia sesión, de esa manera cuando su conexión de red se interrumpe o lo que sea, no pierde lo que estaba haciendo. Debe colocarse al final.

if [ "$PS1" != "" -a "${STARTED_SCREEN:-x}" = x  -a "${SSH_TTY:-x}" != x ]
then
STARTED_SCREEN=1 ; export STARTED_SCREEN
[ -d $HOME/lib/screen-logs ] || mkdir -p $HOME/lib/screen-logs

sleep 1
screen -U -RR && exit 0

echo "Screen failed! continuing with normal bash startup"
fi
6
baudtack

Tengo algunos bits:

# stop the pc speaker ever annoying me :)
setterm -bfreq 0

# don't put duplicate lines in the history. See bash(1) for more options
HISTCONTROL=ignoredups
# ... and ignore same sucessive entries.
HISTCONTROL=ignoreboth

# Expand the history size
HISTFILESIZE=10000 
HISTSIZE=100

# commands with leading space do not get added to history
HISTCONTROL=ignorespace

# am I on the internet?
alias p4='ping 4.2.2.2 -c 4'

# pwsafe
alias pw='pwsafe -p'

# ls aliases
alias ll='ls -l'
alias la='ls -A'
alias l='ls -CF'
alias lt='ls -laptr' #oldest first sort
alias labc='ls -lap' #alphabetical sort

# cd aliases
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'

# cd into the old directory
alias bd='cd "$OLDPWD"'

# install a package and automatically respond yes to confirmation Prompt
alias ins="Sudo aptitude install"

# remove a package and its configuration files
alias remp="Sudo aptitude purge"

# search for a package - apt-cache and aptitude search in different ways
# so have both
alias searchc="apt-cache search"
alias search="aptitude search"
alias show="aptitude show"
5
Hamish Downer

¿Cuántos alias de fortune necesitas, de todos modos?

Me gusta crear un alias cdd que me lleve a donde sea que esté trabajando en ese servidor.

PATH la redefinición realmente pertenece a .bash_profile, no .bashrc.

En un servidor donde uso habitualmente un gran conjunto de screens, mi .bashrc tendrá:

alias s1="screen -dr chaos1"
alias s2="screen -dr chaos2"
alias s3="screen -dr chaos3"
# ... and so on

(Los screens se configuraron con, por ejemplo, screen -U -S chaos1.)

5
chaos

Entre otras cosas, configuro algunos valores predeterminados por menos, evito cerrar accidentalmente mi terminal y habilito la navegación hacia adelante a través del historial:

# ignore case, long Prompt, exit if it fits on one screen, allow colors for ls and grep colors
export LESS="-iMFXR"

# must press ctrl-D 2+1 times to exit Shell
export IGNOREEOF="2"

# allow ctrl-S for history navigation (with ctrl-R)
stty -ixon

Cola todos los registros en/var/log

alias logs="find /var/log -type f -exec file {} \; | grep 'text' | cut -d' ' -f1 | sed -e's/:$//g' | grep -v '[0-9]$' | xargs tail -f"
5
hoberion

Para tener colores para todos los comandos grep como grep, egrep y zgrep, tengo lo siguiente en mi .bashrc

export GREP_OPTIONS='--color=auto'

¡El alias de 'carpetas' es genial! Lo modifiqué un poco para que los directorios con espacios no causen errores.

alias folders='find . -maxdepth 1 -type d -print0 | xargs -0 du -sk | sort -rn'
4
phoenix8

Me gustaría repetir el comentario de @ pjz sobre saber las cosas manualmente en lugar de configurarlas. Especialmente si accedes a numerosas máquinas, como siempre parece que hago.

Entonces uno que definitivamente sé es set -o vi porque conozco los comandos de edición de vi en bash y no los de emacs (además, Ctrl + A interfiere con screen). En mis propias cajas, puse eso en .bashrc

También encuentro que tengo que incluir export EDITOR=vim porque una serie de distribuciones recientes tienen el valor predeterminado de nano, lo cual es muy molesto para una utilidad que necesita que edites algo, cuando esperaba vi. : - /

También modifico mi Aviso. Hace mucho, mucho tiempo descubrí que agregar el último código de error es lo suficientemente útil como para que me guste. Y me gusta la ruta completa en el mensaje. Y el número actual screen también. Y tiene sentido incluir el usuario actual y el nombre de host. Mi aviso es PS1='\[email protected]\h $PWD $WINDOW [$?] \$ '

3
staticsan

Aquí hay minas:

export HISTCONTROL=ignoredups
export HISTIGNORE="&:ls:bg:fg"

# set variable identifying the chroot you work in (used in the Prompt below)
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

# shows you if you are in a chroot or in a git repository
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;30m\]\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]$(__git_ps1)\$ '


if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi

# two handy single-letter aliases

alias u='ls -hltr'
alias e='du * -cs | sort -nr | head'
alias g='grep -C5 --color=auto'

# creates a temp dir and cds into it
alias td='pushd $(mktemp -d)'

# find <dir> <file name regexp> <file contents regexp>
function fing { find "$1" -name "$2" -exec grep -H "$3" "{}" \; }

# shows "git diff" across any project in any subdirectory
alias git-differ='for g in $(find . -name ".git"); do g=${g%%.git};printf "$g\t\t\t";pu $g >/dev/null && git diff |wc -l; p >/dev/null; done'

# does git house keeping across any project in any subdirectory
alias git-housekeep='for g in $(find . -name ".git"); do g=${g%%.git};echo $g;pu $g && git repack && git gc --auto && p;done'

# Debian update
alias apg='aptitude update && aptitude dist-upgrade && aptitude clean'

# Quick way to serve files in HTTP from the local dir
alias webs='python -m SimpleHTTPServer'
3
Federico
3
raspi

Haga que Bash compruebe si el tamaño de la ventana ha cambiado (evita que la edición de línea se vuelva extraña si cambia el tamaño de la ventana de su terminal)

shopt -s checkwinsize

Esta es mi favorita. Causa bash a agregar al historial en lugar de sobrescribir it. Por lo general, cuando inicia bash, carga el historial en la memoria y, cuando lo cierra, lo escribe. Esto significa que si carga dos shells, use ambos, luego cierre ambos, el último que cerró sobrescribe todos los cambios.

Este fragmento hace que, en primer lugar, solo agregue cambios (en lugar de sobrescribir con todo el búfer) y luego haga que, después de cada comando, escriba los cambios. En efecto, obtienes una actualización en vivo .bash_history, por lo que si comienzas un nuevo terminal, tienes todos los comandos del historial de tus otras sesiones en ejecución.

shopt -s histappend
Prompt_COMMAND='history -a'
3
Dan Udey

Aquí están algunos de mis favoritos:

alias ls='ls -F --color=auto'
alias l='ls'
alias ll='ls -ahl'
alias ..='cd ..'
alias ...='cd ../..'
alias mv='mv -i'

mkcd() {
        if [ $# != 1 ]; then
                echo "Usage: mkcd <dir>"
        else
                mkdir -p $1 && cd $1
        fi
}

# Git related
alias gs='git status'
alias gc='git commit'
alias ga='git add'
alias Gd='git diff'
alias gb='git branch'
alias gl='git log'
alias gsb='git show-branch'
alias gco='git checkout'
alias gg='git grep'
alias gk='gitk --all'
alias gr='git rebase'
alias gri='git rebase --interactive'
alias gcp='git cherry-pick'
alias grm='git rm'
2
Tom

From Automatizando Linux y Unix Administration por Kirk Bauer (¡gran libro!)

PS1='\n[\[email protected]\h]: \w\n$?> '

La nueva línea al principio es mía, me gusta tener una línea clara entre la salida anterior y la solicitud. El resto es:

\ u = nombre de usuario

\ h = Host

\ w = directorio de trabajo

PS = último código de retorno

2
Cawflands

Lo uso aproximadamente 20 veces al día para crear un CD en el último directorio modificado:

cl()
{
        last_dir="$(ls -Frt | grep '/$' | tail -n1)"
        if [ -d "$last_dir" ]; then
                cd "$last_dir"
        fi
}

Estos dos mantienen marcadores permanentes de directorios de uso frecuente:

rd(){
    pwd > "$HOME/.lastdir_$1"
}

crd(){
        lastdir="$(cat "$HOME/.lastdir_$1")">/dev/null 2>&1
        if [ -d "$lastdir" ]; then
                cd "$lastdir"
        else
                echo "no existing directory stored in buffer $1">&2
        fi
}
2
gz34

Estos son mis favoritos:

export HISTFILESIZE=1000000000
export HISTSIZE=1000000

Me gusta tener un historial de línea de comandos que nunca olvida.

Desafortunadamente, hace un tiempo lancé un Shell desde cron que no leía .bashrc de alguna manera, y reduje todo a 500 líneas, destruyendo la historia de un año. Así que recomiendo que vayan en/etc/bashrc.

2
skiphoppy

Este es uno de mis favoritos:

alias ssh='if [ "$(ssh-add -l)" = "The agent has no identities." ]; then ssh-add; fi; /usr/bin/ssh "[email protected]"'

Si me olvidé de autenticar, me permite hacerlo sin tener que desperdiciar mi escritura haciendo ssh-add después la sesión ssh.

1
joshk0

Un par de buenos

Haga que SSH complete automáticamente el nombre de host al que ssh (si está en su configuración o historial)

complete -o default -o nospace -W "$(/usr/bin/env Ruby -ne 'puts $_.split(/[,\s]+/)[1..-1].reject{|Host| Host.match(/\*|\?/)} if $_.match(/^\s*Host\s+/);' < $HOME/.ssh/config)" scp sftp ssh

Algunas configuraciones útiles para completar bash

bind "set completion-ignore-case on" # note: bind used instead of sticking these in .inputrc
bind "set bell-style none" # no bell
bind "set show-all-if-ambiguous On" # show list automatically, without double tab

Algunos útiles para Mac OS X

alias nospotlight='Sudo mdutil -a -i off'
alias cleardnscache='Sudo killall -HUP mDNSResponder'
alias ldd='otool -L'
alias seq='jot - '
alias eject='drutil eject'
1
lynxman
# vi ~/.bashrc # red/green terminal colors regarding exit code
export Prompt_COMMAND='PS1="`
if [[ \$? = "0" ]];
then echo "\\[\\033[0;32m\\]";
else echo "\\[\\033[0;31m\\]";
fi`[\[email protected]\h \w]\[\e[m\] "'
export PS1
1
LanceBaynes
IP_ADDRESS_BASH=`ip addr | grep -w inet | gawk '{if (NR==2) {$0=$2; gsub(/\//," "); print $1;}}'`
PS1="\h $IP_ADDRESS_BASH \w % "

Y luego muestra la IP de su máquina en la que acaba de iniciar sesión.

1
mrkafk

Compilo varias cosas manualmente en $ HOME/local, así que tengo este pequeño fragmento:

for prog in $HOME/local/*
do
    if [ -d "$prog/bin" ]; then
        export PATH=$prog/bin:$PATH
    fi
    if [ -d "$prog/include" ]; then
        export C_INCLUDE_PATH=$prog/include:$C_INCLUDE_PATH
    fi
    if [ -d "$prog/lib" ]; then
        export LD_LIBRARY_PATH=$prog/lib:$LD_LIBRARY_PATH
        export LIBRARY_PATH=$prog/lib:$LIBRARY_PATH
    fi
    if [ -d "$prog/man" ]; then
        export MANPATH=$prog/man:$MANPATH
    fi
    if [ -d "$prog/share/man" ]; then
        export MANPATH=$prog/share/man:$MANPATH
    fi
done

También tengo mi IRC cliente en mi servidor ejecutándose en la pantalla, así que tengo esto (no es una cosa .bashrc, pero sigue siendo útil)

#!/usr/bin/env bash

RUNNING=`screen -ls | grep irc`
if [ "" = "$RUNNING" ]; then
   screen -S irc irssi
else
   screen -dr irc
fi
1
Daniel Huckstep

Utilizo mi bashrc en numerosas máquinas, así que tengo este pequeño fragmento para asegurarme de que LS esté coloreado. Esto lo solucionará en máquinas OSX, tal vez incluso * BSD si ajusta la línea uname.

if [ "$TERM" != "dumb" ]; then
    if [ `uname` == "Darwin" ]; then
       alias ls='ls -G'
    else
       eval "`dircolors -b`"
       alias ls='ls --color=auto'
    fi
fi

Además, tengo un comando para hacer una copia de seguridad de un archivo, útil si está a punto de cambiar un archivo de configuración y desea hacer una copia rápida de antemano.

bu () { cp $1 ~/.backup/`basename $1`-`date +%Y%m%d%H%M`.backup ; }
1
Andrew Williams
mkdircd () { mkdir -p "[email protected]" && eval cd "\"\$$#\""; }

ecb () { emacsclient -n -a emacs [email protected] & } # open in emacsclient in the background
ecp () { emacsclient -n $(which [email protected]) & } # open a given file found in a $PATH in emacsclient
ecr () { Sudo_EDITOR="emacsclient -a emacs" sudoedit [email protected]; } # start emacsclient or emacs and open the file as root

eCf () { emacs --batch --eval "(byte-compile-file \"[email protected]\")"; } # byte-compile file
eCa () { emacs --batch --eval "(batch-byte-compile-if-not-done)" *.el; } # byte-compile all el files in the current directory and it's children
1
Adobe

. $ HOME/bin/git-Prompt/ git-Prompt.sh

0
brunoqc

Algunos alias que uso para quitar el borde de la rutina diaria de CLI ...

# I find myself doing this a lot
alias hg='history | grep '

# Likewise this, plus I'm always mistyping it...
alias findy='find . -name'

# sometimes you're just not sure you want to delete something...
alias trash='mv -t ~/.local/share/Trash/files --backup=t'

alias vb='vim ~/.bashrc'

# I find typing 'cd ..' less than optimal
alias up='cd ..'
alias 2up='cd ../../'
alias 3up='cd ../../../'
alias 4up='cd ../../../../'

# re-map caps lock key to be Ctrl
# (works on Linux, at least)
xmodmap -e "remove lock = Caps_Lock"
xmodmap -e "add control = Caps_Lock"

# helpful history settings:
export HISTCONTROL=ignoredups
export HISTCONTROL=ignoreboth
export HISTIGNORE=ls:ll:la:l:cd:pwd:exit:mc:su:df:clear:cls
0
yalestar

A veces tengo que usar un sistema Solaris en el trabajo.

Sin embargo, el sistema se administra centralmente a través de Puppet, incluido el archivo de contraseña (que incluye la configuración de Shell).

Mi .bashrc por lo tanto lee algo como:

%!/bin/bash
exec /bin/tcsh

:)

0
Alnitak

Para arreglar el tamaño de la ventana en GNU pantalla después de cambiar el tamaño:

shopt -s checkwinsize

Para mostrar los permisos en un directorio, acceso directo ls -ld:

alias lld='ls -ld'

Visualización de historial:

alias h='history | zgrep'

Y el contenido de mi script zgrep, que no pude descubrir cómo meter directamente en el alias:

#!/bin/sh
grep "${*-.}"
0
Annika Backstrom

Soy adicto a la pantalla, y uso los siguientes accesos directos para SSHing a las máquinas. Con este script, escribo p hostname a SSH a un Host y ejecutar pantalla, o o hostname para hacer lo mismo pero ejecutar la pantalla en la máquina local.

Primero, un script que se conecta a un servidor SSH con el mismo nombre que el script que está ejecutando. Yo llamo a esto simple_ssh:

#!/bin/sh
BASENAME=$(basename $0)

if [ "$SCREEN" = "1" ]; then
    export SCREEN=0
    exec screen -RD scr$BASENAME -s $0
Elif [ "$SCREEN" = "2" ]; then
    exec ssh $BASENAME "[email protected]" -t 'screen -RD'
fi

exec ssh $BASENAME "[email protected]"

Enlace simbólico a mars en su ruta y mars se convierte en un acceso directo para ssh mars:

[email protected]:bin$ ln -s simple_ssh mars
[email protected]:bin$ mars
[email protected]:~$

Los $SCREEN variable de entorno le permite ejecutar automáticamente GNU pantalla con la conexión. SCREEN=1 ejecuta la pantalla localmente (por ejemplo, si la pantalla no está instalada en el Host) y SCREEN = 2 la ejecuta en el Host.

Use un par de alias para atajar esto:

alias o='SCREEN=1 exec'
alias p='SCREEN=2 exec'

Use un script para crear enlaces simbólicos para todos sus hosts con un ~/.ssh/config archivo como este:

Host mars
    HostName mars.example.com
    User abackstrom

La secuencia de comandos, sshconfig2simplessh:

#!/bin/sh

BASENAME=$(basename "$0")
USAGE="Usage: $BASENAME /path/to/bin"

if [ -z "$1" ] ; then
    echo $USAGE
    exit 0
fi

if [ ! -d "$1" ] ; then
    echo "$1 is not a directory" >&2
    exit 1
fi

cd "$1"

HOSTS=$(grep '^Host ' < ~/.ssh/config | cut -d' ' -f2)

for Host in $HOSTS ; do
    if [ ! -e "$Host" ]; then
        echo ln -s simple_ssh "$Host"
        ln -s simple_ssh "$Host"
    fi
done
0
Annika Backstrom

Fedora

alias install=Sudo yum install

Debian

alias install=Sudo apt-get update && Sudo apt-get install
0
egorgry