2011-07-11

Qualcuno ha cancellato e ricreato la directory corrente? Niente paura!

In Unix la cancellazione di un file aperto da qualche processo è permessa perché consiste sono nell'eliminazione del suo riferimento in una directory ma il file seguita ad esistere fino a quando qualche directory ha un suo riferimento oppure qualche processo lo mantiene aperto. Anche una directory può essere cancellata se qualche processo ce l'ha come directory corrente, se provate a creare una directory di prova /tmp/prova, vi ci spostate e provate a cancellarla vi viene permesso e tentando di leggere il contenuto della directory con ls non si ottiene nulla* Nella shell corrente il percorso corrente rimane impostato, anche se in una directory inesistente, ma se ricreiamo la directory il problema permane in quanto quello che è stato memorizzato è il file della directory corrente precedente che non esiste più. A questo punto si dovrebbe rieseguire il comando cd per riposizionarsi nella nuova directory. Tornare indietro di una non si può, il comando cd .. non può funzionare in quanto non esiste più il riferimento nella directory corrente, va rieseguito il comando cd con il percorso assoluto e se si tratta di un lungo percorso può essere noioso. In questa condizione possiamo eseguire ancora il comando pwd per reperire il percordo della directory corrente, la shell risponde in maniera corretta. Quindi una soluzione comoda è eseguire il comando cd $(pwd) che costringe il comando cd a ripercorrere tutto il percorso necessario da / per riposizionarsi ma non siamo costretti a digitare di nuovo tutto quanto.

* i comportamenti variano tra le diverse implementazioni e versioni di Unix.

Nessun commento:

Posta un commento