Peut-être vaut-il mieux utiliser des liens
Lien symbolique
Lien symbolique ou symbolique (fichiers ou répertoires, plus flexible et auto-documenté)
# Source Link
ln -s /home/jake/doc/test/2000/something /home/jake/xxx
Lien physique
Lien physique (fichiers uniquement, moins flexible et non auto-documenté)
# Source Link
ln /home/jake/doc/test/2000/something /home/jake/xxx
Comment créer un lien vers un répertoire
Astuce :Si vous n'avez pas besoin de voir le lien dans votre maison, vous pouvez commencer par un point.; alors il sera caché par défaut alors vous pourrez y accéder comme
cd ~/.myHiddelLongDirLink
Il existe une option shell cdable_vars
:
cdable_vars
Si ceci est défini, un argument aucd
La commande intégrée qui n'est pas un répertoire est supposée être le nom d'une variable dont la valeur est le répertoire vers lequel changer.
Vous pouvez ajouter ceci à votre .bashrc
:
shopt -s cdable_vars
export myFold=$HOME/Files/Scripts/Main
Notez que j'ai remplacé le tilde par $HOME
; les guillemets empêchent l'expansion du tilde et Bash se plaindrait qu'il n'y a pas de répertoire ~/Files/Scripts/Main
.
Vous pouvez maintenant l'utiliser comme suit :
cd myFold
Non $
obligatoire. C'est tout l'intérêt, en fait - comme indiqué dans d'autres réponses, cd "$myFold"
fonctionne sans l'option shell. cd myFold
fonctionne aussi si le chemin en myFold
contient des espaces, aucun guillemet requis.
Cela fonctionne généralement même avec l'auto-complétion des onglets comme le _cd
fonction en bash_completion
vérifie si cdable_vars
est défini - mais toutes les implémentations ne le font pas de la même manière, vous devrez donc peut-être sourcer bash_completion
à nouveau dans votre .bashrc
(ou modifiez /etc/profile
pour définir l'option du shell).
D'autres shells ont des options similaires, par exemple Zsh (cdablevars
).
Puisqu'il s'agit d'une variable d'environnement (alias a une définition différente dans bash
), vous devez l'évaluer avec quelque chose comme :
cd "${myFold}"
ou :
cp "${myFold}/someFile" /somewhere/else
Mais je trouve en fait plus facile, si vous voulez juste la facilité de basculer dans ce répertoire, pour créer un réel alias (dans l'un des bash
fichiers de démarrage comme .bashrc
), pour que je puisse enregistrer les frappes :
alias myfold='cd ~/Files/Scripts/Main'
Ensuite, vous pouvez simplement utiliser (sans le cd
):
myfold
Pour vous débarrasser de la définition, vous utilisez unalias
. La transcription suivante montre tous de ceux-ci en action :
pax> cd ; pwd ; ls -ald footy
/home/pax
drwxr-xr-x 2 pax pax 4096 Jul 28 11:00 footy
pax> footydir=/home/pax/footy ; cd "$footydir" ; pwd
/home/pax/footy
pax> cd ; pwd
/home/pax
pax> alias footy='cd /home/pax/footy' ; footy ; pwd
/home/pax/footy
pax> unalias footy ; footy
bash: footy: command not found