3

Как я могу выполнять манипуляции в стиле bash в оболочке Fish?

В частности, в Баш

read branch < ".git/HEAD"
branch=${branch#ref: refs/heads/}

поместит имя ветви в переменную $branch .

Как я могу сделать то же самое в раковине рыбы?

Я просмотрел документацию рыбы, но ничего не нашел.

2 ответа2

3

Ракообразные теперь имеет встроенную команду string

Чтобы использовать string вместо sed в вашем случае:

set branch (string replace 'ref: refs/heads/' '' <.git/HEAD)

Он может работать с заданными аргументами или со стандартным вводом.

Есть намного больше, что может сделать string . Из документации командной строки:

Synopsis

string length [(-q | --quiet)] [STRING...]
string sub [(-s | --start) START] [(-l | --length) LENGTH] [(-q | --quiet)]
           [STRING...]
string split [(-m | --max) MAX] [(-r | --right)] [(-q | --quiet)] SEP
             [STRING...]
string join [(-q | --quiet)] SEP [STRING...]
string trim [(-l | --left)] [(-r | --right)] [(-c | --chars CHARS)]
            [(-q | --quiet)] [STRING...]
string escape [(-n | --no-quoted)] [STRING...]
string match [(-a | --all)] [(-i | --ignore-case)] [(-r | --regex)]
             [(-n | --index)] [(-q | --quiet)] [(-v | --invert)] PATTERN [STRING...]
string replace [(-a | --all)] [(-i | --ignore-case)] [(-r | --regex)]
               [(-q | --quiet)] PATTERN REPLACEMENT [STRING...]
2

рыба - все о минимализме: если есть общая утилита, которая делает работу легко, это не в рыбе. Итак, как вы говорите, с помощью sed:

set branch (sed 's#^ref: refs/heads/##' .git/HEAD)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .