Что, если таковое имеется, эквивалентно bash's select ... in ... do..done in fish?

374
Joel Maxuel

В bash я реализовал функцию, которая превращается в любой каталог ниже текущего рабочего каталога, имея имя этого каталога в качестве параметра функции. Если существует несколько результатов с таким именем, появляется меню, позволяющее пользователю выбрать предполагаемый пункт назначения. Код bash:

function cdb() { select dir in $(find -type d -name "$1" -not -path '*/\.*' -prune); do cd "$" && break; done  } 

Пример этого в игре будет:

android@cybaryme:~/octos$ cdb av 1) ./frameworks/av 2) ./system/bt/bta/av #? 1 android@cybaryme:~/octos/frameworks/av$ 

Я использую рыбу большую часть времени, и хотел бы иметь эту функцию там же. Но я не могу найти команду select или ее эквивалент. Возможно, думал, что «полный» сделает эту работу, но я запутался из-за того, для чего она нужна.

Может кто-нибудь пролить свет на то, что доступно? Или, может быть, пример Perl-скрипта, который может уменьшить недостающие пробелы?

1

1 ответ на вопрос

1
Kurtis Rader

У рыбы нет selectкоманды. Также я не могу найти никаких признаков того, что кто-то просил его добавить. Вы можете найти пример того, как сделать эквивалент в паре функций, которые поставляются вместе с fish, а также в моей функции mcd, которая, вероятно, будет добавлена ​​в основной пакет. Обратите внимание, что моя реализация позволяет выбирать по номеру или букве, что является довольно полезным удобством. Не стесняйтесь, чтобы открыть запрос на улучшение .

Я открыл вопрос, чтобы обсудить реализацию чего-то вроде базовой команды `select`: https://github.com/fish-shell/fish-shell/issues/4036 Kurtis Rader 6 лет назад 0

Похожие вопросы