GNU/Linux >> Linux Esercitazione >  >> Linux

Navigazione nella shell Bash con pushd e popd

La spinta e popd i comandi sono funzionalità integrate della shell Bash per aiutarti a "segnare" le directory per una rapida navigazione tra le posizioni sul tuo disco rigido. Potresti già pensare che il terminale sia un modo incredibilmente veloce per navigare nel tuo computer; con pochi tasti, puoi andare ovunque sul tuo disco rigido, sull'archiviazione collegata o sulla condivisione di rete. Ma quella velocità può diminuire quando ti ritrovi ad andare avanti e indietro tra le directory o quando ti "perdi" all'interno del tuo filesystem. Sono proprio questi i problemi pushd e popd può aiutarti a risolvere.

premere

Nella sua forma più semplice, pushd è molto simile a cd . Ti porta da una directory all'altra. Supponi di avere una directory chiamata one , che contiene una sottodirectory denominata due , che contiene una sottodirectory denominata tre , e così via. Se la tua directory di lavoro corrente è uno , quindi puoi passare a due o tre o ovunque con il cd comando:

$ pwd
one
$ cd two/three
$ pwd
three

Puoi fare lo stesso con pushd :

$ pwd
one
$ pushd two/three
~/one/two/three ~/one
$ pwd
three

Il risultato finale di pushd è lo stesso di cd , ma c'è un ulteriore risultato intermedio:pushd fa eco alla directory di destinazione e al punto di origine. Questo è il tuo stack di directory , ed è ciò che rende pushd unico.

Pile

Una pila, nella terminologia informatica, si riferisce a un insieme di elementi. Nel contesto di questo comando, gli elementi sono le directory che hai visitato di recente usando il pushd comando. Puoi pensarla come una storia o una traccia di breadcrumb.

Puoi spostarti in tutto il tuo filesystem con pushd; ogni volta, le tue posizioni precedenti e nuove vengono aggiunte allo stack:

$ pushd four
~/one/two/three/four ~/one/two/three ~/one
$ pushd five
~/one/two/three/four/five ~/one/two/three/four ~/one/two/three ~/one

Una volta creato uno stack, puoi usarlo come raccolta di segnalibri o waypoint per viaggi veloci. Ad esempio, supponi che durante una sessione stai facendo molto lavoro all'interno di ~/uno/due/tre/quattro/cinque struttura di directory di questo esempio. Sai di essere stato a uno di recente, ma non ricordi dove si trova nel tuo pushd pila. Puoi visualizzare il tuo stack con il +0 (è un segno più seguito da uno zero), che indica pushd non per passare a nessuna directory nello stack, ma richiede anche pushd per fare eco al tuo stack attuale:

$ pushd +0
~/one/two/three/four ~/one/two/three ~/one ~/one/two/three/four/five

In alternativa, puoi visualizzare lo stack con le dir comando e puoi vedere il numero di indice per ciascuna directory utilizzando il -v opzione:

$ dirs -v
0  ~/one/two/three/four
1  ~/one/two/three
2  ~/one
3  ~/one/two/three/four/five

La prima voce nel tuo stack è la tua posizione attuale. Puoi confermarlo con pwd come al solito:

$ pwd
~/one/two/three/four

A partire da 0 (la tua posizione attuale e la prima voce del tuo stack), il secondo l'elemento nel tuo stack è ~/uno , che è la destinazione desiderata. Puoi andare avanti nel tuo stack usando il +2 opzione:

$ pushd +2
~/one ~/one/two/three/four/five ~/one/two/three/four ~/one/two/three
$ pwd
~/one

Questo cambia la tua directory di lavoro in ~/uno e ha anche spostato la pila in modo che la tua nuova posizione sia in primo piano.

Puoi anche tornare indietro nel tuo stack. Ad esempio, per arrivare rapidamente a ~/uno/due/tre dato l'output di esempio, puoi tornare indietro di uno, tenendo presente che pushd inizia con 0:

$ pushd -0
~/one/two/three ~/one ~/one/two/three/four/five ~/one/two/three/four

Aggiungere allo stack

Puoi continuare a navigare nel tuo stack in questo modo e rimarrà un elenco statico delle directory visitate di recente. Se vuoi aggiungere una directory, fornisci semplicemente il percorso della directory. Se una directory è nuova nello stack, viene aggiunta all'elenco proprio come ti aspetteresti:

$ pushd /tmp
/tmp ~/one/two/three ~/one ~/one/two/three/four/five ~/one/two/three/four

Ma se esiste già nello stack, viene aggiunto una seconda volta:

$ pushd ~/one
~/one /tmp ~/one/two/three ~/one ~/one/two/three/four/five ~/one/two/three/four

Sebbene lo stack sia spesso usato come elenco di directory a cui desideri accedere rapidamente, è davvero una vera storia di dove sei stato. Se non vuoi che una directory venga aggiunta in modo ridondante allo stack, devi utilizzare +N e -N notazione.

Rimozione di directory dallo stack

Il tuo stack, ovviamente, non è immutabile. Puoi aggiungerlo con pushd o rimuovi elementi da esso con popd .

Ad esempio, supponi di aver appena usato pushd per aggiungere ~/uno al tuo stack, facendo ~/uno la tua attuale directory di lavoro. Per rimuovere il primo elemento (o "zeroeth", se preferisci):

$ pwd
~/one
$ popd +0
/tmp ~/one/two/three ~/one ~/one/two/three/four/five ~/one/two/three/four
$ pwd
~/one

Ovviamente puoi rimuovere qualsiasi elemento, iniziando il conteggio da 0:

$ pwd ~/one
$ popd +2
/tmp ~/one/two/three ~/one/two/three/four/five ~/one/two/three/four
$ pwd ~/one

Puoi anche utilizzare popd dal fondo dello stack, iniziando sempre con 0. Ad esempio, per rimuovere la directory finale dallo stack:

$ popd -0
/tmp ~/one/two/three ~/one/two/three/four/five

Se usato in questo modo, popd non cambia la tua directory di lavoro. Manipola solo il tuo stack.

Il comportamento predefinito di popd , senza argomenti, consiste nel rimuovere il primo elemento (zeroth) dallo stack e rendere l'elemento successivo la directory di lavoro corrente.

Questo è molto utile come comando di cambio rapido, quando, ad esempio, stai lavorando in due directory diverse e hai solo bisogno di nasconderti per un momento in un'altra posizione. Non devi pensare al tuo stack di directory se non hai bisogno di una cronologia elaborata:

$ pwd
~/one
$ pushd ~/one/two/three/four/five
$ popd
$ pwd
~/one

Inoltre, non è necessario utilizzare pushd e popd in rapida successione. Se usi pushd per visitare una posizione diversa, quindi distrarti per tre ore inseguendo un bug o facendo ricerche, troverai il tuo stack di directory in paziente attesa (a meno che tu non abbia terminato la sessione del terminale):

$ pwd ~/one
$ pushd /tmp
$ cd {/etc,/var,/usr}; sleep 2001
[...]
$ popd
$ pwd
~/one

Pushd e popd nel mondo reale

La spinta e popd i comandi sono sorprendentemente utili. Una volta che li avrai appresi, troverai delle scuse per metterli a frutto e acquisirai familiarità con il concetto di stack di directory. Prendere confidenza con pushd è stato ciò che mi ha aiutato a capire git stash , che non è del tutto correlato a pushd ma simili nell'intangibilità concettuale.

Utilizzo di pushd e popd negli script di shell può essere allettante, ma in generale è probabilmente meglio evitarli. Non sono portatili al di fuori di Bash e Zsh e possono essere ottusi durante la rilettura di uno script (pushd +3 è meno chiaro di cd $HOME/$DIR/$TMP o simili).

A parte questi avvisi, se sei un normale utente Bash o Zsh, puoi e dovresti provare pushd e popd .


Linux
  1. Navigazione rapida delle directory in Bash Shell?

  2. Capisci il significato di `$_`?

  3. Perché la Regex in Bash funziona solo se è una variabile e non direttamente??

  4. Cosa c'è di sbagliato nel mio script bash per mantenere gli ultimi file x ed eliminare il resto?

  5. Come posso utilizzare i comandi watch e jobs insieme in Bash?

Fai calcoli nella shell Linux con GNU bc

Importa funzioni e variabili in Bash con il comando sorgente

Come programmare con Bash:sintassi e strumenti

Comandi Pushd e Popd in Linux

Suggerimenti per la navigazione della riga di comando di Linux:le basi dei comandi pushd e popd

Scarica file con Wget sulla shell Linux - Spiegazione ed esempi