Puis-je raccourcir la saisie nécessaire pour `cd` dans certains répertoires bien connus

11

Je me retrouve à ouvrir un terminal puis à rentrer beaucoup dans le même répertoire dont le chemin est très long.

Cela signifie que je fais beaucoup de CD et que j'utilise beaucoup l'onglet pour accélérer les choses.

Ce serait génial si je pouvais avoir une sorte de lien vers ce répertoire, puis juste un cd vers celui-ci afin que je sois rapidement dans le répertoire profond imbriqué.

Est-ce possible?

Breako Breako
la source
1
J'ai plusieurs scripts (bash) qui effectuent de petites tâches (liées) comme le cd'ing à un projet github et l'exécution git status. J'ai aussi quelques alias dans mon .bash_profile. Pas exactement ce que vous demandez, mais lié.
keyser

Réponses:

24

Voici la façon de traiter cdfréquemment des chemins complexes .

mkdir ~/Links
ln -s /complexpath/there ~/Links

cela créera le lien symbolique

~/Links/there

Pour utiliser ce nouveau Linksrépertoire efficacement, si votre shell de connexion est bash simplement inclure cette commande dans votre ~/.profile(qui est utilisé par toutes les coquilles de style Bourne bash, ksh, zsh...):

CDPATH=~/Links:.
export CDPATH

Cela signifie que pour chaque cd, votre shell cherchera dans 2 répertoires pour trouver un nom de chemin local:

~/Links
.

Vous n'aurez pas besoin de redémarrer votre session pour la tester, exécutez simplement:

. ~/.profile

ce qui signifie juste lire mon ~/.profile. (Vous n'aurez pas à le mettre dans votre ~/.bashrccar il n'est pas nécessaire de répéter la même initialisation de variable lorsque vous ne le changez pas.)

Une fois que vous l'avez testé, vous pourrez redémarrer votre session;).

Désormais, à chaque fois que vous voudrez vous rendre, therevous devrez taper:

cd there
dan
la source
C'est la solution générale la plus élégante que j'ai vue. Je cdoracd $ORACLE_HOME
crée
Quelqu'un serait-il intéressé par un simple équivalent via l'interface du Finder?
dan
11

La définition d'un alias est un moyen très simple d'avoir une abréviation courte pour une commande plus longue. Une fois vos alias corrects, vous pouvez créer une section dans votre fichier .bashrc (ou autre fichier de démarrage) afin de ne pas avoir à retaper ces alias pour chaque nouveau shell que vous démarrez:

dans .bashrc:

alias ws4='ssh qsv-rhws4'
alias httpdlog='cd /var/log/httpd/'
alias EC2='ssh -i BMTestEC2.pem [email protected]'

etc.

Déconnectez-vous et reconnectez-vous (ou exécutez simplement . ~/.bashrc) et maintenant vous pouvez simplement taper httpdloget il exécute le cd. Ou ws4et il exécute en fait la commande ssh etc.

Cela supprime la nécessité de créer (une grande quantité de) liens vides qui feront que votre répertoire personnel ressemble également à un gâchis.

Dromendokter
la source
10

Essayez d'utiliser le saut automatique ou z .

Après avoir installé l'un des deux, vous tournez cdcomme d'habitude et ils apprennent vos répertoires les plus visités et vous permettent d'y accéder en tapant seulement une partie du chemin:

$ cd /very/long/path/foobar
$ cd
$ z foobar
$ echo $PWD
/very/long/path/foobar

Je préfère z des deux.

Tyilo
la source
Je ne sais pas pour le saut automatique mais le script "z" est génial!
Kris
7

Je recommande fortement fasd qui est similaire à autojump et z mais mieux à mon humble avis. Depuis le site Web:

Fasd (prononcé similaire à "rapide") est un booster de productivité en ligne de commande. Fasd offre un accès rapide aux fichiers et répertoires pour les shells POSIX. Il est inspiré par des outils comme autojump, z et v. Fasd garde une trace des fichiers et répertoires auxquels vous avez accédé, afin que vous puissiez les référencer rapidement dans la ligne de commande.

Le nom fasd provient des alias suggérés par défaut f (fichiers), a (fichiers / répertoires), s (afficher / rechercher / sélectionner), d (répertoires).

Fasd classe les fichiers et les répertoires par "fréquence", c'est-à-dire par "fréquence" et "récence". Le terme "frecency" a été inventé pour la première fois par Mozilla et utilisé dans Firefox (lien).

Chauncey Garrett
la source
4

Vous pouvez également créer un alias. Jetez ce qui suit dans quelque chose comme .bashrc ou .aliases

alias shortcut='cd ~/path/to/deep/deep/deep/directory/'

Assurez-vous ensuite que le fichier dans lequel il se trouve est bien sourced. Mes alias sont dans .bashrc, que je source avec cette ligne dans .bash_profile: source ~/.bashrc

Amory
la source
2

L'ajout de liens symboliques pratiques est bien pour un répertoire spécial ou deux, mais très rapidement, cela devient difficile à gérer. Une bien meilleure solution consiste à utiliser la variable d'environnement CDPATH, disponible sur bashet d'autres shells à cette fin.

CDPATHest une liste (comme PATH) d' espaces séparés par deux points pour rechercher un nom de répertoire. Il peut contenir des chemins d'accès absolus et relatifs. J'ai le mien réglé sur quelque chose comme export CDPATH=".:..:$HOME/work/repos:$HOME/projects:<etc>".

Avec cette configuration, je peux taper cd pdftools de n'importe où et cela me prendra ~/projects/pdftools. (Avec un lien symbolique, je dois taper cd ~/pdftoolssi je n'étais pas dans mon répertoire.) Je peux aussi raccourci dans les sous - répertoires: cd pdftools/bin.

Le ..dans mon CDPATHme permet de taper cd sisterdirau lieu de cd ../sisterdir, etc. Comme vous pouvez vous y attendre, lorsque je crée de nouveaux répertoires n'importe où dans, CDPATHils seront automatiquement trouvés par cd- pas besoin de créer de nouveaux liens symboliques ou alias.

Cette fonctionnalité devient encore plus agréable si vous utilisez le bash_completionfichier distribué, par exemple, avec les systèmes Debian. Il n'est pas venu avec ma boîte OS X, j'ai donc récupéré une copie et cela fonctionne très bien. (Obtenez avec brew, ou tout simplement le télécharger manuellement ici .) Ce fichier définit des améliorations à la fin de commande, afin que je puisse saisir cd pdf<TAB>et le pdftoolsrépertoire a été trouvé et développé de partout sur CDPATH.

alexis
la source
1

Bien sûr: créez un lien symbolique

ln -s /some/really/long/path/to/somewhere/ ~/shortcut
cd ~/shortcut
dstarh
la source
1

J'aime utiliser bashmarks pour créer facilement des "signets vers des répertoires" à la volée.

Voir le readme sur: https://github.com/huyng/bashmarks

Remarque: vous aurez besoin de git installé afin de suivre le processus d'installation en trois étapes de bashmark: http://git-scm.com/download/mac

Bonne chance!

Kye Hittle
la source
1

Alternativement, vous pouvez également essayer d'installer la coquille de poisson.

http://fishshell.com/

Cela a une excellente prédiction pour les commandes. Il vous permet également de saisir intelligemment la casse sans aucune erreur.

L'inconvénient de fish est qu'il a son propre langage de script et qu'ils ne sont pas compatibles avec bash.

kumar0us
la source
1

Tout ce que je fais est de taper "cd" puis de faire glisser le dossier du Finder vers le terminal qui colle dans le chemin complet. Peut-être pas aussi élégant, mais fonctionne pour tous les dossiers vs quelques raccourcis pré-enregistrés?

Ewan Makepeace
la source