¿Cómo puedo realizar manipulaciones de cadenas estilo bash en Fish shell?
Específicamente, en bash
read branch < ".git/HEAD"
branch=${branch#ref: refs/heads/}
Pondrá el nombre de la rama en $branch
la variable.
¿Cómo puedo hacer lo mismo con la concha de pescado?
Revisé la documentación sobre peces pero no encontré nada.
Respuesta1
La concha de pescado ahora tiene un string
comando incorporado.
Para usar string
en lugar de sed
en su caso:
set branch (string replace 'ref: refs/heads/' '' <.git/HEAD)
Puede operar con argumentos dados o con entradas estándar.
Hay mucho más que string
se puede hacer. Desde eldocumentación del comando de cadena:
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...]
Respuesta2
El pescado tiene que ver con el minimalismo: si hay una utilidad común que hace el trabajo fácilmente, no es el pescado. Entonces, como dices, con sed:
set branch (sed 's#^ref: refs/heads/##' .git/HEAD)