141 votes

Quelles sont les choses utiles que l'on peut ajouter à son .bashrc ?

Y a-t-il quelque chose dont vous ne pouvez pas vous passer et qui me rendrait la vie tellement plus facile ? En voici quelques-uns que j'utilise ('diskspace' et 'folders' 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"

3 votes

Cela devrait être le wiki de la communauté

1 votes

Transformé en wiki communautaire. Profitez-en.

4 votes

Canalisé vers plus ? Je parie que vous seriez plus heureux avec moins ou moins -F

81voto

Yevgeny Simkin Points 1066

J'ai un petit script qui extrait les 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
 }

1 votes

Sympa. Mais encore une fois, il y a cet argument IDE/Vim concernant la connaissance des commandes de mémoire. Fantastique morceau de script cependant. Il va définitivement dans le .bashrc. Merci !

19 votes

Il existe une commande linux simple et agréable appelée "unp", le "Unpacker" qui fait cela et plus encore.

0 votes

Il manque une fonctionnalité à cette commande. Elle ne peut pas ouvrir le paquet 7z à boost.org/doc/libs/1_39_0/more/getting_started/ correctement. Savez-vous comment résoudre le problème ?

39voto

Eddie Points 11262

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 sur lequel je suis actuellement connecté. Ainsi, lorsque je suis à trois niveaux de 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 ! (Note : A la maison, telnet est désactivé sur toutes les machines. Au travail, ssh n'est pas toujours activé et je n'ai pas un 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 de l'hôte suivi par :) si la dernière commande a réussi et :( si la dernière commande a échoué.

0 votes

Le chèque de $ ? est une idée intéressante, je l'aime bien.

6 votes

J'affiche également l'état dans mon invite, mais je conserve la valeur numérique et la colorie en rouge si elle est différente de zéro, sinon en vert.

0 votes

Intéressant....

25voto

Paul Owens Points 1617

La couleur pour les pages de manuel en moins rend les pages de manuel un peu plus faciles à lire :

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'

Des pages de manuel colorées peuvent également être obtenues en installant most et en l'utilisant comme variable d'environnement MANPAGER. Si vous voulez utiliser ce pager pas seulement pour man, utilisez la variable PAGER, comme ceci :

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

24voto

Paul de Vrieze Points 111

Plus de cd ../../../ mais plus de 4

Remonte d'autant de répertoires que le nombre passé en argument, si aucun ne remonte de 1 par défaut (trouvé dans un lien dans un commentaire sur 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
}

0 votes

Cette version de up() semble inutilement complexe. J'utilise cette version : up() { cd $(eval printf '../'%.0s {1..$1}) && pwd ; }. Vous pouvez évidemment supprimer l'appel à 'pwd' si vous le souhaitez.

0 votes

J'utilise quelque chose comme ceci : # alias de navigation du répertoire alias ..='cd ..' alias ...='cd ../..' alias ....='cd ../../..' alias .....='cd ../../../..'

19voto

81bronco Points 7071

Je travaille avec beaucoup de machines différentes et l'un de mes préférés est l'utilisation d'alias pour chaque machine à laquelle je dois fréquemment accéder par SSH :

alias claudius="ssh dinomite@claudius"

Il est également utile de mettre en place un bon .ssh/config y clés ssh pour faciliter le passage d'une machine à l'autre.

Un autre de mes alias préférés sert à déplacer des répertoires vers le haut :

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

Et d'autres pour des variations courantes de ls (et les 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 soufflé par chaque sortie de Shell, et il ne contient pas grand chose pour commencer. J'aime avoir 10 000 lignes d'historique :

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 avant mais que je ne me souviens pas des détails, un rapide history | grep foo va m'aider à me rafraîchir la mémoire.

Je me suis souvent retrouvé à canaliser la sortie à travers 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 cette tâche, 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 permet d'économiser une bonne partie de la saisie.

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

2 votes

J'utilise aussi l'alias ssh et les clés ssh... c'est très facile.

1 votes

+1 pour les conseils sur le contrôle de l'histoire.

2 votes

Vous pouvez mettre des alias de nom d'hôte dans .ssh/config pour le même effet. Dans ce cas, ajoutez une entrée 'Host cloudius' avec 'username dinomite'.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X