Je me retrouve souvent à devoir parcourir quelques répertoires de mon dossier personnel et je me lasse de les écrire. J'aimerais une approche plus rapide, qui serait traditionnellement un lien symbolique.
Cependant, je ne veux pas encombrer mon répertoire personnel avec des dizaines de liens symboliques. Je pourrais créer des ~/links/
répertoires et Clutter il avec des liens symboliques, mais il est toujours laid. En outre, je souhaiterais peut-être créer des liens symboliques qui changent chaque jour (définis dans .bashrc) pour passer au répertoire actuel.
Existe-t-il un moyen d'alias efficace un lien symbolique, créant quelque chose qui sera reconnu comme un lien pour une navigation rapide, mais n'apparaîtra pas réellement lorsque je ferai un ls
de mon répertoire personnel et ne durera pas au-delà de la session en cours?
la source
cd -
volontécd
dans le dernier répertoire était précédemment. Par conséquent, si vous le faites deux fois, vous reviendrez à l'endroit où vous avez commencé ... très bien pour la situation "oh j'ai oublié de modifier someFile.txt à l'emplacement précédent" => Simplementcd -
:, modifiez someFile.txtcd -
Réponses:
Vous pouvez utiliser la complétion de tabulation. Par défaut sur de nombreuses distributions Linux, bash est configuré de sorte que lorsque vous appuyez sur la touche [TAB], vous obtenez une liste de correspondances possibles, ou s'il n'y a qu'une seule correspondance, tout est rempli. Pour cd, il s'agit normalement d'une liste de sous-répertoires du répertoire de travail actuel. Vous pouvez remplacer cela, mais je suggère plutôt de créer un alias, comme
jd
pour "jump directory":puis, définissant les "signets" que vous souhaitez compléter pour jd. Regardez la page de manuel bash pour beaucoup plus d'options (y compris la génération automatique des résultats à la volée à partir d'une commande ou d'une fonction), mais le moyen le plus simple est juste une liste de mots, avec
-W
:complete -W "/ srv / www ~ / tmp ~ / work" jd
Maintenant, tapez
jd
et appuyez sur [TAB], et vous verrez vos "signets". Tapez n'importe quelle partie ambiguë, puis appuyez sur [TAB] pour terminer. (Dans ce qui précède, le~
s se développe dans mon répertoire personnel, donc le premier [TAB] me donne un/
, et si je frappew
et [TAB] à nouveau,/srv/www
est rempli.)Bien sûr, mettez cela
~/.bash_profile
pour le faire persister.Ou, nous pouvons prendre cela au niveau suivant. Créez un répertoire
~/.shortcuts
- en commençant par un point, il sera masqué et ne créera pas votre joli répertoire personnel propre - et remplissez-le avec des liens symboliques vers vos répertoires souhaités. Ensuite, mettez ceci dans votre ~ / .bash_profile:Cela définit une complétion légèrement plus compliquée dans la
_list_shortcuts
construction de la liste des noms, et faitjd
être une fonction plutôt qu'un simple alias, car nous voulons qu'il agisse différemment de justecd
. Le-P
drapeau luicd
permet de résoudre les liens symboliques, de sorte que tout devient une magie transparente. Vos noms de raccourcis n'ont même pas à correspondre aux cibles.Donc:
Et, pour une dose supplémentaire de fantaisie, faites la
jd
liste de tous vos raccourcis lorsqu'ils sont exécutés sans aucun paramètre:Remarque: j'utilise
compgen -W $( cmd )
au lieu decompgen -C 'cmd'
car ce dernier ne fonctionne jamais pour moi et je ne comprends pas pourquoi. Cela pourrait être une nouvelle question pour moi. :)la source
Les alias de shell ont la fonctionnalité que vous pouvez faire (une certaine) complétion de nom sur eux (généralement liés à tab). Alternativement, vous pouvez utiliser la
CDPATH
fonctionnalité, qui "récemment" (au cours des 5 à 6 dernières années) a été améliorée pour prendre en charge l'achèvement de nom. Si cela fonctionne pour vous, cela a l'avantage que ce que vous saisissez est le nom réel du répertoire plutôt qu'un mnémonique pour celui-ci.Selon le manuel bash
Lectures complémentaires:
la source
CDPATH
variable d'environnement, merci. Je pourrais ajouter mongit_repos
répertoire à cette variable ....Pour les répertoires que vous fréquentez souvent, mais ne changez pas quotidiennement, une autre option consiste simplement à avoir plusieurs
alias
commandes dans votre.bashrc
fichier:Un ami en a environ 50; J'en ai une poignée; rapide et facile. Juste
changer le répertoire en / u01 / app / oracle
la source
Je recommande
pushd
etpopd
.Personnellement, je les trouve pratiques lors de travaux de développement / lecture de code source, lorsque plusieurs répertoires sont impliqués.
Ils implémentent efficacement une structure de pile / LIFO, où vous POUSSEZ un répertoire (
pushd
), et la prochaine commande de répertoire POP (popd
) le récupère.Donc, à l'intérieur d'un répertoire, vous feriez:
Et quand vous avez besoin de le récupérer, vous le faites
Vous pouvez effectuer plusieurs opérations
pushd
et effectuer les opérations correspondantespopd
ultérieurement pour revenir aux répertoires.Je vais laisser ici un lien.
http://www.eriwen.com/bash/pushd-and-popd/
la source
popd
beaucoup. Je remplis madirs
liste (qui est remplie depushd
commandes) avec tous les répertoires que je veux visiter / travailler pendant ce laps de temps, puis je courspushd +1
. Ensuite, je peux parcourir les répertoires avec un simple!pu
qui est très rapide. (Notez que sur Ubuntu et CentOS,pushd
est la seule commande disponible sur une installation propre qui commence parpu
.)Vous pouvez simplement les mettre en tant que variables dans votre
~/.bashrc
, puis elles ne sont plus qu’à l’$
écart.la source
La réponse évidente est les variables , ces choses symboliques dans le shell qui représentent d'autres choses, de la même manière que les liens symboliques dans le système de fichiers.
Dans tout shell décent, vous obtenez l' Tabachèvement des noms de variables, ce qui aide davantage.
la source