Navigazione veloce tra directory: pushd, popd e dirs: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
(reverse pushd script vers. 0.0.0.0.2)
mNessun oggetto della modifica
Riga 120: Riga 120:
== Pushd ==
== Pushd ==
Il comando <code>pushd</code> serve per memorizzare una directory in cima allo stack o per ruotare lo stack portandone in cima la directory voluta.<br/>
Il comando <code>pushd</code> serve per memorizzare una directory in cima allo stack o per ruotare lo stack portandone in cima la directory voluta.<br/>
*pushd <code>my_directory</code>
*'''pushd <code>my_directory</code>'''
ci si sposta nella directory <code>my_directory</code> che diventa "l'elemento zero" dello stack, il precedente elemento zero diventa l'elemento di indice 1 e così via. La directory <code>my_directory</code> non viene salvata permanentemente sullo stack a meno di non eseguire esplicitamente un "<code>pushd .</code>"<br/>
ci si sposta nella directory <code>my_directory</code> che diventa "l'elemento zero" dello stack, il precedente elemento zero diventa l'elemento di indice 1 e così via. La directory <code>my_directory</code> non viene salvata permanentemente sullo stack a meno di non eseguire esplicitamente un "<code>pushd .</code>"<br/>
Questo comando è utile se si vuol salvare permanentemente sullo stack sia la directory di lavoro corrente che la directory <code>my_directory</code> (quest'ultima dopo aver eseguito un "<code>pushd .</code>")<br/>
Questo comando è utile se si vuol salvare permanentemente sullo stack sia la directory di lavoro corrente che la directory <code>my_directory</code> (quest'ultima dopo aver eseguito un "<code>pushd .</code>")<br/>
Riga 149: Riga 149:
</pre>
</pre>


* pushd -n <code>my_directory</code>
* '''pushd -n <code>my_directory</code>'''
comando molto simile al precedente tranne che per l'aggiunta dell'opzione "-n" che consente di manipolare solo lo stack senza il cambio di directory visto nel precedente caso.<br/>
comando molto simile al precedente tranne che per l'aggiunta dell'opzione "-n" che consente di manipolare solo lo stack senza il cambio di directory visto nel precedente caso.<br/>
In questo esempio la directory <code>my_directory</code> equivale a <code>/tmp/prova</code> e la directory di partenza è <code>/usr</code>:
In questo esempio la directory <code>my_directory</code> equivale a <code>/tmp/prova</code> e la directory di partenza è <code>/usr</code>:
Riga 166: Riga 166:
Questo comando è utile per inserire permanentemente una directory, diversa dalla directory corrente, in cima allo stack. Al termine del comando la directory di lavoro corrente non cambia.
Questo comando è utile per inserire permanentemente una directory, diversa dalla directory corrente, in cima allo stack. Al termine del comando la directory di lavoro corrente non cambia.


* pushd +num
* '''pushd +num'''
* pushd -num
* '''pushd -num'''


Come "<code>pushd my_directory</code>" tranne per il fatto che la directory individuata da <code>num</code> appartiene già allo stack. Entrambi i comandi causano una rotazione dello stack; <code>num</code> è un numero intero che rappresenta la posizione della directory nella pila iniziando a contare dall'alto (+num) o dal basso (-num) partendo sempre da zero.<br/>
Come "<code>pushd my_directory</code>" tranne per il fatto che la directory individuata da <code>num</code> appartiene già allo stack. Entrambi i comandi causano una rotazione dello stack; <code>num</code> è un numero intero che rappresenta la posizione della directory nella pila iniziando a contare dall'alto (+num) o dal basso (-num) partendo sempre da zero.<br/>
Riga 271: Riga 271:
eseguito senza argomenti.
eseguito senza argomenti.


* pushd -n +num
* '''pushd -n +num'''
* pushd -n -num
* '''pushd -n -num'''


A questo punto il risultato di questi due comandi può essere facilmente indovinato: l'opzione "-n" opera direttamente sullo stack senza effettuare nessun cambio di directory di lavoro. Lo stack viene ruotato come nell'esempio precedente ma la directory corrente resta invariata. Questo porta alla cancellazione dalla pila della directory individuata e alla sua sostituzione in cima allo stack dalla directory corrente.<br/>
A questo punto il risultato di questi due comandi può essere facilmente indovinato: l'opzione "-n" opera direttamente sullo stack senza effettuare nessun cambio di directory di lavoro. Lo stack viene ruotato come nell'esempio precedente ma la directory corrente resta invariata. Questo porta alla cancellazione dalla pila della directory individuata e alla sua sostituzione in cima allo stack dalla directory corrente.<br/>
Riga 317: Riga 317:
</pre>
</pre>


* popd -num
* '''popd -num'''
* popd +num
* '''popd +num'''


Con questi due comandi si rimuove dallo stack la directory voluta mentre la directory corrente di lavoro resta invariata. Il significato del valore <code>num</code> è uguale a quello spiegato per il comando <code>pushd</code>.<br/>
Con questi due comandi si rimuove dallo stack la directory voluta mentre la directory corrente di lavoro resta invariata. Il significato del valore <code>num</code> è uguale a quello spiegato per il comando <code>pushd</code>.<br/>
Riga 351: Riga 351:
</pre>
</pre>


* popd -n
* '''popd -n'''
Come <code>popd</code> senza argomenti tranne per il fatto che la directory corrente resta invariata. In pratica cancella l'elemento di indice 1 dello stack. Ad esempio:  
Come <code>popd</code> senza argomenti tranne per il fatto che la directory corrente resta invariata. In pratica cancella l'elemento di indice 1 dello stack. Ad esempio:  
<pre>
<pre>
Riga 376: Riga 376:
== Dirs ==
== Dirs ==
Il comando <code>dirs</code> elenca il contenuto dello stack delle directory. Lanciato senza opzioni mostra semplicemente il contenuto dello stack su una singola riga.
Il comando <code>dirs</code> elenca il contenuto dello stack delle directory. Lanciato senza opzioni mostra semplicemente il contenuto dello stack su una singola riga.
* dirs -p
* '''dirs -p'''
il contenuto dello stack viene mostrato su più righe. Ciascuna riga contiene una directory.
il contenuto dello stack viene mostrato su più righe. Ciascuna riga contiene una directory.
* dirs -v
* '''dirs -v'''
come "<code>dirs -p</code>". In più ciascuna riga è contraddistinta da un numero intero che corrisponde all'indice della directory nello stack.
come "<code>dirs -p</code>". In più ciascuna riga è contraddistinta da un numero intero che corrisponde all'indice della directory nello stack.
* dirs -l
* '''dirs -l'''
come <code>dirs</code> senza opzioni, la differenza è l'espansione del carattere "~" che viene sostituito con il percorso assoluto dell'home directory.
come <code>dirs</code> senza opzioni, la differenza è l'espansione del carattere "~" che viene sostituito con il percorso assoluto dell'home directory.
* dirs +num
* '''dirs +num'''
* dirs -num
* '''dirs -num'''
mostra semplicemente il nome della directory contenuta nello stack e trovata in base all'intero <code>num</code>. Il significato di <code>num</code> è lo stesso dei comandi <code>pushd</code> e <code>popd</code>.
mostra semplicemente il nome della directory contenuta nello stack e trovata in base all'intero <code>num</code>. Il significato di <code>num</code> è lo stesso dei comandi <code>pushd</code> e <code>popd</code>.
* dirs -c
* '''dirs -c'''
svuota lo stack delle directory.
svuota lo stack delle directory.


Riga 402: Riga 402:
$ echo ${DIRSTACK[1]}
$ echo ${DIRSTACK[1]}
</pre>
</pre>
in questo modo, invece, viene mostrato l'ultima directory memorizzata nella pila:
in questo modo, invece, viene mostrata l'ultima directory memorizzata nella pila:
<pre>
<pre>
echo ${DIRSTACK[${#DIRSTACK[@]}-1]}
echo ${DIRSTACK[${#DIRSTACK[@]}-1]}