Una finestra di terminale su un desktop Linux in stile Ubuntu.

Fatmawati Achmad Zaenuri/Shutterstock

Molte persone Linux non hanno mai sentito parlare di |_+_| e |_+_|, ma esistono da sempre. Possono anche accelerare notevolmente il processo di navigazione nelle directory sulla riga di comando. Ti guideremo attraverso come usarli.



Cosa sono pushd e popd?

Una delle novità Bill Joy incorporato nel suo 1978 C Shell era il concetto di stack di directory e i mezzi per manipolarlo: |_+_| e |_+_|. L'imitazione è la forma più sincera di adulazione, lo stack di directory, |_+_| e |_+_| furono presto incorporati in altre shell (come Bash) e persino in altri sistemi operativi.

Il concetto di pila è semplice. Gli oggetti vengono messi in pila uno alla volta, con l'oggetto aggiunto più di recente che occupa sempre la prima posizione. Quando gli elementi vengono recuperati dalla pila, vengono rimossi, in ordine, dall'alto verso il basso. Gli stack di questa natura sono spesso indicati come Ultimo ad entrare, primo ad uscire (LIFO) code.

In realtà, |_+_| e |_+_| sono un po' più flessibili di così, ma questo è un buon modello da tenere a mente per ora.

Poiché ci riferiamo a uno stack di directory, probabilmente non sorprende che la d in |_+_| e |_+_| sta per directory. Questi comandi consentono di inserire o estrarre le directory dallo stack di directory.

Ma come ci avvantaggia?

Come pushd popola lo stack

Quando usi |_+_|, accadono le seguenti tre cose:

  • Cambi la directory come se avessi usato |_+_|.
  • Il nome e il percorso della directory vengono aggiunti allo stack.
  • Lo stack viene visualizzato come un elenco di directory separate da spazi.

Negli esempi seguenti, nota come lo stack di directory cresce con ogni nuovo |_+_| comando. Si noti inoltre che la parte superiore dello stack è a sinistra: è qui che vengono visualizzate le nuove voci.

Annuncio pubblicitario

Dopo il primo |_+_| comando, ci sono due voci nello stack: la directory che hai lasciato e quella in cui ti sei spostato.

Per il nostro esempio, digitiamo quanto segue:

pushd popd pushd popd pushd

L'ultimo |_+_| Il comando ci ha riportato alla nostra home directory, quindi la prima e l'ultima voce nello stack sono la tilde (|_+_|), che rappresenta la nostra home directory. Ciò mostra che, sebbene una directory sia già nello stack, verrà aggiunta di nuovo per altri |_+_| comandi.

Nota anche che la voce più a sinistra nello stack, che è la voce aggiunta più di recente, è la tua directory corrente.

Il comando dir

Puoi usare il |_+_| comando, come mostrato di seguito, per visualizzare lo stack di directory:

messaggio non disturbare iphone
popd

Non influisce sullo stack, lo visualizza e basta. Alcune delle opzioni che puoi usare con |_+_| fare riferimento alla posizione delle directory nello stack.

Annuncio pubblicitario

Se vuoi vedere la posizione numerica di ogni directory, puoi usare il |_+_| (verticale) come mostrato di seguito:

dirs -v

Se preferisci vedere il percorso esplicato della tua home directory invece della tilde (|_+_|), aggiungi |_+_| opzione (formato lungo), in questo modo:

pushd

come resettare nintendo 3ds

Aggiunta di una directory allo stack

Come abbiamo visto, quando usi |_+_| comando, fa tre cose: cambia la directory, aggiunge la nuova directory allo stack e visualizza lo stack per te. Puoi usare il |_+_| (nessuna rotazione) per aggiungere una directory allo stack senza modificare la directory corrente.

Ecco il nostro stack di directory:

popd

Ora useremo |_+_| comando con l'opzione -n ​​e pas nel |_+_| directory come parametro. Quindi, controlleremo di nuovo lo stack di directory.

Digitiamo quanto segue:

pushd popd

Il |_+_| directory è stata aggiunta allo stack nello slot 1, che è il secondo posto nello stack. Non può occupare la prima posizione perché lo slot zero è sempre la directory corrente.

Non abbiamo lasciato la directory corrente, |_+_|, quindi non è stata ruotata in un'altra posizione nello stack.

Modifica della directory ruotando lo stack

Puoi usare parametri numerici con |_+_| per spostarsi in qualsiasi directory in uno stack e lo stack ruota quando lo fai. La directory che hai scelto di spostare diventa quindi la prima voce nello stack.

Annuncio pubblicitario

Fai riferimento alle directory nello stack in base al loro numero di posizione. Puoi contare dall'alto o dal basso della pila. Per i numeri positivi, come +3, contare dall'alto; per i numeri negativi, come -2, contare dal basso.

La directory /home/dave/Documents è in posizione tre. Possiamo usare il seguente comando per spostare quella directory:

pushd

Le directory nello stack sopra la directory che abbiamo scelto vengono spostate in fondo allo stack. La nostra directory scelta ora occupa la prima posizione e siamo stati spostati in quella directory.

Se vogliamo passare alla directory in fondo allo stack, possiamo usare il seguente comando:

cd

L'ultima directory viene spostata nel primo slot e tutte le altre vengono spostate in basso nello stack. Siamo cambiati in |_+_| directory.

Il comando popd

Puoi usare il |_+_| comando per rimuovere le directory dallo stack.

Annuncio pubblicitario

Se osserviamo lo stack di directory, possiamo vedere che la directory in posizione 1 è |_+_|. Per rimuoverlo dallo stack, digitiamo quanto segue per passare il numero a |_+_|:

pushd pushd

Il |_+_| directory è stata rimossa e quelli che erano sotto di essa nello stack sono stati spostati in alto di una posizione.

Proprio come possiamo con |_+_|, possiamo contare dal fondo dello stack con |_+_|. Per rimuovere l'ultima directory dallo stack, digitiamo:

vlc come rippare dvd
pushd

Il |_+_| la directory viene rimossa dall'ultima posizione nello stack.

Per cambiare la directory, fai qualcosa e poi torna alla directory precedente, puoi usare |_+_| e |_+_| insieme.

Annuncio pubblicitario

Useremo |_+_| per passare a una directory diversa. Useremo |_+_| per scartare la directory più in alto nello stack e passare alla directory nella seconda posizione. Questa è la directory da cui sei appena uscito, quindi torni nella directory in cui ti trovavi originariamente.

Digitiamo quanto segue:

~ pushd

Abbiamo iniziato nel |_+_| directory, |_+_| nella directory home, quindi |_+_| torna al |_+_| directory.

Rotazione attraverso l'intera pila

Illustreremo come ruotare uno stack con alcune directory nidificate, ma è possibile utilizzare qualsiasi directory in qualsiasi punto del file system.

Il nostro livello più profondo di nidificazione è:

dirs

Dalla home directory, scenderemo progressivamente attraverso ogni directory fino a raggiungere la directory degli articoli. Quindi, esamineremo lo stack di directory.

Digitiamo quanto segue:

pushd -v ~ -l

Quando emetti ripetutamente |_+_| comandi, puoi scorrere all'interno della pila di directory. Se lo fai spesso, |_+_| sarebbe un buon candidato per an alias .

Digita quanto segue:

pushd

IMPARENTATO: Come creare alias e funzioni di shell su Linux

Calpestare la pila

È facile tornare alle vecchie abitudini e usare |_+_| per cambiare directory. Se lo fai, timbra la prima directory nello stack. Questo è inevitabile, poiché il primo slot è riservato alla directory di lavoro corrente, nessuno degli altri cambia posizione.

Per fare ciò, digita quanto segue:

masterizza iso in windows 7
-n pushd /home/dave


Dopo esserti abituato a |_+_| e |_+_| comandi (e, forse, usali per creare alcuni alias), avrai un modo super veloce per saltare tra le directory.

Questo è il motivo per cui stiamo in giro la riga di comando . L'efficienza spacca, giusto?

IMPARENTATO: 37 importanti comandi di Linux che dovresti sapere

Comandi Linux
File catrame · pv · gatto · tac · chmod · presa · differenza · sed · Con · uomo · spinto · popd · fsck · testdisk · seguito · fd · pandoc · cd · $PATH · awk · giuntura · jq · piega · unico · journalctl · coda · stato · ls · fstab · buttato fuori · meno · chgrp · chown · rev · Guarda · stringhe · genere · rinominare · cerniera lampo · decomprimere · montare · smontare · installare · fdisk · mkfs · rm · rmdir · rsync · df · gpg · noi · nano · mkdir · a partire dal · ln · toppa · convertire · rclone · brandello · SRM
Processi alias · schermo · superiore · Bello · renice · progresso · strace · sistema · tmux · chsh · storia · in · lotto · libero · quale · dmesg · usermod · ps · chroot · xargs · tty · mignolo · lsof · vmstat · tempo scaduto · parete · · uccisione · dormire · sudo · il suo · volta · gruppoaggiungi · usermod · gruppi · lshw · spegnimento · riavviare · fermare · spegni · passwd · lscpu · crontab · Data · bg · fg
Rete netstat · ping · traceroute · ip · ss · chi è · fail2ban · bmon · voi · dito · nmap · ftp · arricciare · wget · chi · chi sono · In · iptables · ssh-keygen · ufw

IMPARENTATO: I migliori laptop Linux per sviluppatori e appassionati

LEGGI SUCCESSIVO