Personalizziamo il bashrc

linux

Questo breve articolo nasce dalla necessità che ho avuto qualche giorno fa di aggiungere al comando history della shell di Linux l'informazione sulla data e l'ora in cui i comandi sono stati eseguiti sul terminale.
Per chi non lo sapesse, il comando history stampa la lista ordinata di tutti i comandi che sono stati eseguiti da linea di comando in un sistema Linux, dal più vecchio al più recente. Navigando tra le varie comunità di utenti Linux, ho scoperto che per ottenere il risultato che volevo era necessario modificare il file .bashrc, file di configurazione Linux letto tutte le volte che aprite una nuova shell, con CTRL+ALT+T o cliccando sull'apposita icona.
Al suo interno tutte le informazioni di inizializzazione per l'utilizzo della shell. Coerentemente con la filosofia Linux in cui "tutto è un file", se sapete dove mettere le mani potete tranquillamente modificare a vostro piacimento il .bashrc per aggiungere funzionalità personalizzate alla vostra linea di comando.

In questo articolo ho deciso di elencare alcune delle modifiche più interessanti trovate su internet per migliorare la vostra esperienza con la linea di comando. In fondo all'articolo saranno ovviamente elencate le fonti alle discussioni e ai blog trovati, per approfondimenti.

DISCLAIMER 1: il file .bashrc è un file nascosto che si trova nella vostra home; prima di provare le modifiche sul vostro .bashrc, copiatevi il file attuale da qualche parte nel vostro file system per poter tornare indietro senza problemi alle vostre impostazioni iniziali.


DISCLAIMER 2: per rendere effettive le vostre modifiche al .bashrc senza dover riavviare il computer dovrete eseguire il seguente comando nella vostra home:

source ~/.bashrc




Aggiungere data e ora alla history

I comandi che eseguite sul vostro terminale sono salvati nel file nascosto .bash_history. Aggiungendo la seguente riga nel vostro .bashrc:

export HISTTIMEFORMAT="%d/%m/%y %T "

Quando chiamerete la prossima volta il comando history, oltre a stamparvi la lista dei comandi utilizzati avrete anche la data e l'ora in questi sono stati eseguiti.




Il comando "alias"

Con il comando alias potete assegnare una stringa ad una sequenza di istruzioni. Qui un elenco di possibilità da poter aggiungere al vostro .bashrc:

alias la='ls -A'
alias l='ls -CF'
alias svim='sudo vim'
alias back='cd $OLDPWD'
alias root='sudo su'



Scorciatoie per le directory:

alias home='cd ~/'
alias documenti='cd ~/Documenti'
alias downloads='cd ~/Scaricati'
alias immagini='cd ~/Immagini'
alias video='cd ~/Video'
alias localhost='cd /var/www'



Per i fan di MS-DOS:

alias dir="ls"
alias copy="cp"
alias rename="mv"
alias md="mkdir"
alias rd="rmdir"
alias del="rm -i"



Per i fan di Age of Empires che usano ffmpeg:

alias wololo="convert"



Per poter tornare indietro ed eliminare un alias vi basterà utilizzare il comando unalias.



Estrazione di un archivio

Se esiste una sequenza di flag che più crea problemi agli utenti Linux alle prime armi (e non solo...) sono i flag per scompattare un file compresso. La striscia di xkcd coglie in pieno il problema...

xkcd sempre di grande livello

Aggiungendo questa funzione nel vostro .bashrc vi basterà digitare extract ed il nome del file da estrarre per scompattare l'archivio senza sparare a caso consonanti sulla tastiera.

function extract {
 if [ -z "$1" ]; then
    # display usage if no parameters given
    echo "Usage: extract <path/file_name>.<zip|rar|bz2|gz|tar|tbz2|tgz|Z|7z|xz|ex|tar.bz2|tar.gz|tar.xz>"
 else
    if [ -f $1 ] ; then
        # NAME=${1%.*}
        # mkdir $NAME && cd $NAME
        case $1 in
          *.tar.bz2)   tar xvjf ../$1    ;;
          *.tar.gz)    tar xvzf ../$1    ;;
          *.tar.xz)    tar xvJf ../$1    ;;
          *.lzma)      unlzma ../$1      ;;
          *.bz2)       bunzip2 ../$1     ;;
          *.rar)       unrar x -ad ../$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        ;;
          *.xz)        unxz ../$1        ;;
          *.exe)       cabextract ../$1  ;;
          *)           echo "extract: '$1' - unknown archive method" ;;
        esac
    else
        echo "$1 - file does not exist"
    fi
fi
}




Altre funzioni!

Utili funzioni di ricerca:

# Find a file with a pattern in name:
function ff() { find . -type f -iname '*'"$*"'*' -ls ; }


# Find a file with pattern $1 in name and Execute $2 on it:
function fe() { find . -type f -iname '*'"${1:-}"'*' \
-exec ${2:-file} {} \;  ; }


#  Find a pattern in a set of files and highlight them:
#+ (needs a recent version of egrep).
function fstr()
{
    OPTIND=1
    local mycase=""
    local usage="fstr: find string in files.
Usage: fstr [-i] \"pattern\" [\"filename pattern\"] "
    while getopts :it opt
    do
        case "$opt" in
           i) mycase="-i " ;;
           *) echo "$usage"; return ;;
        esac
    done
    shift $(( $OPTIND - 1 ))
    if [ "$#" -lt 1 ]; then
        echo "$usage"
        return;
    fi
    find . -type f -name "${2:-*}" -print0 | \
xargs -0 egrep --color=always -sn ${case} "$1" 2>&- | more

}




Fonti

  • - How to see time stamps in bash history?
  • - Show us your .bashrc!
  • - The alias Command
  • - Post your .bashrc!
  • - An Introduction to Useful Bash Aliases and Functions
  • - Advanced bash scripting Guide
  • Alessio Antonielli

    Ingegnere informatico, appassionato di cinema, musica, videogiochi e serie tv. Insomma, le solite cose che vi aspettereste da un ex studente di Ingegneria Informatica, giusto per rafforzare lo stereotipo…

    Personalizziamo il bashrc ultima modifica: 2016-07-05T11:26:01+00:00 da Alessio Antonielli


    Advertisment ad adsense adlogger