Changer de répertoire sans taper cd?

17

Est-il possible de faire bash changer de répertoire en ligne de commande simplement en tapant ce répertoire sans aucune commande comme cd?

Par exemple, est-il possible au lieu d'écrire ceci:

$ cd /tmp

Je veux juste écrire seulement ceci:

$ /tmp

En d'autres termes, si j'appelle le répertoire en tant qu'application, je souhaite définir ce répertoire comme un répertoire de travail.

Vladimir
la source
9
Doit-il être bash? zsh peut le faire ( autocd)
Michael Mrozek
1
Non-non-non, j'ai besoin d'une solution en bash =) C'est la principale exigence car dans certaines institutions scientifiques de la Russie froide-froide, il y a des reliques avec seulement bash comme langage de script;)
Vladimir
La quantité de frappe enregistrée en ne tapant pas «cd» sera probablement compensée par l'absence de saisie automatique par défaut intelligente pour les chemins. De plus, cette méthode de changement de répertoire, aussi souvent que l'on change de répertoire, est un peu effrayante dans la mesure où l'exécution accidentelle d'un programme (potentiellement malveillant) (que vous pensez être un répertoire) devient très probable.
michael
Cela fonctionne pour moi dans ZSH
ishidex2

Réponses:

36

En bash, il y a aussi une autocdoption. Vous pouvez l'activer en utilisant shopt -s autocd:

pbm@tauri ~ $ shopt -s autocd
pbm@tauri ~ $ django # Now just type this
cd ./django    <- it's done automatically
pbm@tauri ~/django $
pbm
la source
2
Ma nouvelle fonctionnalité préférée dans bash 4 pour une utilisation interactive. (Pour les scripts, c'est le cas **.) Malheureusement, ce n'est pas dans les anciennes versions.
Gilles 'SO- arrête d'être méchant'
0

J'imagine que oui. Ubuntu possède un mécanisme fourre-tout. Lorsque vous exécutez une commande qui n'est pas sur le système, elle indique parfois:

Aucune commande 'foo' trouvée ne voulait dire: ...

Je parie que vous pouvez détourner quoi que ce soit et ajouter une vérification pour voir si on lui a donné un répertoire. Cela vaut probablement la peine de poster une autre question demandant ce que cela fait.

EDIT: Trouvé: https://wiki.ubuntu.com/CommandNotFoundMagic

Shawn J. Goff
la source
Oui, c'est ce à quoi on pourrait s'attendre naïvement - cependant, bash est plus intelligent que nous et n'appelle même pas command_not_found_handle pour les répertoires :(
Thomas Themel
Après quelques recherches, j'ai trouvé un petit correctif ( mail-archive.com/[email protected]/msg06761.html ) qui pourrait le corriger. Malheureusement, ce correctif n'est pas officiel, il ne pouvait donc pas être utilisé avec une version stock de bash fournie avec ubuntu.
Vladimir