Cambia directory senza digitare cd?


17

È possibile fare bash change directory nella riga di comando semplicemente digitando quella directory senza comandi come cd?

Ad esempio è possibile invece di scrivere questo:

$ cd /tmp

Voglio solo scrivere questo:

$ /tmp

In altre parole, se chiamo directory come un'applicazione, allora voglio impostare quella directory come funzionante.


9
Deve essere bash? zsh può farlo ( autocd)
Michael Mrozek

1
No-no-no, ho bisogno di soluzione in bash =) Questo è il requisito principale poiché in alcune istituzioni scientifiche nella fredda e fredda Russia ci sono reliquie con solo bash come linguaggio di scripting;)
Vladimir

La quantità di digitazione salvata non digitando "cd" sarà probabilmente compensata dalla mancanza di un completamento automatico predefinito intelligente per i percorsi. Anche questo metodo di modifica delle directory, ogni volta che si cambia directory, è un po 'spaventoso in quanto l'esecuzione accidentale di un programma (potenzialmente dannoso) (che si ritiene sia una directory) diventa molto probabile.
michael,

Funziona per me in ZSH
ishidex2,

Risposte:


36

In bash c'è anche autocdun'opzione. Puoi abilitarlo usando shopt -s autocd:

pbm@tauri ~ $ shopt -s autocd
pbm@tauri ~ $ django # Now just type this
cd ./django    <- it's done automatically
pbm@tauri ~/django $

2
La mia nuova funzionalità preferita in bash 4 per uso interattivo. (Per gli script, lo è **.) Sfortunatamente, non è nelle versioni precedenti.
Gilles 'SO- smetti di essere malvagio' il

0

Immagino di si. Esiste un meccanismo generale che Ubuntu ha. Quando si esegue un comando che non è sul sistema, a volte dice:

Nessun comando "foo" trovato significava: ...

Scommetto che puoi dirottare qualunque cosa sia e aggiungere un segno di spunta per vedere se viene fornita una directory. Probabilmente vale la pena di inviare un'altra domanda che chiede cosa fa.

EDIT: Trovato: https://wiki.ubuntu.com/CommandNotFoundMagic


Sì, è quello che ci si aspetterebbe ingenuamente - tuttavia, bash è più intelligente di noi e non chiama nemmeno command_not_found_handle per le directory :(
Thomas Themel

Dopo alcune ricerche ho trovato una piccola patch ( mail-archive.com/bug-bash@gnu.org/msg06761.html ) che potrebbe risolverlo. Sfortunatamente questa patch non è ufficiale, quindi non può essere utilizzata con una versione stock di bash fornita con Ubuntu.
Vladimir,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.