Изменить каталог без ввода 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.
Владимир
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.