Est-ce une bonne idée d'utiliser l'alias suivant:
cd() {
pushd $1;
}
en bash?
Je pense que cela serait très utile, car je peux alors utiliser une série de popd
s au lieu d’une cd -
seule fois.
Y a-t-il des cas où cela pourrait être un problème?
bash
shell
shell-script
alias
Lazer
la source
la source
alias cd=pushd
?pd
vous Êtes-vous le seul utilisateur et administrateur de votre système?autopushd
Réponses:
Personnellement, je les ai dans mon panier et les utilise tout le temps:
Vous pouvez ensuite naviguer sur la ligne de commande un peu comme un navigateur.
cd
change le répertoire.back
va au répertoire précédent que vous avezcd
édité. Etflip
se déplacera entre les répertoires actuel et précédent sans les extraire de la pile de répertoires. Globalement, cela fonctionne très bien.Le seul problème que je connaisse est le fait qu’il s’agit alors d’un ensemble de commandes auxquelles je suis complètement habitué, mais qui n’existent pas sur la machine de quelqu'un d’autre. Donc, si je dois utiliser la machine de quelqu'un d'autre, cela peut être un peu frustrant. Si vous avez l'habitude d'utiliser
pushd
etpopd
directement, vous n'avez pas ce problème. Et bien que si vous dites simplement quecd
nonpopd
, vous n'aurez pas le problème deback
ne pas exister, vous aurez toujours le problème quicd
ne fait pas tout à fait ce que vous attendiez sur d'autres machines.Je tiens toutefois à souligner que votre implémentation particulière de
cd
ne fonctionne pas vraimentcd
dans le sens où la normalecd
ira elle-même vers votre répertoire personnel, mais pas le vôtre. La version que j'ai ici n'a pas ce problème. Mine s’ajoute égalementDIRSTACK
au recto de l’dirs
impression, mais c’est plus une question de goût personnel que d’autre chose.Donc, comme je l'ai dit, j'utilise ces alias tout le temps et je n'ai aucun problème avec eux. C'est juste que ça peut être un peu frustrant de devoir utiliser une autre machine et ensuite de la trouver pas là (ce qui ne devrait pas être surprenant, mais c'est une de ces choses que vous utilisez si souvent que vous n'y pensez pas de sorte qu’ils ne fonctionnent pas comme vous en avez l'habitude peut encore être surprenant).
la source
<C-o>
pourpopd
pour une expérience authentique.Ce n'est pas une réponse directe à la question, mais je suis tombé amoureux de la fenêtre d'historique des répertoires dans 4DOS. À tel point que j'ai écrit ma propre version pour Linux (et Cygwin). Je n'ai jamais eu l'idée d'en faire un utilitaire facile à installer, mais si vous connaissez bien une invite Bash, son exécution ne devrait pas être si difficile. Votre question m'a inspiré de le mettre dans un dépôt Git et de le télécharger sur GitHub: dirhistory .
En gros, il s’agit d’un démon qui collecte les modifications de répertoires de tous vos shells et d’un programme Cdk qui affiche l’historique et vous permet de choisir n’importe quel répertoire dans lequel basculer (pour que vous ne soyez pas limité à une pile). Je le trouve vraiment utile et le lie à Ctrl-PageUp, tout comme 4DOS. (J'ai même corrigé PuTTY pour qu'il envoie Ctrl-PageUp à Bash.)
la source
Pour moi, pushd / popd / dirs est utile, mais manque. J'ai donc créé un «wrapper» autour de ceux-ci appelé «navd», implémenté comme un ensemble de 20 alias. (L'une d'entre elles est une fonction, en réalité.) Le code est ci-dessous, mais voici d'abord une brève explication. (Une bonne chose à propos de "navd" et du travail sur les machines d'autres personnes: il existe une forme "sans installation" pour l'exécuter: en tant qu'option d'installation, vous pouvez simplement coller les commandes qui implémentent "navd" à l'invite bash et pendant la durée de cette session bash pour cette machine, navd fonctionnera. Cela donne une empreinte de pied nulle dans le système de fichiers, mais il s’agit d’une installation temporaire. Mettez ces commandes dans .bashrc pour une "vraie" installation, de cours.)
Fonctionnalités:
N'importe laquelle des dix-neuf commandes navd <N> fait pivoter la pile de sorte que le répertoire qui devient le répertoire en cours s'affiche également à l'avant de la pile. Les valeurs <N> positives trouvent un répertoire comptant à partir de la gauche, l’indexation commençant à zéro. Les valeurs <N> négatives trouvent un répertoire à partir de la droite, avec une indexation commençant à -1. (Ceci suit la convention sur la manière dont les tableaux-index peuvent être utilisés en Java et dans d'autres langages.)
Remarque: Toute commande "navd" affiche la même pile que "pushd" et "dirs" - mais l'affiche SANS l' entrée la plus à gauche que "dirs" afficherait (cette entrée n'étant pas vraiment sur la pile - elle le répertoire en cours et avec "dirs" que l' entrée la plus à gauche change si une commande cd est entrée). (La commande "cd <chemin>" n'affecte pas le comportement de navd bien qu'elle affecte certainement le comportement de pushd / dirs / popd. Aussi ... J'aime utiliser "cd -" pour "revenir" une fois à une répertoire que je viens de naviguer, et "cd -" n’affecte pas non plus le comportement de navd.)
Bonus: Il peut y avoir 19 autres alias ne faisant PAS pivoter la pile, mais se contentant de changer dir à l'endroit indiqué sur la pile.
2e bonus: "navh" affiche les commandes navd <chemin> de l'historique, pour charger facilement la pile avec cut-n-paste. (Chaque élément est répertorié une seule fois, même s'il figure plusieurs fois dans l'historique, et la liste est triée. De plus, les entrées peuvent être placées dans un fichier $ HOME / .navhignore pour empêcher ces entrées exactes d'apparaître dans la liste navh.)
Trois comportements clés:
Si vous effacez la pile et répétez une commande spécifique "navd <chemin>", ce chemin ira sur la pile. C'est ce que je veux et ce à quoi je m'attends ... mais pushd ne le fait pas - il met le répertoire actuel sur lequel vous naviguez, AWAY FROM, sur la pile - de sorte que l'effet sur la pile est variable (semble imprévisible) lorsque vous répétez la commande .
"navd <chemin>" ne mettra pas deux fois le même chemin sur la pile.
"navd <chemin>" se met dans l'historique des commandes avec le chemin absolu même si le chemin relatif a été saisi pour la commande.
Pour moi, les trois derniers comportements décrits rendent l'utilisation d'une commande "navd <chemin>" de l'historique beaucoup plus utile que l'utilisation d'un "pushd <chemin>" de l'historique. Je peux vraiment réutiliser l'histoire pour me déplacer . Et quand je le fais, je ne "gâte" pas mon stack.
Si vous le pouvez et que vous souhaitez envelopper votre cerveau, vous pouvez utiliser navd ou pushd / dirs / popd. Les deux utilisent la même pile; juste avec un style différent. Par exemple, utilisez "popd" pour supprimer des éléments de la pile "navd" ou utilisez "dirs -c" pour vider la pile de navd.
Pensez à pushd / dirs / popd comme "comment revenir sur mes pas?".
Pensez à navd comme "comment puis-je conserver un ensemble de répertoires favoris et basculer facilement entre eux?".
Collez le texte suivant dans une fenêtre de terminal et vous pouvez immédiatement commencer à utiliser navd pendant la durée de cette session. C'est tout le code qui existe pour cette fonctionnalité.
Ces alias sont basés sur des commandes "bash". Un soin particulier est pris pour préserver le comportement normal de "cd -". (Souvent, j'utilise "cd -" au lieu de m'embêter avec pushd ou navd - parce que "cd -" est très pratique pour revenir à la dernière "place" où vous étiez, ou pour basculer entre seulement 2 places et cela fonctionne partout sans installation.)
Bien entendu, ces commandes peuvent être placées dans le fichier .bashrc pour une installation plus permanente de celles-ci.
la source
Voici encore une autre solution qui pourrait vous plaire. J'ai écrit ceci après avoir joué avec la solution de @cjm. Il utilise la commande dialog pour créer un menu de type ncurses à partir de la sortie de dirs. La sélection d'un élément amènera ce répertoire en haut de la pile et y sera inséré. Cela a l'avantage sur dirhistory de donner à chaque émulateur de terminal son propre tampon d'historique de répertoires, et d'être un peu plus facile à installer.
Pour installer: Une fois que vous avez assigné alias cd à pushd, installez la boîte de dialogue, puis mettez cette fonction dans votre base:
J'aime cela un peu mieux que d'exécuter dirs -v, puis d'exécuter une autre commande pour faire apparaître ou cd dans le répertoire que je veux. Les menus de dialogue peuvent également être hautement personnalisés via sa boîte de dialogue.
Donc, pour répondre à votre question, oui, je pense que l'aliasing pushd to cd est une excellente idée. Il est peu probable que vous rencontriez des problèmes de débordement de mémoire tampon si vous redémarrez votre ordinateur régulièrement, du moins pour les mises à jour. Bien que je sois prudent en utilisant le cd lors de la rédaction du script; Un cd dans une boucle while pourrait potentiellement causer des problèmes de débordement de mémoire tampon. Je ne sais pas ce qui contrôle la taille du tampon dirs / pushd.
la source