Изменить каталог без ввода CD?

17

Можно ли сделать каталог изменений bash в командной строке, просто набрав этот каталог без каких-либо команд, подобных cd?

Например, это возможно вместо того, чтобы написать это:

$ cd /tmp

Я просто хочу написать только это:

$ /tmp

Другими словами, если я называю каталог как приложение, я хочу установить этот каталог как рабочий.

Владимир
источник
9
Это должно быть Баш? zsh может это сделать ( autocd)
Михаил Мрозек
1
Нет-нет-нет, мне нужно решение в bash =) Это главное требование, поскольку в некоторых научных учреждениях холодной России есть реликвии, в которых в качестве языка сценариев используется только bash;)
Владимир
Объем ввода, сохраненный без ввода «cd», скорее всего, будет компенсирован отсутствием интеллектуального автодополнения по умолчанию для путей. Кроме того, этот метод смены каталогов, так же часто, как и один из них, немного пугает, так как случайный запуск (потенциально вредоносной) программы (которую вы считаете каталогом) становится весьма вероятным.
Майкл
У меня это работает в
ZSH

Ответы:

36

В bash есть и autocdопция. Вы можете включить его, используя 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
Моя любимая новая функция в bash 4 для интерактивного использования. (Для сценариев это **.) К сожалению, это не в более старых версиях.
Жиль "ТАК - перестань быть злым"
0

Я бы так себе представил. В Ubuntu есть какой-то универсальный механизм. Когда вы запускаете команду, которой нет в системе, она иногда говорит:

Команда 'foo' не найдена, вы имели в виду: ...

Могу поспорить, что вы можете похитить все что угодно и добавить чек, чтобы узнать, есть ли у него каталог. Вероятно, стоит написать еще один вопрос, спрашивающий, что это делает.

РЕДАКТИРОВАТЬ: нашел его: https://wiki.ubuntu.com/CommandNotFoundMagic

Шон Дж. Гофф
источник
Да, это то, что можно было бы наивно ожидать - однако, bash умнее нас и даже не вызывает command_not_found_handle для каталогов :(
Thomas Themel
После некоторых исследований я нашел небольшой патч ( mail-archive.com/bug-bash@gnu.org/msg06761.html ), который мог бы его исправить. К сожалению, этот патч неофициальный, поэтому его нельзя использовать со стандартной версией bash, поставляемой с Ubuntu.
Владимир