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.

pwd<br />

pushd<br />

popd<br />

<strong>di</strong>rs<br />

Cautela<br />

Il comando cd non funziona come ci si potrebbe aspettare quando è<br />

seguito da una doppia barra.<br />

bash$ cd //<br />

bash$ pwd<br />

//<br />

L’output, naturalmente, dovrebbe essere /. Questo rappresenta un<br />

problema sia da riga <strong>di</strong> comando che in uno script.<br />

Capitolo 11. Coman<strong>di</strong> interni e builtin<br />

Print Working Directory. Fornisce la <strong>di</strong>rectory corrente dell’utente (o dello script) (ve<strong>di</strong> Esempio<br />

11-9). Ha lo stesso effetto della lettura del valore della variabile builtin $PWD.<br />

Questa serie <strong>di</strong> coman<strong>di</strong> forma un sistema per tenere nota delle <strong>di</strong>rectory <strong>di</strong> lavoro; un mezzo per<br />

spostarsi avanti e in<strong>di</strong>etro tra le <strong>di</strong>rectory in modo or<strong>di</strong>nato. Viene usato uno stack (del tipo LIFO)<br />

per tenere traccia dei nomi delle <strong>di</strong>rectory. Diverse opzioni consentono varie manipolazioni dello<br />

stack delle <strong>di</strong>rectory.<br />

pushd nome-<strong>di</strong>r immette il percorso <strong>di</strong> nome-<strong>di</strong>r nello stack delle <strong>di</strong>rectory e<br />

simultaneamente passa dalla <strong>di</strong>rectory <strong>di</strong> lavoro corrente a nome-<strong>di</strong>r<br />

popd preleva (pop) il nome ed il percorso della <strong>di</strong>rectory che si trova nella locazione più alta dello<br />

stack delle <strong>di</strong>rectory e contemporaneamente passa dalla <strong>di</strong>rectory <strong>di</strong> lavoro corrente a quella<br />

prelevata dallo stack.<br />

<strong>di</strong>rs elenca il contenuto dello stack delle <strong>di</strong>rectory (lo si confronti con la variabile $DIRSTACK).<br />

Un comando pushd o popd, che ha avuto successo, invoca in modo automatico <strong>di</strong>rs.<br />

Gli script che necessitano <strong>di</strong> ricorrenti cambiamenti delle <strong>di</strong>rectory <strong>di</strong> lavoro possono trarre<br />

giovamento dall’uso <strong>di</strong> questi coman<strong>di</strong>, evitando <strong>di</strong> dover co<strong>di</strong>ficare ogni mo<strong>di</strong>fica all’interno dello<br />

script. È da notare che nell’array implicito $DIRSTACK, accessibile da uno script, è memorizzato il<br />

contenuto dello stack delle <strong>di</strong>rectory.<br />

Esempio 11-9. Cambiare la <strong>di</strong>rectory <strong>di</strong> lavoro corrente<br />

#!/bin/bash<br />

<strong>di</strong>r1=/usr/local<br />

200

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

Saved successfully!

Ooh no, something went wrong!