생선 껍질에서 문자열 조작을 어떻게 할 수 있나요?

생선 껍질에서 문자열 조작을 어떻게 할 수 있나요?

Fish Shell에서 bash 스타일 문자열 조작을 어떻게 할 수 있나요?

특히 bash에서는

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

변수 에 지점 이름을 넣습니다 $branch.

생선 껍질에서도 같은 작업을 어떻게 수행할 수 있나요?

물고기에 대한 문서를 훑어봤지만 아무것도 찾지 못했습니다.

답변1

이제 물고기 껍질에 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

fish는 미니멀리즘에 관한 것입니다. 작업을 쉽게 수행하는 공통 유틸리티가 있다면 그것은 fish에 있지 않습니다. 그래서 당신이 말했듯이 sed를 사용하면 다음과 같습니다.

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

관련 정보