Como posso fazer manipulação de string no shell de peixe

3

Como posso fazer manipulações de string estilo bash no shell Fish?

Especificamente, no bash

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

colocará o nome da filial na variável $branch .

Como posso fazer o mesmo na casca de peixe?

Eu dei uma olhada na documentação dos peixes, mas não encontrei nada.

    
por blackwing 05.03.2014 / 05:26

2 respostas

3

O shell de peixe agora tem um comando string builtin.

Para usar string em vez de sed no seu caso:

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

Ele pode operar em determinados argumentos ou na entrada padrão.

Há muito mais que string pode fazer. Na documentação do comando de strings :

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...]
    
por 26.07.2016 / 22:17
2

o peixe tem tudo a ver com o minimalismo: se há um utilitário comum que faz o trabalho com facilidade, não é no peixe. Então, como você diz, com sed:

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