it-swarm-pt.tech

Que coisas úteis podemos adicionar ao .bashrc?

Existe algo que você não pode viver sem e tornará minha vida SO muito mais fácil? Aqui estão algumas que eu uso ('diskspace' e 'folders' são particularmente úteis)).

# 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

Eu tenho um pequeno script que extrai arquivos, achei em algum lugar na rede:

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

Desde que eu uso tantas máquinas diferentes, meu .bashrc sempre define o prompt de comando para incluir, entre outras coisas, o nome do servidor no qual estou conectado no momento. Dessa forma, quando eu tenho três níveis de profundidade no telnet/ssh, não digito a coisa errada na janela errada. É realmente péssimo para rm -rf . na janela errada! (Nota: Em casa, o telnet está desativado em todas as máquinas. No trabalho, o ssh nem sempre está ativado e não tenho acesso root a muitas máquinas.)

Eu tenho um script ~/bin/setprompt que é executado pelo meu .bashrc, que contém:

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 define o prompt como o nome do host seguido por :) se o último comando foi bem-sucedido e :( se o último comando falhar.

39
Eddie

A cor das páginas de manual em menos facilita a leitura das 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'

Páginas de manual coloridas também podem ser obtidas instalando a maioria e usando-a como variável de ambiente MANPAGER. Se você deseja usar este pager não apenas para o homem, use a variável PAGER, assim:

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

Não há mais cd ../../../ .. mas até 4

Aumenta muitos diretórios conforme o número passado como argumento, se nenhum aumenta 1 por padrão (encontrado em um link em um comentário no stackoverflow.com e modificado um pouco)

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

Eu lido com muitas máquinas diferentes, então uma das minhas favoritas são aliases para cada máquina que eu preciso fazer SSH frequentemente para:

alias claudius="ssh [email protected]"

Também é útil configurar um bom .ssh/config e teclas ssh para facilitar ainda mais o salto entre as máquinas.

Outro dos meus apelidos favoritos é para mover diretórios:

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

E alguns para variações comumente usadas de ls (e erros de digitação):

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"

O histórico pode ser muito útil, mas, por padrão, na maioria das distribuições, seu histórico é deslumbrado com a saída de cada Shell, e não demora muito para começar. Eu gosto de ter 10.000 linhas de história:

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"

Dessa forma, se eu sei que já fiz algo antes, mas não consigo me lembrar dos detalhes, uma rápida history | grep foo ajudará a melhorar minha memória.

Muitas vezes me vi canalizando a saída através de awk para obter uma determinada coluna da saída, como em df -h | awk '{print $2}' para encontrar o tamanho de cada um dos meus discos. Para facilitar, criei uma função fawk no meu .bashrc:

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

Agora posso executar df -h|fawk 2 que economiza bastante digitação.

Se você precisar especificar um delimitador (, por exemplo, , awk -F: para /etc/passwd), essa função obviamente não pode lidar com isso. A versão ligeiramente revisada em este Gist pode manipular argumentos arbitrários awk antes do número do campo (mas ainda requer a entrada de stdin).

19
Drew Stephens

Bashrc criptografado por GPG

Tenho certeza de que todos temos coisas que gostaríamos de colocar em nosso bashrc que não queremos que sejam facilmente legíveis por sudoers. Minha solução para isso é:

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

Eu tenho um agente GPG que faz isso, então só tenho que digitar a senha da minha chave privada uma vez a cada poucas horas. Você ainda precisa confiar nos usuários do sistema, pois suas variáveis, funções e aliases que você define podem ser extraídos da RAM. No entanto, eu uso isso principalmente para o meu laptop. Se for roubado, não quero que alguém veja facilmente coisas como:

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

este é um recurso incrível para isso:

mostre-nos seu .bashrc

12
devin

Eu costumava configurá-las em todo o lugar, mas depois percebi que era melhor lembrar como fazê-las 'manualmente', porque isso significava que 1) entenderia completamente o que estava acontecendo e 2) teria acesso a esses recursos, mesmo que meu .bashrc personalizado não foi instalado.

A única coisa que eu uso aliases atualmente é reduzir a digitação repetitiva de linhas realmente longas (por exemplo, alias myhost='ssh -T [email protected] screen -dAr')

12
pjz

Os liners e scripts minúsculos por aí poderiam continuar para sempre. Eu recomendo o homem bash e escrever as coisas você mesmo. Algumas boas coisas curtas sobre bash em http://www.commandlinefu.com . Aqui estão algumas coisas.

#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

Uma pequena dica para o Bash se você é um administrador de sistemas e trabalha muito com privilégios de root:

shopt -o noclobber

Isso impedirá que você destrua acidentalmente o conteúdo de um arquivo já existente, se você redirecionar a saída (> nome do arquivo). Você sempre pode forçar a substituição com> | filename.

9
Cyberdrow

Eu tenho o seguinte no meu 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

Em uma máquina local, ele se parece com:

[17:57][user:~]$

mas em um controle remoto (através do ssh) é:

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

Eu tive isso no meu .bashrc por um tempo e achei útil. Se você estiver entrando na caixa, a tela é iniciada automaticamente quando você faz o login, assim quando sua conexão de rede é interrompida ou o que quer que seja, você não perde o que estava fazendo. Deve ser colocado no 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

Eu tenho alguns 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

Quantos aliases para fortune você precisa, afinal?

Eu gosto de criar um alias cdd que me leva a onde quer que eu esteja atualmente trabalhando mais nesse servidor.

PATH redefinição realmente pertence a .bash_profile, não .bashrc.

Em um servidor em que eu uso rotineiramente um grande conjunto de screens, meu .bashrc terá:

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

(Os screens foram configurados com, por exemplo, screen -U -S chaos1.)

5
chaos

Entre outras coisas, defino alguns padrões por menos, evito fechar acidentalmente meu terminal e habilito a navegação direta no histórico:

# 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
5

Adapte todos os logs em/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 ter cores para todos os comandos grep, como grep, egrep e zgrep, tenho o seguinte no meu .bashrc

export GREP_OPTIONS='--color=auto'
4

O alias das 'pastas' é ótimo! Eu o modifiquei um pouco para que os diretórios com espaços não causem erros.

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

Eu ecoaria o comentário do @ pjz sobre saber as coisas manualmente, em vez de configurá-las. Especialmente se você acessar várias máquinas, como eu sempre pareço fazer.

Então, um que eu definitivamente conheço é set -o vi porque conheço os comandos de edição do vi no bash e não conheço os do emacs (além disso, Ctrl + A interfere com screen). Nas minhas próprias caixas, coloquei isso em .bashrc

Também acho que tenho que incluir export EDITOR=vim porque várias distribuições recentes são padronizadas como nano, o que é mais irritante para ser usado por um utilitário que precisa que você edite algo, quando eu esperava o vi. : - /

Eu também altero meu prompt. Descobri há muito tempo que adicionar o último código de erro é útil o suficiente para que eu goste. E eu gosto do nome do caminho completo no prompt. E o número atual screen também. E faz sentido incluir o usuário e o nome do host atuais. Meu prompt é PS1='\[email protected]\h $PWD $WINDOW [$?] \$ '

3
staticsan

Aqui estão as 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

Faça uma verificação do bash para ver se o tamanho da janela mudou (impede que a edição de linhas fique estranha se você redimensionar a janela do terminal)

shopt -s checkwinsize

Este é meu favorito. Faz com que o bash seja acrescente ao histórico em vez de substituindo. Normalmente, quando você inicia o bash, ele carrega o histórico na memória e, quando você o fecha, o grava. Isso significa que, se você carregar duas conchas, use as duas e feche as duas, a última que você fechou substituirá todas as alterações.

Esse trecho faz com que, antes de tudo, apenas acrescente alterações (em vez de sobrescrever com o buffer inteiro) e, em seguida, faça com que, após cada comando, escreva as alterações. Com efeito, você obtém um .bash_history com atualização ao vivo; portanto, se você iniciar um novo terminal, terá todos os comandos do histórico de outras sessões em execução.

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

Aqui estão alguns dos meus 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 a administração do Linux e Unix de Kirk Bauer (ótimo livro!)

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

A nova linha no início é minha, eu gosto de ter uma linha clara entre a saída anterior e o prompt. O resto é:

\ u = nome de usuário

\ h = host

\ w = diretório de trabalho

$? = último código de retorno

2
Cawflands

Eu uso isso cerca de 20 vezes por dia para fazer o cd no último diretório alterado:

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

Esses dois mantêm marcadores permanentes dos diretórios usados ​​com freqüência:

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

Estes são os meus favoritos:

export HISTFILESIZE=1000000000
export HISTSIZE=1000000

Eu gosto de ter um histórico de linha de comando que nunca esquece.

Infelizmente, há algum tempo, lancei um Shell do cron que não lia .bashrc de alguma forma e reduzi tudo para 500 linhas, destruindo ao longo de um ano de história. Então, eu recomendo que eles usem/etc/bashrc.

2
skiphoppy

Este é um dos meus favoritos:

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

Se eu esqueci de me autenticar, isso permite que eu faça isso sem ter que desperdiçar minha digitação fazendo ssh-add depois a sessão ssh.

1
joshk0

Alguns bons

Faça com que o SSH complete automaticamente o nome do host para o qual você ssh (se estiver em sua configuração ou histórico)

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

Algumas configurações úteis de conclusão do 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

Alguns úteis para o 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 % "

E então ele exibe o IP da sua máquina na qual você acabou de fazer login.

1
mrkafk

Eu compilo várias coisas manualmente em $ HOME/local, então tenho este pequeno trecho:

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

Eu também tenho meu cliente IRC no meu servidor rodando na tela, então eu tenho isso (não é uma coisa .bashrc, mas ainda é ú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

Eu uso meu bashrc em várias máquinas, então eu tenho esse pequeno trecho para garantir que o LS seja colorido. Isso irá corrigi-lo em máquinas OSX, talvez até * BSD se você ajustar a linha de nome.

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

Além disso, eu tenho um comando para fazer backup de um arquivo, útil se você estiver prestes a alterar um arquivo de configuração e quiser fazer uma cópia rápida antes da mão.

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

Alguns aliases que eu uso para remover o Edge do CLI Grind diário ...

# 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

Às vezes, tenho que usar um sistema Solaris no trabalho.

No entanto, o sistema é gerenciado centralmente via Puppet, incluindo o arquivo de senha (que inclui a configuração do Shell).

Minhas .bashrc, portanto, lê algo como:

%!/bin/bash
exec /bin/tcsh

:)

0
Alnitak

Para corrigir o tamanho da janela na tela GNU após o redimensionamento:

shopt -s checkwinsize

Para mostrar as permissões em um diretório, atalho ls -ld:

alias lld='ls -ld'

Visualização do histórico:

alias h='history | zgrep'

E o conteúdo do meu script zgrep, que eu não conseguia descobrir como inserir diretamente no pseudônimo:

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

Sou viciado em tela e uso os seguintes atalhos para SSHing em máquinas. Com esse script, digite p hostname No SSH para um host e execute a tela ou o hostname Para fazer o mesmo, mas execute a tela na máquina local.

Primeiro, um script que se conecta a um servidor SSH com o mesmo nome que o script que você está executando. Eu chamo isso de 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]"

Vincule isso a mars no seu caminho e mars se torne um atalho para ssh mars:

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

A variável de ambiente $SCREEN Permite executar automaticamente GNU com a conexão. SCREEN=1 Executa a tela localmente (por exemplo, se a tela não estiver instalada no host) e TELA = 2 executa no próprio host.

Use alguns apelidos para atalho isso:

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

Use um script para criar links simbólicos para todos os seus hosts, com um arquivo ~/.ssh/config Como este:

Host mars
    HostName mars.example.com
    User abackstrom

O script, 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