La navigation sur plusieurs couches de répertoires imbriqués est souvent un problème. Sur Firefox, c'est facile car ils ont des signets. Donc, ce que je voudrais faire pour mettre un fichier en signet, c'est taper:
$ go --add classes "repo/www/public/util/classes"
Ensuite, pour accéder à ce répertoire, je taperais:
$ go classes
Auparavant, j'ai utilisé des liens symboliques pour obtenir quelque chose de similaire, mais je ne veux pas encombrer mon répertoire personnel. Il existe de nombreuses autres fonctionnalités qui pourraient s'avérer utiles. Par exemple, je voudrais pouvoir commencer à taper go cl
puis appuyer sur tab pour la saisie semi-automatique. Parfois, plusieurs copies d'un référentiel sont extraites et il serait donc utile que le programme me permette de créer plusieurs contextes et de définir le signet par rapport au répertoire de base du contexte.
Donc, avant de commencer à bricoler mon propre ensemble de scripts, y a-t-il déjà quelque chose comme ça?
Réponses:
Je cherchais depuis trop longtemps un outil de bookmarking shell et je ne suis satisfait d'aucune des solutions que j'ai trouvées.
Cependant, j'ai finalement trouvé un excellent outil universel: le chercheur flou en ligne de commande .
Il vous permet principalement de «trouver floue» des fichiers (vérifiez l'animation gif riche par le lien ci-dessus), mais il permet également de lui fournir des données textuelles arbitraires et de filtrer ces données. Donc, l'idée des raccourcis est simple: tout ce dont nous avons besoin est de maintenir un fichier avec des chemins (qui sont des raccourcis), et de filtrer flou ce fichier. Voici à quoi cela ressemble: nous tapons la
cdg
commande (à partir de "cd global", si vous le souhaitez), obtenez une liste de nos signets, choisissez celui qui vous convient en quelques touches et appuyez sur Entrée. Le répertoire de travail est remplacé par l'élément sélectionné:C'est extrêmement rapide et pratique: en général, je tape juste 3-4 lettres de l'élément nécessaire, et toutes les autres sont déjà filtrées. De plus, bien sûr, nous pouvons parcourir la liste avec les touches fléchées ou avec
Ctrl+j
/Ctrl+k
.Un article détaillé sur cette solution de raccourcis / signets est ici: Raccourcis flous pour votre shell .
la source
Je pense que vous cherchez quelque chose comme le saut automatique . Vous devez tourner un peu autour pour développer un ensemble de "poids clés" qui correspondent à la quantité de temps passé dans un répertoire donné. Ensuite, en supposant que vous ayez passé beaucoup de temps dans ce répertoire «classes», vous pouvez y accéder directement en tapant
Vous pouvez voir vos "poids clés" avec
la source
f
: github.com/clvv/fComme le mentionne saeedn, les alias sont un bon mécanisme. Le shell bash dispose également d' un mécanisme intégré pour sauter à droite à un endroit:
CDPATH
. Réglez-le commePATH
, mais il est utilisé parcd
au lieu de rechercher des programmes.Depuis la page de manuel:
Moi-même, j'ai combiné cela avec un répertoire qui a des liens symboliques vers où je voudrais aller:
Cela présente l'inconvénient que le répertoire ne semble pas tout à fait correct, mais cela peut être corrigé en utilisant
cd -P
ou en définissantset -P
.la source
alias C='cd -P .'
plutôt queset -P
, car pour les liens symboliques système, cela ne me dérange pas d'être dans le répertoire des liens symboliques.help cd
et je ne comprends toujours pas ce que fait l'option -P.mkdir test; ln -s test linktotest; cd linktotest; pwd; cd -P .; pwd
Vous pouvez combiner l'historique existant de Bash et les fonctionnalités de recherche d'historique. Appuyez sur Ctrl-Rpour commencer la recherche inversée incrémentielle, puis commencez à taper la partie du chemin le plus susceptible d'être unique.
Vous pouvez continuer à taper des lettres jusqu'à ce que vous reveniez à la
cd
commande la plus récente impliquant ce répertoire, ou vous pouvez appuyer à Ctrl-Rnouveau pour revenir en arrière dans l'historique à la prochaine commande la plus récente correspondant à ce que vous avez tapé jusqu'à présent.Je fais ça tout le temps.
En fait, je vais encore plus loin. Une fois que je commence à découvrir des séquences de commandes utile de garder dans l' histoire , mais ne vaut pas engager dans un script shell, je commence à les enchaîner avec
&&
et;
combinateurs donc je peux inverse rechercher une sous - chaîne de que l' on commande long, frappé Enteret exécuter la séquence entière à une fois que.Par exemple, voici comment je crée et exécute l'un de mes programmes pendant le développement:
Je le fais à partir du répertoire d'installation, qui se trouve sous le répertoire source de niveau supérieur. En enveloppant la partie
cd
, construire et installer dans un sous-shell, je m'assure que peu importe ce qui se passe au cours de ce processus, je me retrouve dans mon shell normal sans rien changer. Ce n'est que si cela réussit (&&) que je démarre le programme construit et installé. Je peux trouver cela dans mon histoire avec juste un Ctrl-Rmoment sta, c'est tout ce dont j'ai habituellement besoin pour trouver uniquement cette séquence de commandes.Un autre exemple de la façon dont j'utilise ceci est la séquence qui va dans la construction de RPM pour ce même programme. La plupart du travail fastidieux se fait dans des scripts shell, mais il y a encore quelques commandes que je devrais normalement taper pour faire tout le travail de construction et de déploiement des RPM construits, que j'ai maintenant rarement à retaper, car Bash continue dans l'histoire pour moi.
Combinez tout cela avec
export HISTSIZE=bignum
etshopt histappend
et vous venez de créer une mémoire de commande éléphantine.Une autre solution que j'ai codée une fois est dans ma réponse à une autre question ici . Il peut être nécessaire de l'adapter à vos besoins et il ne gère que les
cd
commandes, tandis que l'option de recherche d'historique fonctionne partout et pour chaque commande.la source
J'utilise moi-même
alias
pour raccourcir les longs chemins que je visite souvent. Vous pouvez mettre votre ensemble d'alias
es dans votrebashrc
, afin que bash puisse s'en souvenir à chaque connexion. Et heureusement, bash ajoute des alias à la saisie semi-automatique.J'écrirais quelque chose comme ceci pour votre cas:
alias go-classes="cd ~/repo/www/public/util/classes"
la source
Vous cherchez peut-être des bashmarks (sur github).
Du README:
Bashmarks est un script shell qui vous permet d'enregistrer et d'accéder aux répertoires couramment utilisés. Prend désormais en charge la complétion des onglets.
la source
Ce n'est en aucun cas complet ni infaillible, juste un brouillon pour commencer. En ajoutant ce qui suit dans votre,
~/.bashrc
vous aurez trois commandes pour ajouter des signets de répertoire de suppression et de liste (qui sont basés sur des alias de shell, de sorte que vous obteniez également une auto-complétion).L'utilisation est assez simple.
bmadd
avec un argument ajoute un alias nommé d'après l'argument. Cet alias crée simplement un cd dans le répertoire dans lequel il a été défini. Sans argument, il utilise le nom de répertoire actuel comme nom d'alias. De la même manière,bmdel
supprime un alias s'il existe etbmlist
répertorie les signets actuels.par exemple
la source
J'ai rencontré le même besoin il y a un moment et j'ai décidé de rassembler quelques scripts pour m'aider à mettre en signet des chemins absolus / relatifs et à les mapper à des noms plus courts dont je me souviens facilement.
Le script est très facile à utiliser et il créera simplement une fonction avec le nom court que vous fournissez en tant qu'alias au répertoire dans lequel vous souhaitez accéder. Tout ce que vous devez faire est simplement de taper ce nom court et il vous dirigera vers le répertoire marqué.
Voici un lien vers la source du script de signet. Au fait, je l'ai nommé le Bookmarker.
Usage
Une fois installé, il est assez simple à utiliser.
Pour marquer un répertoire:
Pour naviguer vers un répertoire marqué:
Pour voir ce qui a été marqué:
Pour supprimer un répertoire marqué:
Pour d'autres exemples, instructions d'installation, etc., voir la documentation très détaillée .
la source
cdargs
est le meilleur outil pour le bookmarking d'annuaire.Pour des exemples d'utilisation, consultez les signets de la vidéo de commande cd sur YouTube.
Exemple d'utilisation
cdargs
est une interface graphique ncurses qui vous permet de naviguer visuellement dans votre shell. Une fois installé, vous le configurez dans un shell donné en vous procurant un script shell:Cela active plusieurs fonctions que vous pouvez ensuite appeler depuis votre shell.
Invoquez l'interface graphique:
Il en résulte ce type d'interface graphique:
Vous pouvez utiliser vos touches fléchées pour vous déplacer vers le haut et vers le bas pour parcourir la liste. La flèche gauche ( ←) monte d'un niveau dans l'arborescence des répertoires, une flèche droite ( →) descend dans un répertoire.
marquage des répertoires:
Vous pouvez soit utiliser cpour le répertoire en cours de navigation, soit aajouter le répertoire que vous mettez actuellement en surbrillance avec le curseur.
modes de fonctionnement:
cdargs
est un peu comme vi / vim à cet égard où il a cette notion de modes . Il y en a 2, la navigation (B) et la liste (L). Vous pouvez voir dans quel mode vous êtes grâce à l'affichage au bas de votre coque.Mode de référencement:
Mode de navigation:
Vous pouvez modifier votre mode en appuyant sur la touche de tabulation ( TAB).
Ceci n'est que la pointe de l'iceberg, consultez la page de manuel (
man cdargs
) ainsi que l'aide intégrée pour plus d'informations.la source
Le meilleur outil pour cela est: wcd . J'ai testé de nombreux autres outils, et celui-ci est utilisé exactement comme vous le demandez et il est meilleur à bien des égards que toutes les solutions précédentes.
la source
Les autres réponses sont excellentes et spécifiques. Une autre façon de voir les choses est d'utiliser un macro processeur de clavier qui peut faire presque tout ce que vous pouvez imaginer.
Découvrez AutoKey. Il peut remplacer des phrases comme une correction automatique de traitement de texte ou un historique bash et il peut également exécuter un script python sur une touche de raccourci que vous définissez qui peut faire presque n'importe quoi et également envoyer des touches à votre périphérique d'entrée de caractères - tout comme si vous les aviez saisies.
Le seul "défaut" qu'il a (par rapport à cette question) est qu'il a besoin d'un gui pour fonctionner dans - gnome ou kde. Les autres réponses n'ont pas cette exigence.
la source
Il existe une autre alternative appelée z .
Il apprend à chaque changement de répertoire:
Ensuite, vous pouvez passer à ce répertoire plus tard avec une correspondance floue:
la source
Apparix est un autre outil qui fait cela. L'une de ses fonctionnalités utiles est que vous pouvez accéder directement aux sous-répertoires de la marque et compléter les tabulations de ces sous-répertoires.
la source
Une autre solution qui, je crois, est
autojump
etz
estfasd
.Il garde une trace des répertoires que vous visitez et
z dir-name
changera pour le répertoire avec le nomdir-name
que vous utilisez le plus fréquemment. Il dispose également de certaines fonctionnalités pour les fichiers fréquemment utilisés.Vous pouvez le cloner à partir de: https://github.com/clvv/fasd
L'installation est simple, clonez, effectuez l'installation, puis modifiez votre
.bashrc
(ou.zshrc
etc.).la source
Vous devez ajouter un alias à votre
.bashrc
ou.bash_profile
.Maintenant, disons que vous voulez un raccourci vers
~/Desktop/Coding/Projects
pour appeler ce que vous saisirezgoto_Projs
. Vous devez ajouter la ligne suivante au fichier ouvert dans l'éditeur de texte:alias goto_Projs='cd ~/Desktop/Coding/Projects'
Maintenant, faites tout ce que votre éditeur de texte veut que vous fassiez pour
/User/<yourusername>/
ou~/
bien sûr) et quitter, et lorsque l'invite du shell est retournée, allezsource ~/.bash_profile
Votre alias devrait maintenant être disponible pour être invoqué comme décrit ci-dessus.
la source
J'utilise la méthode pour ajouter un commentaire à la fin de la commande puis invoquer
ctrl R
pour inverser la recherche du commentaire. Cela présente les avantages suivants:ctrl R
ctrl R
ettab
à la volée pour apporter des modifications mineures à la commande elle-même, faisant ainsi du commentaire une sorte de raccourci générique vers une famille de commandes similairesla source