11.04.2013 Views

Guida avanzata di scripting Bash - Portale Posta DMI

Guida avanzata di scripting Bash - Portale Posta DMI

Guida avanzata di scripting Bash - Portale Posta DMI

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Capitolo 24. Alias<br />

Un alias <strong>Bash</strong>, essenzialmente, non è niente più che una scorciatoia <strong>di</strong> tastiera, un’abbreviazione, un<br />

mezzo per evitare <strong>di</strong> <strong>di</strong>gitare una lunga sequenza <strong>di</strong> coman<strong>di</strong>. Se, per esempio, si inserisce la riga alias<br />

lm="ls -l | more" nel file ~/.bashrc, ogni volta che verrà <strong>di</strong>gitato lm da riga <strong>di</strong> comando, questo<br />

sarà automaticamente sostituito con ls -l | more. In questo modo si possono evitare lunghe <strong>di</strong>gitazioni da<br />

riga <strong>di</strong> comando nonché dover ricordare combinazioni complesse <strong>di</strong> coman<strong>di</strong> ed opzioni. Impostare alias<br />

rm="rm -i" (modalità <strong>di</strong> cancellazione interattiva) può evitare moltissimi danni, perché impe<strong>di</strong>sce <strong>di</strong><br />

perdere inavvertitamente file importanti.<br />

In uno script, gli alias hanno utilità molto limitata. Sarebbe alquanto bello se gli alias potessero assumere<br />

alcune delle funzionalità del preprocessore del C, come l’espansione <strong>di</strong> macro, ma sfortunatamente <strong>Bash</strong><br />

non espande gli argomenti presenti nel corpo dell’alias. 1 Inoltre, uno script non è in grado <strong>di</strong> espandere<br />

l’alias stesso nei “costrutti composti”, come gli enunciati if/then, i cicli e le funzioni. Un’ulteriore<br />

limitazione è rappresentata dal fatto che un alias non si espande ricorsivamente. Quasi invariabilmente,<br />

tutto quello che ci piacerebbe fosse fatto da un alias, può essere fatto molto più efficacemente con una<br />

funzione.<br />

Esempio 24-1. Alias in uno script<br />

#!/bin/bash<br />

# alias.sh<br />

shopt -s expand_aliases<br />

# È necessario impostare questa opzione, altrimenti lo script non espande<br />

#+ gli alias.<br />

# Innazitutto, <strong>di</strong>vertiamoci un po’.<br />

alias Jesse_James=’echo "\"Alias Jesse James\" era una comme<strong>di</strong>a del 1959\<br />

interpretata da Bob Hope."’<br />

Jesse_James<br />

echo; echo; echo;<br />

alias ll="ls -l"<br />

# Per definire un alias si possono usare sia gli apici singoli (’) che quelli<br />

#+ doppi (").<br />

echo "Prova dell’alias \"ll\":"<br />

ll /usr/X11R6/bin/mk* #* L’alias funziona.<br />

echo<br />

<strong>di</strong>rectory=/usr/X11R6/bin/<br />

prefisso=mk* # Ve<strong>di</strong>amo se il carattere jolly causa dei problemi.<br />

echo "Variabili \"<strong>di</strong>rectory\" + \"prefisso\" = $<strong>di</strong>rectory$prefisso"<br />

465

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!