Como posso fazer manipulação de cordas em casca de peixe

Como posso fazer manipulação de cordas em casca de peixe

Como posso fazer manipulações de strings no estilo bash no Fish Shell?

Especificamente, no bash

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

colocará o nome da filial na $branchvariável.

Como posso fazer o mesmo com casca de peixe?

Dei uma olhada na documentação de peixes, mas não encontrei nada.

Responder1

A casca do peixe agora possui um stringcomando integrado.

Para usar stringem vez de sedno seu caso:

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

Ele pode operar com determinados argumentos ou com entrada padrão.

Há muito mais que stringpodemos fazer. Dedocumentação do comando 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...]

Responder2

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

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

informação relacionada