J'avais cela quelque part il y a 20 ans ou j'en rêvais.
Fondamentalement:
Si si blobblob
je reçois
blobblob: command not found
C'est suffisant.
Je voudrais que, lorsque mon shell récupère ces erreurs - commande non trouvée -, il vérifie s’il existe un répertoire portant ce nom ("blobblob") et, le cas échéant, qu’il se trouve cd
dans ce répertoire.
Je suis sûr qu'il y a des raisons de ne pas faire ceci ou de le faire avec prudence.
Je pense juste que ce serait plutôt chouette et je voudrais essayer en trouvant quelque part (comme ici!).
Je ne sais pas comment faire le même genre de programmation shell.
la source
shopt -s autocd
à la ligne de commande à cela a fonctionné. Maintenant, je peux juste commencer à taper les noms de répertoires et utiliser la saisie semi-automatique, puis appuyer sur Entrée et sur le shellcd
dans le répertoire. Trop cool !cd
n'est pas si difficile à taper, et la plupart des mécanismes de complétion par des onglets sont plus intelligents lorsque vous leur donnez plus de contexte.autocd
shopt a été ajouté à la version 4 de bash. Il n’est donc pas disponible sur macOS (qui a toujours la version 3.xx de bash) à moins qu’un autre bash, plus récent, soit installé (par exemple, via homebrew).L' utilitaire autojump fournit un mécanisme similaire avec une liste de répertoires les plus utilisés. Cela nécessite toutefois l’ennui supplémentaire du typage,
j
Spacemais cela est compensé par des suppositions exactes le plus souvent.C'est le plus proche de DWIM que j'ai utilisé à ce jour.
la source
Une fois, j’ai réalisé un script utile dans un but similaire, avec une fonction fcd pour find-n-cd.
Vous tapez
fcd foo
et 3 choses peuvent arriver:"no such directory " $1
Il est similaire en ce sens que vous n'avez pas besoin de taper le chemin complet, mais vous devez appeler la fonction explicitement.
Vous devez utiliser
source
la fonction (source fcd.sh
|. fcd.sh
) et ne pouvez pas l'appeler en tant que script, carcd
sinon, cela ne se produirait que dans le contexte du script. Une fois l'opération terminée, vous vous retrouveriez immédiatement dans votre répertoire de départ.Comme cela fonctionne avec
locate
, il est assez rapide de trouver des répertoires (mais pas toujours à jour).Il ne gère pas les espaces dans les noms de répertoire avec élégance. Si vous avez une solution élégante au problème, je serais heureux.
la source
cd
automatiquement, sans taper de commande. Cette réponse convient mieux à la navigation rapide dans le terminal ./etc/bash.bashrc
ubuntu, il y en a unfunction command_not_found_handle
qui semble pouvoir être modifié.Cela fonctionne aussi,
..donné que vous avez configuré un script personnalisé cdf.sh (ci-dessous) provenant du shell. Pour un répertoire en tant que paramètre, ce script n'entre que dans le répertoire parent du répertoire trouvé. Ajouter la ligne suivante dans votre .bashrc ou .zshrc, peu importe ..
Et ajoutez ce code dans le fichier ~ / bin / cdf.sh que vous devez créer à partir de zéro.
la source
Mettez ceci dans votre
~/.bashrc
la source