Le poussé et popd Les commandes sont des fonctionnalités intégrées du shell Bash pour vous aider à "marquer" des répertoires pour une navigation rapide entre les emplacements de votre disque dur. Vous pensez peut-être déjà que le terminal est un moyen incroyablement rapide de naviguer sur votre ordinateur ; en quelques pressions de touches, vous pouvez aller n'importe où sur votre disque dur, votre stockage connecté ou votre partage réseau. Mais cette vitesse peut s'effondrer lorsque vous vous retrouvez à faire des allers-retours entre les répertoires ou lorsque vous êtes "perdu" dans votre système de fichiers. Ce sont précisément les problèmes pushd et popd peut vous aider à résoudre.
pousser
Dans sa forme la plus basique, pushd ressemble beaucoup à cd . Il vous emmène d'un répertoire à un autre. Supposons que vous ayez un répertoire appelé one , qui contient un sous-répertoire appelé deux , qui contient un sous-répertoire appelé trois , etc. Si votre répertoire de travail actuel est un , vous pouvez alors passer à deux ou trois ou n'importe où avec le cd commande :
$ pwd
un
$ cd deux/trois
$ pwd
trois
Vous pouvez faire la même chose avec pushd :
$ pwd
un
$ pushd deux/trois
~/un/deux/trois ~/un
$ pwd
trois
Le résultat final de pushd est identique à cd , mais il existe un résultat intermédiaire supplémentaire :pushd fait écho à votre répertoire de destination et à votre point d'origine. Ceci est votre pile de répertoires , et c'est ce qui fait pushd uniques.
Piles
Une pile, dans la terminologie informatique, fait référence à une collection d'éléments. Dans le cadre de cette commande, les éléments sont les répertoires que vous avez récemment visités en utilisant le pushd commande. Vous pouvez le considérer comme un historique ou un fil d'Ariane.
Vous pouvez vous déplacer partout dans votre système de fichiers avec pushd; à chaque fois, vos emplacements précédents et nouveaux sont ajoutés à la pile :
$ pushd quatre
~/un/deux/trois/quatre ~/un/deux/trois ~/un
$ pushd cinq
~/un/deux/trois/quatre/ cinq ~/un/deux/trois/quatre ~/un/deux/trois ~/un
Naviguer dans la pile
Une fois que vous avez créé une pile, vous pouvez l'utiliser comme une collection de signets ou de points de passage rapides. Par exemple, supposons que pendant une session, vous fassiez beaucoup de travail dans le ~/un/deux/trois/quatre/cinq structure de répertoires de cet exemple. Vous savez que vous avez été un récemment, mais vous ne vous souvenez plus où il se trouve dans votre pushd pile. Vous pouvez voir votre pile avec le +0 (c'est un signe plus suivi d'un zéro) argument, qui indique pushd de ne pas changer de répertoire dans votre pile, mais invite également pushd pour faire écho à votre pile actuelle :
$ pushd +0
~/un/deux/trois/quatre ~/un/deux/trois ~/un ~/un/deux/trois/quatre/cinq
Alternativement, vous pouvez afficher la pile avec les répertoires commande, et vous pouvez voir le numéro d'index pour chaque répertoire en utilisant la -v choix :
$ dirs -v
0 ~/un/deux/trois/quatre
1 ~/un/deux/trois
2 ~/un
3 ~/un/ deux/trois/quatre/cinq
La première entrée de votre pile est votre emplacement actuel. Vous pouvez le confirmer avec pwd comme d'habitude :
$ pwd
~/un/deux/trois/quatre
Commençant à 0 (votre emplacement actuel et la première entrée de votre pile), la seconde élément dans votre pile est ~/one , qui est votre destination souhaitée. Vous pouvez avancer dans votre pile en utilisant le +2 choix :
$ pushd +2
~/un ~/un/deux/trois/quatre/cinq ~/un/deux/trois/quatre ~/un/deux/trois
$ pwd
~/un
Cela change votre répertoire de travail en ~/one et a également déplacé la pile de sorte que votre nouvel emplacement soit à l'avant.
Vous pouvez également reculer dans votre pile. Par exemple, pour accéder rapidement à ~/un/deux/trois étant donné l'exemple de sortie, vous pouvez reculer d'un, en gardant à l'esprit que pushd commence par 0 :
$ pushd -0
~/un/deux/trois ~/un ~/un/deux/trois/quatre/cinq ~/un/deux/trois/quatre
Ajout à la pile
Vous pouvez continuer à naviguer dans votre pile de cette manière, et elle restera une liste statique de vos répertoires récemment visités. Si vous souhaitez ajouter un répertoire, indiquez simplement le chemin du répertoire. Si un répertoire est nouveau dans la pile, il est ajouté à la liste comme prévu :
$ pushd /tmp
/tmp ~/un/deux/trois ~/un ~/un/deux/trois/quatre/cinq ~/un/deux/trois/quatre
Mais s'il existe déjà dans la pile, il est ajouté une seconde fois :
$ pushd ~/un
~/un /tmp ~/un/deux/trois ~/un ~/un/deux/trois/quatre/cinq ~/un/deux/trois/quatre
Bien que la pile soit souvent utilisée comme une liste de répertoires auxquels vous souhaitez accéder rapidement, il s'agit en réalité d'un véritable historique de vos déplacements. Si vous ne voulez pas qu'un répertoire soit ajouté de manière redondante à la pile, vous devez utiliser le +N et -N notation.
Supprimer des répertoires de la pile
Votre pile n'est évidemment pas immuable. Vous pouvez l'ajouter avec pushd ou en supprimer des éléments avec popd .
Par exemple, supposons que vous venez d'utiliser pushd pour ajouter ~/un à votre pile, faisant ~/un votre répertoire de travail actuel. Pour supprimer le premier élément (ou "zéro", si vous préférez) :
$ pwd
~/un
$ popd +0
/tmp ~/un/deux/trois ~/un ~/un/deux/trois/quatre/cinq ~/un /deux/trois/quatre
$ pwd
~/un
Bien sûr, vous pouvez supprimer n'importe quel élément, en commençant votre décompte à 0 :
$ pwd ~/un
$ popd +2
/tmp ~/un/deux/trois ~/un/deux/trois/quatre/cinq ~/un/deux/trois/quatre
$ pwd ~/un
Vous pouvez également utiliser popd à l'arrière de votre pile, en commençant à nouveau par 0. Par exemple, pour supprimer le répertoire final de votre pile :
$ popd -0
/tmp ~/un/deux/trois ~/un/deux/trois/quatre/cinq
Lorsqu'il est utilisé comme ceci, popd ne change pas votre répertoire de travail. Il manipule uniquement votre pile.
Naviguer avec popd
Le comportement par défaut de popd , sans arguments, consiste à supprimer le premier élément (zéro) de votre pile et à faire de l'élément suivant votre répertoire de travail actuel.
Ceci est particulièrement utile en tant que commande de changement rapide, lorsque vous travaillez, par exemple, dans deux répertoires différents et que vous avez juste besoin de vous éloigner un instant vers un autre emplacement. Vous n'avez pas à penser à votre pile de répertoires si vous n'avez pas besoin d'un historique élaboré :
$ pwd
~/un
$ pushd ~/un/deux/trois/quatre/cinq
$ popd
$ pwd
~/unVous n'êtes pas non plus obligé d'utiliser pushd et popd en succession rapide. Si vous utilisez pushd pour visiter un endroit différent, puis être distrait pendant trois heures à la recherche d'un bogue ou à la recherche, vous trouverez votre pile de répertoires attendant patiemment (sauf si vous avez terminé votre session de terminal) :
$ pwd ~/one
$ pushd /tmp
$ cd {/etc,/var,/usr} ; sleep 2001
[...]
$ popd
$ pwd
~/onePushd et popd dans le monde réel
Le poussé et popd les commandes sont étonnamment utiles. Une fois que vous les aurez apprises, vous trouverez des excuses pour les utiliser à bon escient et vous vous familiariserez avec le concept de la pile de répertoires. Se familiariser avec pushd c'est ce qui m'a aidé à comprendre git stash , qui n'a aucun rapport avec pushd mais similaire dans l'intangibilité conceptuelle.
Utiliser pushd et popd dans les scripts shell peut être tentant, mais en général, il est probablement préférable de les éviter. Ils ne sont pas portables en dehors de Bash et Zsh, et ils peuvent être obtus lorsque vous relisez un script (pushd +3 est moins clair que cd $HOME/$DIR/$TMP ou similaire).
Mis à part ces avertissements, si vous êtes un utilisateur régulier de Bash ou de Zsh, vous pouvez et devriez essayer pushd et popd .