web-dev-qa-db-fra.com

Quelles choses utiles peut-on ajouter à son .bashrc?

Y a-t-il quelque chose dont vous ne pouvez pas vous passer et qui me facilitera la vie SO beaucoup plus facile? En voici quelques-unes que j'utilise (les "espaces disque" et les "dossiers" sont particulièrement pratiques).

# 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

J'ai un petit script qui extrait des archives, je l'ai trouvé quelque part sur le net:

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

Puisque j'utilise tant de machines différentes, mon .bashrc définit toujours l'invite de commande pour inclure, entre autres, le nom du serveur auquel je suis actuellement connecté. De cette façon, lorsque j'ai trois niveaux de profondeur dans telnet/ssh, je ne tape pas la mauvaise chose dans la mauvaise fenêtre. Ça craint vraiment de rm -rf . dans la mauvaise fenêtre! (Remarque: à la maison, telnet est désactivé sur toutes les machines. Au travail, ssh n'est pas toujours activé et je n'ai pas accès root à de très nombreuses machines.)

J'ai un script ~/bin/setprompt qui est exécuté par mon .bashrc, qui contient:

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

Ce script définit l'invite sur le nom d'hôte suivi de :) si la dernière commande a réussi et :( si la dernière commande a échoué.

39
Eddie

La couleur des pages de manuel en moins facilite la lecture des pages de manuel:

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'

Les pages de manuel colorées peuvent également être obtenues en installant la plupart et en l'utilisant comme variable env MANPAGER. Si vous souhaitez utiliser ce pager non seulement pour l'homme, utilisez la variable PAGER, comme ceci:

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

Plus de cd ../../../ .. mais en hausse 4

Monte de nombreux dirs lorsque le nombre est passé en argument, si aucun ne monte de 1 par défaut (trouvé dans un lien dans un commentaire dans stackoverflow.com et modifié un peu)

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

Je traite avec beaucoup de machines différentes, donc l'un de mes favoris est les alias pour chaque machine que je dois fréquemment SSH pour:

alias claudius="ssh dinomite@claudius"

Il est également utile de configurer un bon .ssh/config et touches ssh pour rendre le saut parmi les machines encore plus facile.

Un autre de mes alias préférés est de remonter les répertoires:

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

Et certains pour les variations couramment utilisées de ls (et fautes de frappe):

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"

L'historique peut être très utile, mais par défaut sur la plupart des distributions, votre historique est effacé par chaque shell sortant, et il ne contient pas grand-chose au départ. J'aime avoir 10 000 lignes d'histoire:

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 cette façon, si je sais que j'ai déjà fait quelque chose mais que je ne me souviens pas des détails, un rapide history | grep foo aidera à rafraîchir ma mémoire.

Je me suis souvent retrouvé à diriger la sortie via awk afin d'obtenir une certaine colonne de la sortie, comme dans df -h | awk '{print $2}' pour trouver la taille de chacun de mes disques. Pour faciliter cela, j'ai créé une fonction fawk dans mon .bashrc:

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

Je peux maintenant exécuter df -h|fawk 2 ce qui économise un peu de frappe.

Si vous devez spécifier un délimiteur ( par exemple , awk -F: pour /etc/passwd), cette fonction ne peut évidemment pas gérer cela. La version légèrement révisée dans cet Gist peut gérer des arguments arbitraires awk avant le numéro de champ (mais nécessite toujours une entrée de stdin).

19
Drew Stephens

Bashrc crypté GPG

Je suis sûr que nous avons tous des choses que nous aimerions mettre dans notre bashrc que nous ne voulons pas facilement lisibles par les sudoers. Ma solution à cela est:

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

J'ai un agent GPG qui fait en sorte que je n'ai qu'à entrer le mot de passe de ma clé privée toutes les quelques heures. Vous devez toujours avoir une certaine confiance dans les utilisateurs du système, car vos variables, fonctions et alias que vous définissez pourraient être extraits de la RAM. Cependant, je l'utilise principalement pour mon ordinateur portable. S'il est volé, je ne veux pas que quelqu'un voie facilement des choses comme:

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

c'est une ressource géniale pour cela:

montrez-nous votre .bashrc

12
devin

J'avais l'habitude de les configurer partout, mais je me suis ensuite rendu compte qu'il valait mieux se rappeler comment les faire `` manuellement '' car cela signifiait que je 1) comprendrais parfaitement ce qui se passait et 2) aurais accès à ces capacités même si mon .bashrc personnalisé n'a pas été installé.

La seule chose que j'utilise des alias ces jours-ci est de réduire la saisie répétitive de très longues lignes (par exemple. alias myhost='ssh -T [email protected] screen -dAr')

12
pjz

Les doublures et les minuscules scripts pourraient durer éternellement. Je recommande l'homme bash et l'écriture des choses vous-même. Quelques bons trucs bash bas à http://www.commandlinefu.com . Voici quelques choses.

#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 "$@"
    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 "$@"
        $1 "$2"
    }
    for x in "$@"; 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 petit conseil pour Bash si vous êtes un administrateur système et travaillez beaucoup avec les privilèges root:

shopt -o noclobber

Cela vous évitera de détruire accidentellement le contenu d'un fichier déjà existant si vous redirigez la sortie (> nom de fichier). Vous pouvez toujours forcer l'écrasement avec> | nom de fichier.

9
Cyberdrow

J'ai ce qui suit dans mon 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

Sur une machine locale, cela ressemble à:

[17:57][user:~]$

mais sur une télécommande (via ssh) c'est:

[17:57][user@machine:~]$
8
Anders Rasmussen

Je l'ai depuis un moment dans mon .bashrc et je l'ai trouvé utile. Si vous vous connectez à la boîte, l'écran démarre automatiquement lorsque vous vous connectez, de cette façon lorsque votre connexion réseau est interrompue ou autre, vous ne perdez pas ce que vous faisiez. Il doit être placé à la fin.

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

J'ai quelques morceaux:

# 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

De combien d'alias à fortune avez-vous besoin, de toute façon?

J'aime créer un alias cdd qui m'emmène là où je suis actuellement le plus susceptible de travailler sur ce serveur.

PATH la redéfinition appartient vraiment à .bash_profile, ne pas .bashrc.

Sur un serveur où j'utilise régulièrement un grand nombre de screens, mon .bashrc aura:

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

(Les screen ont été configurés avec, par exemple, screen -U -S chaos1.)

5
chaos

Entre autres choses, j'ai défini quelques valeurs par défaut pour moins, empêche la fermeture accidentelle de mon terminal et active la navigation vers l'avant dans l'historique:

# 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

Tail tous les journaux dans/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

Pour avoir des couleurs pour toutes les commandes grep telles que grep, egrep et zgrep, j'ai ce qui suit dans mon .bashrc

export GREP_OPTIONS='--color=auto'

L'alias "dossiers" est génial! Je l'ai légèrement modifié pour que les répertoires avec des espaces ne provoquent pas d'erreurs.

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

Je voudrais faire écho au commentaire de @ pjz sur la connaissance manuelle des choses plutôt que de les configurer. Surtout si vous accédez à de nombreuses machines, comme je semble toujours le faire.

Donc, je sais certainement que c'est set -o vi parce que je connais les commandes vi-edit en bash et je ne connais pas celles emacs (en plus, Ctrl + A interfère avec screen). Sur mes propres boîtes, je mets ça dans .bashrc

Je trouve également que je dois inclure export EDITOR=vim parce qu'un certain nombre de distributions récentes par défaut sont nano, ce qui est très ennuyeux d'être lancé par un utilitaire qui a besoin de vous pour éditer quelque chose, quand je m'attendais à vi. : - /

Je modifie également mon invite. J'ai trouvé il y a très longtemps que l'ajout du dernier code d'erreur est juste assez utile pour que je l'aime. Et j'aime le chemin d'accès complet dans l'invite. Et le numéro screen actuel aussi. Et il est tout simplement logique d'inclure l'utilisateur et le nom d'hôte actuels. Mon invite est PS1='\u@\h $PWD $WINDOW [$?] \$ '

3
staticsan

Voici les mines:

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

Demandez à bash de vérifier si la taille de la fenêtre a changé (empêche l'édition de ligne de devenir bizarre si vous redimensionnez la fenêtre de votre terminal)

shopt -s checkwinsize

C'est mon préféré. Fait bash ajouter à l'historique au lieu de écraser le. Généralement, lorsque vous lancez bash, il charge l'historique en mémoire et lorsque vous le fermez, il l'écrit. Cela signifie que si vous chargez deux shells, utilisez les deux, puis fermez les deux, celui que vous avez fermé en dernier écrase toutes les modifications.

Cet extrait de code lui fait tout d'abord seulement ajouter des modifications (au lieu de l'écraser avec tout le tampon), puis de le faire, après chaque commande, écrire les modifications. En effet, vous obtenez un .bash_history de mise à jour en direct, donc si vous démarrez un nouveau terminal, vous avez toutes les commandes de l'historique de vos autres sessions en cours d'exécution.

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

Voici quelques un de mes préférés:

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

De Automatisation de l'administration Linux et Unix par Kirk Bauer (grand livre!)

PS1='\n[\u@\h]: \w\n$?> '

La nouvelle ligne au début est la mienne, j'aime avoir une ligne claire entre la sortie précédente et l'invite. Le reste est:

\ u = nom d'utilisateur

\ h = hôte

\ w = répertoire de travail

$? = dernier code retour

2
Cawflands

J'utilise cela environ 20 fois par jour pour cd dans le dernier répertoire modifié:

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

Ces deux gardent des signets permanents des répertoires souvent utilisés:

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

Ce sont mes favoris:

export HISTFILESIZE=1000000000
export HISTSIZE=1000000

J'aime avoir un historique de ligne de commande qui n'oublie jamais.

Malheureusement, il y a quelque temps, j'ai lancé un shell à partir de cron qui ne lisait pas .bashrc d'une manière ou d'une autre, et j'ai tout réduit à 500 lignes, détruisant plus d'un an d'histoire. Je recommande donc ces aller dans/etc/bashrc.

2
skiphoppy

Ceci est l'un de mes favoris:

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

Si j'ai oublié de m'authentifier, cela me permet de le faire sans avoir à perdre ma saisie en faisant ssh-add after la session ssh.

1
joshk0

Quelques bons

Faire en sorte que SSH complète automatiquement le nom d'hôte vers lequel vous utilisez ssh (s'il se trouve dans votre configuration ou votre historique)

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

Quelques paramètres de complétion bash utiles

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

Quelques-uns utiles pour 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`[\u@\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 % "

Et puis il affiche l'IP de votre machine à laquelle vous venez de vous connecter.

1
mrkafk

Je compile un certain nombre de choses manuellement dans $ HOME/local, j'ai donc ce petit extrait:

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

J'ai également mon IRC sur mon serveur fonctionnant dans l'écran, donc je l'ai (pas une chose .bashrc, mais toujours utile)

#!/usr/bin/env bash

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

J'utilise mon bashrc sur de nombreuses machines, j'ai donc ce petit extrait pour m'assurer que LS est colorisé. Cela le corrigera sur les machines OSX, peut-être même * BSD si vous ajustez la ligne uname.

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

De plus, j'ai une commande pour sauvegarder un fichier, utile si vous êtes sur le point de changer un fichier de configuration et que vous souhaitez en faire une copie rapide au préalable.

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

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

eCf () { emacs --batch --eval "(byte-compile-file \"$@\")"; } # 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

Quelques alias que j'utilise pour retirer l'Edge du quotidien CLI Grind ...

# 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

Je dois parfois utiliser un système Solaris au travail.

Cependant, le système est géré de manière centralisée via Puppet, y compris le fichier de mot de passe (qui inclut le paramètre Shell).

Ma .bashrc lit donc quelque chose comme:

%!/bin/bash
exec /bin/tcsh

:)

0
Alnitak

Pour fixer la taille de la fenêtre dans l'écran GNU après le redimensionnement:

shopt -s checkwinsize

Pour afficher les autorisations sur un répertoire, le raccourci ls -ld:

alias lld='ls -ld'

Visualisation de l'historique:

alias h='history | zgrep'

Et le contenu de mon script zgrep, que je n'ai pas pu comprendre comment entasser directement dans l'alias:

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

Je suis accro à l'écran et j'utilise les raccourcis suivants pour SSHing vers les machines. Avec ce script, je tape p hostname vers SSH vers un écran Host and run, ou o hostname pour faire de même mais exécuter l'écran sur la machine locale.

D'abord un script qui se connecte à un serveur SSH du même nom que le script que vous exécutez. J'appelle ça 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 "$@" -t 'screen -RD'
fi

exec ssh $BASENAME "$@"

Créez un lien symbolique vers mars dans votre chemin et mars devient un raccourci pour ssh mars:

adam@pluto:bin$ ln -s simple_ssh mars
adam@pluto:bin$ mars
adam@mars:~$

Le $SCREEN La variable d'environnement vous permet d'exécuter automatiquement l'écran GNU avec la connexion. SCREEN=1 exécute l'écran localement (par exemple, si l'écran n'est pas installé sur l'hôte) et SCREEN = 2 l'exécute sur l'hôte lui-même.

Utilisez quelques alias pour raccourcir ceci:

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

Utilisez un script pour créer des liens symboliques pour tous vos hôtes avec un ~/.ssh/config fichier comme celui-ci:

Host mars
    HostName mars.example.com
    User abackstrom

Le scénario, 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

Feutre

alias install=Sudo yum install

Debian

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