Navigare attraverso strutture di directory complesse in un terminale Linux può richiedere molto tempo, soprattutto durante le attività di amministrazione del sistema o di scripting. Sebbene cd (change directory) sia il comando più utilizzato per la navigazione nelle directory, manca la capacità di gestire uno stack di directory, una caratteristica che pushd e popd offrono.
Questo articolo fornisce un’analisi approfondita dei comandi pushd e popd, mostrando come semplificare la navigazione nelle directory e rendere più efficienti i flussi di lavoro del terminale.
pushd (push directory) salva la directory corrente in uno stack e poi passa a una nuova directory.
popd (pop directory) rimuove la directory superiore dallo stack e ritorna a quella precedente.
Questi comandi fanno parte del meccanismo di stack di directory disponibile in bash, zsh e altre shell moderne.
pushd e popd sono preziosi quando:
Ci si sposta spesso tra due o più directory.
Si scrivono script di shell che hanno bisogno di cambiare temporaneamente directory.
Si vuole evitare di inquinare la shell con comandi cd non necessari e mantenere il contesto.
Spinge la directory corrente nello stack.
Cambia la directory in /percorso/obiettivo.
esempio:
Ora ci si trova in /var/www/html e la propria directory ~ è memorizzata nello stack.
Estrae la directory superiore dallo stack.
Riporta l’utente alla directory precedente.
Continuando l’esempio precedente:
Si torna a ~.
Usate dirs per visualizzare lo stato attuale dello stack di directory:
Esempio di risultato:
L’indice 0 rappresenta la directory corrente.
Gli indici più alti rappresentano le directory precedenti.
È possibile utilizzare:
per spingere la directory corrente nello stack senza cambiare directory.
Efficiente per uno sviluppo iterativo senza comandi cd ripetitivi.
Ecco uno script che costruisce il codice in una directory temporanea e lo restituisce in modo pulito:
#!/bin/bash
pushd /tmp/build-env || exit 1
# Configure and build
cmake ~/projects/myproject
make -j$(nproc)
popd
Se lo script fallisce all’interno di /tmp/build-env, si ritorna comunque alla posizione originale.
Questo rende gli script più manutenibili, soprattutto quando si verificano errori: si può tornare alla directory originale in modo sicuro.
Quando si lavora con più chiamate pushd, dirs -v aiuta a tracciare la cronologia della navigazione.
È possibile rimuovere una directory specifica dallo stack:
Rimuove la directory all’indice 1 (non necessariamente quella corrente).
Stack Overflow (non il sito 😄): L’uso eccessivo di pushd senza le corrispondenti chiamate a popd può gonfiare lo stack, portando a uno stato confuso delle directory.
Non sono disponibili ovunque: pushd e popd sono dei built-in in bash, zsh e altre shell simili – potrebbero non essere disponibili in shell minimali come sh.
Non persistenti: Lo stack delle directory è basato sulla sessione. Una volta terminata la sessione del terminale, lo stack si azzera.
Nel vostro .bashrc o.zshrc, aggiungete:
Questo riduce la pressione dei tasti e aumenta la produttività.