Вы можете объединить существующие возможности Bash и историю поиска. Нажмите, Ctrl-Rчтобы начать инкрементный обратный поиск, затем начните вводить часть пути, которая, скорее всего, будет уникальной.
Вы можете продолжать печатать буквы до тех пор, пока не вернетесь к самой последней cd
команде, включающей этот каталог, или можете нажать Ctrl-Rснова, чтобы вернуться в историю к следующей новейшей команде, соответствующей тому, что вы уже набрали.
Я делаю это все время.
На самом деле, я делаю это дальше. Как только я начинаю открывать последовательности команд стоят держать в истории , но не стоит передавание скрипта, я начинаю сцепление их с &&
и ;
комбинаторами , так что я могу обратный поиск подстроки этого один длинные команды, хит Enterи запустить всю последовательность в один раз.
Например, вот как я собираю и запускаю одну из моих программ во время разработки:
$ ( cd .. ; make install ) && ./start_my_program
Я делаю это из каталога установки, который находится под исходным каталогом верхнего уровня. Оборачивая cd
, собирая и устанавливая деталь в подоболочку, я гарантирую, что независимо от того, что произойдет во время этого процесса, я вернусь обратно в свою обычную оболочку без изменений. Только в случае успеха (&&) я могу запустить собранную и установленную программу. Я могу найти это в своей истории только Ctrl-Rтогда sta, когда это все, что мне обычно нужно, чтобы однозначно найти эту последовательность команд.
Другим примером того, как я использую это, является последовательность, которая входит в создание RPM для этой же программы. Большая часть утомительной работы выполняется в сценариях оболочки, но есть еще несколько команд, которые я обычно должен набирать, чтобы выполнить всю работу по сборке и развертыванию встроенных RPM, которые мне теперь редко приходится вводить повторно, потому что Bash сохраняет это в истории для меня.
Объедините все это с export HISTSIZE=bignum
и, shopt histappend
и вы только что создали память команд для слонов.
Другое решение, которое я однажды кодировал, находится в моем ответе на другой вопрос здесь . Возможно, он должен быть адаптирован для ваших целей и обрабатывать только cd
команды, тогда как опция поиска в истории работает везде и для каждой команды.