Je fais beaucoup de travail dans Magento, tout comme beaucoup de gens avec qui je travaille, et ça devient ennuyeux de devoir taper:
cd ../../../../../../
Pour ne trouver que quelques répertoires dans votre dossier racine 'httpdocs', j'essaie donc de créer un script qui suit ce pseudo-code:
while lowest level directory != httpdocs
cd ../
end while;
Cela semble assez simple, je suppose que je devrais faire une sorte de grep pour vérifier si la dernière partie du répertoire de travail actuel est httpdocs, sinon continuer à monter d'un niveau jusqu'à ce qu'il soit vrai.
J'ai cherché à apprendre bash pour cela, bien qu'il semble qu'il y ait déjà quelque chose de similaire qui soit similaire, et la syntaxe me laisse perplexe sans fin.
la source
cd -
après pour revenir là où vous étiez.J'ai une fonction appelée
upto
dans mon .bashrc qui vous permet d'accéder à n'importe quel répertoire du chemin actuel par son nom:J'ai également l'achèvement de cette fonction, de sorte qu'elle me donne des noms de répertoire valides et l'achèvement lorsque j'appuie sur l'onglet:
De plus, j'ai une autre fonction
jd
qui me permet de sauter dans n'importe quel répertoire en dessous du répertoire actuel:Exemple:
la source
upto httpdocs
.jd
ne semble pas fonctionner dans tous les cas, pourriez-vous expliquer comment cela fonctionne?**
). Pour activer cette fonctionnalité dans votre shell bash, utilisezshopt -s globstar
.jd
fonction, voir gist.github.com/Rob--W/5888648 . Je ne l'ai testé qu'avec Bash 4.2.45, donc YMMV.La fonction bash la plus simple à laquelle vous pouvez
.bashrc
penser (simple car elle n'utilise pas de boucles ou de processus externes) est:Celui - ci utilise la substitution modèle d' expansion des paramètres pour tout remplacer après
/httpdocs/
dans$PWD
avec `/ httpdocs. Cela semble très compliqué car nous devons échapper aux barres obliques dans le chemin pour les différencier des barres obliques dans la syntaxe d'extension bash. De plus, n'échappez pas aux barres obliques dans la chaîne de remplacement, de sorte qu'il semble également incohérent.S'il n'y en a pas
/httpdocs/
dans le chemin en cours, aucune substitution ne sera effectuée et il ne fera que passer au répertoire en cours.Par exemple, la substitution sera remplacée
/a/b/c/httpdocs/e/f/g
par/a/b/c/httpdocs
etcd
dans ce répertoire.La fonction doit se trouver dans votre environnement shell actuel (en tant que fonction ou alias), car un processus enfant ne peut pas modifier le répertoire actuel de son parent. C'est pourquoi je dis de le mettre dans votre
.bashrc
et non dans un script shell.la source
Vous pouvez également mettre quelque chose comme ça dans votre profil:
La simple saisie vous
cdh
amènera auhttpdocs
répertoire le plus haut de votre chemin actuel.la source
Cela ne résout pas complètement votre problème, mais cela vous fera économiser
cd ../../../../../../
un peu. J'ai emprunté ceci au post de l' utilisateur inconnu ici .en haut N
sauter N répertoires dans l'arborescence des répertoires
Au lieu de taper
vous venez de taper
et un
vous ramènera
Mettez la fonction dans votre .bashrc pour l'utiliser.
la source